Friday, March 10, 2017

Learning Software Testing Checklist - 2017 edition


Contents:

1) Introduction
2) Programming skills
3) TestOps
4) Security - Pentesting
5) Coaching & Persuasion
6) Conclusions
7) Further reading

1) Introduction

Time flies quickly and it's been more than a year since one of my most popular posts - do and don't for testers. I decided to skip dont's this year, because I you follow my advices closely you won't have time for them anyway. If it's possible try to learn mostly at work, solving real issues. Fill your knowledge gap by reading ferociously after work. Do not hesitate to seek mentors in each of those fields.

Remember that it's the combination of all those skills that make you great tester. Choose one of them as a long T-shaped skills tail and become decent at the rest.

Part of the credit for this article belongs to Jasper Ottosen. His quality post - Testing roles are shifting helped me confirm that I'm not the only one who thinks that you should focus on:


2) Programming skills

Despite of how often you hear that 'soft skills are the most important' mantra one thing hasn't changed that much recently:

Almost every job related to Software Engineering requires strong programming skills. Software Testing is no exception. You should be proficient at automating your checks/tests.

Most likely you are surrounded by great developers and you work with them on daily basis. This is perfect opportunity for learning begging to take advantage of. Pair with them as often as possible and use their broad knowledge.

Sidenote: Do not steal programmers time asking silly questions. You may quickly discourage them. Google knows stuff.


3) TestOps

TestOps is a loose term which keeps gaining popularity recently (I like to believe that I helped resurrect it). To be excellent at TestOps (apart from reading my posts) work on:

a) CI/CD proficiency - a must for modern tester. Wherever there is possibility to work in this area volunteer and get it done right. Automated regression tests should be run after each commit if possible.

b) networking - often overlooked skill required to quickly configure web applications and their environment

c) virtualisation/conternarisation - make sure you understand how virtual machines and containers work

d) cloud computing - AWS, Google Clound, OpenStack. It's used everywhere.

e) Infrastructure as a Code - Servers you manage should come back as quickly as Phoenix (I recommend Ansible). Check linked Martin Fowler article - it's excellent.


4) Security - Pentesting

My avid readers know that I want to get into security this year. It's becoming more and more interesting as I delve deeper into it. Looks like in my 2016 post emphasis on this topic was too weak.

I recently finished security training run by leading polish company - niebezpiecznik.pl.  Lecturer was ex tester and I fully agree with one of his statement:

Testers are excellent at finding security vulnerabilities, because the break-it mindset is already there.

Think about it. Developers often are blind to their errors so who, if not tester, is better qualified to find security flaws in your application?

With enough TestOps knowledge testers should also lead Continuous Security, perhaps starting with OWASP Dependency Check.


5) Coaching & Persuasion

Another hugely important topic that I overlooked entirely in 2016. Testers understanding how testing pyramid works and with enough experience are in very peculiar situation. They want to improve application quality, but they also know it requires whole team effort. Developers play crucial role here - without sufficient unit tests coverage application just won't be successful. It may of course luckily work on first iteration, but with each new feature it's going to be worse.

So who should explain consequences of poor unit tests coverage? You guessed it right, software testers. What if there's pressure to release low quality quality software? Who should explain consequences of possible production bugs? You guessed it right again, software testers. There is no escape from this and the higher you go with your career, the more important coaching & persuasion become.

Those skills are also important in mentoring.


6) Conclusions

Continuous Improvement is the key. 


7) Further reading

Blog:
Do's and dont's for testers - 2016 edition
Testing roles are shifting - Jesper Ottosen

Bonus:

Polish people - see you at SkładQA #2 soon :)