Tech Continuous Delivery Katas for Test Engineers

Below, you find a list of mini projects/KATAs for improving technical skills. I have created the list for students of a post-graduate course on software testing to help them to learn on their own at home.

It is Work-In-Progress :).

Please design, describe, and implement a test workflow. Please consider:

  • Which steps is it worth to automatize, which should be (semi-) manual and described in README.rst?
  • The dev-qa-product-manager workflow for your team
  • Obstacles to implement such a workflow within your current team
  • Who should make the decision to push code to *production*?

You should implement it the KATAs in short iterations. Every iteration should tackle minimum functionality.

1. CD pipeline for an python application hosted on Heroku

Build a Continuous Deployment pipeline that takes a python web app and deploy it to Heroku. You can write a simple app with flask (similar to hello world app).

Goals:

  • TravisCI runs unit tests
  • Secrets for Heroku lives encrypted within the repository
  • Show how to implement support for production / staging / dev
  • GUI tests with selenium/robot
  • Show how we could provide smoke tests
  • Add monitoring: StatusCake(or similar) and integrate GA to your simple app

Technology: Github, TravisCI or Jenkins 2.x. Alternatively: Gitlab.

2. CD pipeline for an python application hosted on hub.docker.com

Your goal is to bring your application as a docker to hub.docker.com.

Extra 1: Your GUI tests must run against your application running in Docker.

Extra 2: Deploy your app to heroku.

Extra 3: how would you deploy your application to a system on premise?

3. CD pipeline for lectures materials

Input:

  • Lecture materials in reveals.js or Latex
  • Exercises materials in odt or Latex
  • Code samples in .py and .java

Output (two environments: teachers only and public) with sftp:

  • lecture in zip and pdf for teachers/public
  • exercises pdfs only for public
  • code samples in zip or github projects
  • all files should follow the naming convention <lecture_number>_

Tests (free ideas):

  • spell checking
  • style checking
  • check whether the materials have license information
  • check whether, e.g., a university logo is in the materials
  • notice: with reveals.js, you could use selenium to check its quality
  • ….

Report:

  • (soft errors) on the quality of the code samples deployed with the materials
  • send email or slack message, when new materials are imported

Bonus task: explore other documents types, e.g., gitbook.

4. CD pipeline for Android applications to Hokeyapp

Build a pipeline, collect code quality metrics (code coverage).
Technology: Travis/Jenkins

Alternative: a java application deployed to Heroku.

5. CD pipeline for IOS application to Hokeyapp

Build a pipeline, collect code quality metrics (code coverage).
Technology: Travis/Jenkins

6. Travis pipeline for Unity Games, deployed to Heroku as Webgl

The Kata is similar as 3 and 4. In this case, you are going to explore the tooling for Unity (C#)

7. CD pipeline for multi-service integrator

Build a service that integrates with yahoo service. Please provide integration tests (mocked). Provide smoke test after the service is deployed.

8. Multiple components

As in 1, have two depending on each other components. One component talks with another.

Please discuss how to make the components tests against each other. How to ensure that two teams do not break each other components. How would you support the teams in their tests?

Look into: Semantic Versioning and a great article on API versioning by Troy Hunt.

9. DevOps metrics

Imagine, you need to collect metrics (e.g., google spreadsheet) to assess the QA and DevOps process in your company:

  • Code quality,
  • The number of deployments,
  • The number of failed deployments,
  • The lead time, process time. Completed/Accurate.

How we could combine information from google analytics (assuming we use it to track our app/website users). How would it affect the QA process?

10. Extend the tests with Performance Tests / Load testing

Tools: wrk, .. [WIP].

11. Other tasks

Notice: you can put notes/summaries as a gist (https://gist.github.com) in your github account. It is easy to share gists.

  • Critical thinking course and write notes on how it might help in testing: https://itunes.apple.com/mt/itunes-u/critical-creative-thinking/id429560632?mt=10
  • Read class notes and write a short summary: http://www.satisfice.com/rst.pdf and http://www.satisfice.com/rst-appendices.pdf
  • Read articles and write a short summary: http://www.satisfice.com/articles.shtml
  • Study: http://context-driven-testing.com/
  • Get a copy of Lessons Learned in Software Testing: A Context-Driven Approach
 

wb