From Zero to test automation Hero

Everyone can automate, but not everyone should. In addition, the percentage of people who understand what they do is not large,  and even fewer people like to do it. Here are the ten commandments of effective teaching test automation, which were written on the basis of my personal experience of both student and trainee. These are not revealed truths, but empirically derived laws written as an attempt to support people preparing and conducting training in the field of test automation.

1. Don’t teach programming, students will get this skill with time

Starting to learn test automation from learning programming is not a good idea. Learning programming skills will take too much time, will be boring and inefficient. A more effective method is to introduce subsequent programming elements while writing automated tests: For example, in the object-oriented languages, you can slowly show how to create classes, declare variables and methods, create and initialize objects, how to use “for” and “while” loops, how to use access modifiers and call elements from the parent classes, how to create overloaded and overridden methods, how to use switches and collections. If the students feel confident with the above topics, work together on the quality of the code. Use a good plugin such as SonarLint and look for “smelly code”.

2. Do not teach test automation to a group of students

The workshops are only conducted to present the topic and tools. Most students do not have enough motivation to do something after hours for a long time. Sooner or later they will get bored with the topic. Only by sitting with the student individually, presenting the topic step by step, you will effectively teach them how to automate.

3. If the workshops are detached from the project, the motivation of most students will quickly disappear

Nothing motivates like working on a specific project. If you decided to start teaching how to automate tests, prepare the training so that it applies to the existing application.

4. Be an expert but not omniscient, allow students to propose improvements

Familiarize students with portals such as Stackoverflow, jsfiddle etc. and let them suggest improvements to existing code. For example, if the steps in the scripts written in gherkin are repeated in several tests, do not tell them about the “Background” option let them discover that it can be written in a better way. The same with switches with a lot of cases, let students notice that their methods are no longer readable and they should propose something new, e.g. using a collection

5. Start by teaching something simple

If the framework for test automation consists of a BDD layer, start teaching by writing scenarios in gherkin and then implement steps in the code. If you plan to automate both UI, API and DB tests, start with UI tests, then add into the tests the database steps for loading and deleting test data, in this way the students will learn to switch between different languages ​​and technologies. Finally, add the API tests so the students will understand the system architecture and data flow.

6. Be patient

If you can’t explain something, you either don’t understand it well or you don’t have enough patience. This is the moment to stop doing it. At least for a while.

7. Do not sit too long with one person

If you sit with one person too long, the students will discover that they can always count on you and get hints or even solutions to problems. You should try to let students solve problems for themselves.

8. Teach students soft skills and communication with developers

The ability to write automated tests is not enough to be part of dev team. The basic skill of a technical tester is the ability to talk to developers in their language. Start from the very beginning by introducing the appropriate nomenclature when explaining code management tools (example words: commit, pull, push, merge etc.), tools for continuous integration (example words: CI / CD, build, deploy etc.), integrated development environment (example words: package, runner, library, plugin etc.), system architecture (example words: backend, frontend, API, Rest, Soap etc.)

9. Show the learning plan and regularly report progress

Let the students know where they are and where they are going. Present a plan for writing automated tests: BDD, UI tests, DB tests, API tests. Have a group status meeting once a week showing the progress of learning and project work. It can be done in the form of a Gantt chart and a small demo of automated tests written by the students.

10. Solve technical problems together

In the beginning, it is necessary to solve technical problems together. Teach the students to read messages and logs from the console, teach them how to use portals such as Stackoverflow. Supervise what they do and if they show some technical skills let them become experts for others.

Przemek Jagodziński