How to improve as a Tester in this age of AI and DevOps

If you are in the field of Software Testing, you are probably aware of the fact that the arena is changing, and is changing quickly. Only having a handful set of testing skills alone now won’t cut in this ever-changing field. Roles and responsibilities of the testers as well as values provided by them in this age of Agile, DevOps and AI/ML have become quite significant and cannot be overlooked at any cost. Reality is that there is plenty of room for testers to improve in this Modern Testing era. From my observation, I have found that most of the testers are yet to adopt the Modern Testing mindset. This article is an attempt to discuss the different tools, skills and craft that should be present in the “Toolkit” of a Test Engineer to help him/her adopt the modern approaches to help improve Software Quality and succeed as a Tester.

Testing Skills – Must Have
Being a tester, the primary and the most important skill that one should look to improve is his/her skill to “test” the software. Also, testing a software does not only mean to find bugs/defects in it but also to extract insights from the software and deliver those insights to the business, stakeholders and customers/end users. To quote Gerald M. Weinberg from his book Perfect Software: And Other Illusions about Testing – “Testing gathers information about a product, it does not fix things it finds that are wrong”. In this agile world, testers should possess sound ability to understand and analyze the customer/business requirements based on his experience, problem-solving ability, learning and discovery. They also need to collaborate with others, analyze and come up with relevant testing techniques, charters and heuristics to test the software. 

Technical Skills
With more and more adoption of Agile and DevOps, the requirement of testers to become “Technical Testers” is on the rise. There is a common perception that technical testers are only those who code and use automation to test software. In my opinion, that is only a part of the whole picture. You can improve your technical skill by simply starting to understand the inner workings of the software that you are testing and by asking questions – What? Why? How? A good starting point is to collaborate with the developers and try to understand about the different features of the software e.g.
  – Why the upstream and downstream systems are connected to the Software?
 – How data is flowing between the different systems or how the UI is displaying the data? Furthermore, in order to keep on improving as a Technical Tester, you have to learn some development skills and this requirement is a ‘must’ in this Modern Testing age. Pick up a Programming Language and start to learn coding. Write automated tests for your regression test cases, run those tests, find issues, debug and refactor your code frequently. Learn how to use version control systems (e.g. Git). Try to understand how the build management tools (e.g Gradle, Maven) and CI Servers (e.g. Jenkins) work. Learn coding design principles, patterns and clean coding techniques. Use various libraries and tools (e.g. Selenium, Appium, pandas, RestAssured etc.) to create Test Automation frameworks and you will be on your way to become a Tester with sound technical knowledge.

Evolve as an SDET
In this modern software age where there is a high demand to implement CI/ CD, with sound development skills at your disposal, you can strive to become an SDET and provide your expertise to enhance the quality of the software applications. SDETs (or Software Development Engineers in Test) are the ones who are adept in the arena of both Software Development and QA Engineering. They act as an interface between developers and testers. They participate in both development and QA processes and can create high quality, robust, maintainable test automation frameworks. Sometimes they are also involved in the review of the product design and data design of the software product. They work closely with product manager, product development team, end users and thus have clear understanding of the need of a software product. Clearly, it can be seen that to step into this role, only basic programming skills will not suffice. You have to know programming as well as scripting languages, database concepts (e.g. MySQL, MongoDB, SQLite etc.), data structures and algorithms, design patterns and design principles (like SOLID principle), development frameworks (like Spring, Hibernate, Django, Flask etc.), clean coding techniques, network management and cloud concepts (e.g. AWS, Microsoft Azure, Google Cloud etc.).

Continuous Learning
To stay updated with the latest trends in software technology, you have to Learn, Un-Learn and Re-Learn. This is also very much true if you want to succeed as a tester in the Modern Testing era. With the increasing use of latest technologies to develop applications, it is becoming more and more complex to test them. Continuous Learning is the only way you can gain knowledge and expand your existing testing skillset to test complex applications. There are many ways to learn but you must have the hunger to learn more. In my experience, what I have found out that you can learn a lot by simply asking for help to others if something you are not able to understand or by observing how other experienced testers in your team are testing or by simply researching and trying new ways to do testing – failing and learning from those failures. With internet connectivity at your doorstep, you can learn almost anything from e-books/ audiobooks, articles, blogs, videos, webinars, podcasts, research papers and MOOCs.

Coaching, Mentoring, Speaking, Attending Conferences
In various studies it has been demonstrated that you can learn more and gain a better understanding of your current knowledge if you teach or coach someone. As a tester, you need to contribute to the Testing Community by sharing your knowledge. Start teaching, coaching, mentoring and pairing with others testers and your juniors. You can also start writing articles/blogs and create videos on whatever you learn in this field. If you have just started your career as a tester, find a mentor or a coach and connect with thought leaders in the field by attending conferences or by following them in social media. Conferences are the best places where knowledge gets shared. If you are an experienced tester and you believe that you have something in your testing closet that will benefit the testing community, write and submit your talk proposal to the Conference organisers.

Communication Skills and Critical Thinking
Communicating effectively is an important skill in any profession and should never be overlooked if you are a tester. Good verbal, non-verbal and written communication skill will be a powerful tool in your toolkit as a tester which will help you to deliver information accurately and quickly. Consider a situation where you have found a bug in one of the software functionalities but the requirement document does not explicitly cover that functionality. You have to be good in your communication skill to convey your message clearly to the business stakeholders, analysts, developers or solution designers on how fixing this bug will be an important activity from the perspective of a quality software delivery. Monitoring progress of the software and communicating rational constructive feedback is a crucial skill for testers to master. This leads us to one more important skill that a tester should possess – Critical Thinking. While testing a software, a tester is required to analyse reasoning behind existing beliefs/claims and look out for out-of-the-box alternatives. I prefer to call them “Thinking or Thoughtful Testers”. They do not blindly follow approaches, beliefs, methodologies, patterns, frameworks, design, tools etc. only because they have been asked to. Rather they develop and utilise their situational awareness skill to explore, think and propose rational customised solutions and flexible approaches which might turn out to be better alternatives.

Prioritisation and Time Management
With a plethora of information floating around, it is quite common for testers to get overwhelmed. Also, multitasking has become a common practice in the Testing domain. According to me, it is alright to get overloaded with information and multitask. But what will set you apart from other testers is how you are able to manage those information feeding your brain. Are you setting your priorities correctly on what information should you consume to achieve your short-term and long-term goals? Are you able to prioritise your testing related activities like test execution, defect triaging or end-user requirement analysis? Understanding what needs to be done now and what can be deferred (after assessing the potential risks involved) can make a huge difference in your journey as a tester.

Conclusion
With the widespread adoption of Agile, DevOps, CI/ CD and different development approaches like BDD/TDD, the demand for Software Testing will continue to rise and this is only the start. Ensuring software quality is slowly becoming a highly engaging and critical cross-functional activity and thus the companies have started to establish Quality Centre of Excellence or Testing Centre of Excellence. Though there is a huge demand of using automation in testing, the human elements attached to testing like the ones we discussed above will never go away. Hence, as Software Testers it is our responsibility to fill our testing toolkit with all the essential components and provide value to the Testing Community in this Modern Testing Age.