I am a tester and yes, I code. My everyday job often comprises of,
- Getting clarification on stories or requirements from developers or the Business Analysts.
- Feature testing of the delivered stories.
- Discussing with fellow testers what should be tested and the best practices to test.
- Creating test data and manual test cases
- Performing end to end testing and then reporting bugs to Jira.
Currently I am setting up automated testing on an android app using Appium. And writing code is an important part of my job.
I agree testers do not necessarily need to write code but it disturbs me when testers do not learn to code. In my opinion testers need to learn to code. Period.
Everyday we deal with softwares and applications. But what is a software or an application, if not a collection of programs? As testers we need to be experts in finding flaws in the programs. How can one’s fault finding be effective if he/she doesn’t have understanding of these programs?
In the next few points I would be justifying why I feel testers should learn to code and then we can later come to conclusion if learning to write code is actually beneficial for testers or not.
- I remember as a kid I was taught flowcharts and algorithms. At that time I could never understand or appreciate the significance of these programming tools. But as a tester I realise th these programming tools really help in logical thinking and analytically resolving the problems.
- It is a lot easier for me to appreciate and understand the complexities in development. I find it easier to spot bugs and risks, point out problems in the code, speak the language of developers and contribute meaningfully to the technical discussions.
- Taking the second point further, as a tester having knowledge about the structure of the code you would be able to slice beneath the surface of the application code which means you can better understand what’s going wrong, and why. This would make our bug reports more informed and also you can provide additional information to the developers when raising defects which means shorter feedback loops.
- Setting up automated tests for mobile and web apps becomes a lot easier if you know how to code. Though I know setting up automated tests for an app takes some initial investment in form of resources and time but once the tests are set up then the process of regression testing becomes easier, hassle free and efficient.
- Also a little knowledge of coding or scripting can help testers automate the process of test data creation in different environments which again would spare them time to do testing more efficiently.
- With the pressing demand to meet deadlines and deliver iterative working models of the software, testers need to learn Agile methodology. Throughout the agile process, the tester needs to work with one or more programmers to write different kind of tests. So for creating an automatable test, it is imperative for testers to know the code.
- In the past I used to create test cases, test logs and reports using Microsoft Excel. One of the important feature of excel is macros. Macros are the programs created in Visual Basics Applications(VBA). Good knowledge of macros helps in making the test reports more informative, attractive and can be prepared effortlessly.
When I say testers need to learn to code that does not mean testers should learn to code like developers. It was Sir Francis Bacon who said “Knowledge is power.” Having technical programming skills would help testers in a lot of areas and which would make the bug finding and reporting more efficient. Testers have a lot to offer to their teams. When it comes to siloed teams I don’t think they work very well and agile has reminded us that collaboration and rapid feedback drive the progress in software teams. But then who provides feedback ? We the testers. So therefore learning how to code and being able to see the potential areas of risk in the software would make life of developers easy and hence would make the software development process more efficient.
What I am suggesting is - One should not consider coding and testing skills as mutually exclusive. Ability to code is an important skill for a tester, and one should make an effort to learn it.
Happy coding !
The moldedbits Team