Continuous integration and automated testing · Continuous integration and automated testing Riivo...

18
Continuous integration and automated testing Riivo Kikas University of Tartu [email protected]

Transcript of Continuous integration and automated testing · Continuous integration and automated testing Riivo...

Page 1: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Continuous integration and automated testing

Riivo Kikas

University of Tartu

[email protected]

Page 2: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Today

• Overview of Continuous Integration

• Automated testing

• Demo of CI in action – Web Apps and CircleCI• Spring and Java

• PHP

Page 3: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Modern software development

Aim for frequent releases of quality software, reduce repetitive tasks!

Page 4: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration
Page 5: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Continuous integration (CI)

• Why continuous integration?• Reduce manual, repetitive work

• Get notified early about issues• Forgot to check in a file?

• Platform differences?

• Broke previously working functionality?

• Avoid before-the-deadline chaos

• Constantly available information about build, constantly up-to-date staging environment

Page 6: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Branching model in VCS

• Everything in master, everybody commits to master• Run CI on master

• Feature branches, pull requests to integrate• In addition, run CI on every pull request

Page 7: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Automated testing

• Browser based testing• Launch application, render in browser

• Selenium

• PhantomJS

• Integration test, middleware test• Test html / JS output from the app

• Integration testing using mocking

Page 8: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Selenium

Your test code Java, Python, PHP,…

Selenium WebDriverServer

Page 9: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

How much testing is needed?

• Cover essential use cases with automated tests after they are implemented

• Make sure you test expected and unexpected behavior also

Page 10: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

CI Providers

• CircleCI• Supports private projects

• Free 1500 minutes of builds per month

• Full isolated container, can do whatever you want

• Travis• Free for open source, most popular

• Jenkins• Host yourself, configure yourself (OpenShift)

• Something else• Shippable, drone.io, appveyor

Page 11: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Deployment

• Heroku

• OpenShift

• DigitalOcean (get your Github developer pack)

• AWS

Page 12: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Demo: Example 1

• https://github.com/riivo/spring-petclinic/

• PetClinic

• Spring web application in Java

• Scenario• Build in CircleCI

• Run tests, and selenium tests• Selenium managed fully through maven

• If OK, deploy to Heroku

Page 13: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Demo: Example 2

• https://github.com/riivo/sample-php-mysql-heroku

• Simple PHP “webpage”

• Setting up database in CircleCI, using database in Heroku

• Run selenium server manually

Page 14: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Aim for continuous delivery

Page 15: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

What’s next?

• Start setting up CI!• It will take time to set up CI, automated deployment, but

less time than the manual labor you would spend on it by the end of course!

• Assign setting up CI to a specific person

Page 16: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

• Do not focus on points only, think about benefits

• Make sure you have at least staging environment

• Happy to help you: [email protected]

Page 17: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration
Page 18: Continuous integration and automated testing · Continuous integration and automated testing Riivo Kikas University of Tartu riivokik@ut.ee. Today •Overview of Continuous Integration

Image Credits

• https://insights.sei.cmu.edu/assets/content/image%20for%20continuous%20integration%20and%20devops_01262015.jpg

• http://www.accesa.eu/wp-content/uploads/2015/11/Continuous-Delivery-schema.png