With current development models – Agile and DevOps – the discipline of testing expands by taking charge of all aspects of product quality such as functionality, usability, performance, security, etc., and combining different strategies and technologies to test. So, software testers these days must own a rich combination of domain knowledge, technical – (see below), soft skills and testing expertise That allows them to match modern demands of fast delivery. The main soft skills required for such an environment are flexibility, time management, agility, social skills, problem solving skills, customer oriented, resilience to stress, taking initiative, responsibility & ownership, learning and personal effectiveness.
A software tester needs to be a critical thinker and have analytical skills to examine and ask questions about an application, project documentation, requirements and/or bug reports. From which he or she needs to produce the necessary test scenario’s, prioritize them and estimate execution time. Also, to enable them to include only the most useful and meaningful information in daily status reports.
Most (test) projects involve a close interaction with project team members, clients and stakeholders as well as working closely together with the development team (from reproducing the reported issue and emphasizing the fix for critical bugs to understanding how the bug has been fixed). That’s why software testers need to have good communication and teamworking skills to enable them to thrive in such an environment and be as useful as they can be for the team and the project.
As a software tester you get a head start if you understand how the application, system or technology works. This will give you more background information when writing test cases and might result in other, more creative, test cases which will help you in finding more bugs. Having technical skills will allow you to:
Every application contains a lot of data in the background. There are many ways to store data, but in most cases databases like Oracle, MySQL, … are used. It is a great advantage when you, as a tester, have the ability to understand the database structure and write your own SQL statements. Finding specific test data using the user interface of an application is often a very time-consuming task. So being able to write an SQL statement to search for rare test data will be very useful. You might take it to the next level and write statements to create your own sets of test data for every test run, remove test data after every test run or even reset a database to the initial state before starting a set of automated tests so you can perfectly predict the expected outcome, …
Besides database knowledge, an understanding of XML or JSON also comes out handy. XML and JSON are ways to structure data into one or more files and are therefore very often used by applications, more specific by webservice applications using SOAP or REST services. Even when your web application under test has a UI, in the background one or more webservices might be used. Being able to work with these webservices and interpret the data they use, can benefit you a lot as a tester. Assume you have a web application using webservices in the background, the UI for this application is not yet finished which means you are not yet capable of executing your tests. But, if you have the knowledge of executing webservice tests and interpret the data in the XML or JSON files will allow you to start testing the webservices behind the web application, even if the web application itself is not yet fully finished. This makes that you will be able to find bugs earlier in the process, which makes solving them cheaper and the time-to-market shorter.
Nowadays agile software testers often need to execute their regression test set every few weeks, which enforces the need for test automation. There are a lot of automation tools which have an easy to use UI, for which they claim you don’t need to have any technical background. This is no lie, you don’t need any technical background to start using them, but you will not be able to automate everything you want. When starting to automate your regression tests you will most likely encounter technical challenges and quickly reach the limits of the automation tools’ UI. Next to this user-friendly and non-technical UI, most of the automation tools offer the possibility to write some code to solve these technical challenges and that’s where your coding skills make the difference.
Test Management is an important aspect of software testing. Without proper test management, your software testing process will most likely fail. There are plenty of test management tools available, but they all have the same purpose: supporting the software testing process. So, if you are familiar with one of them, you will easily find your way around any other test management tool.
Nevertheless, just because they are all similar but not quite the same, it’s not always easy to choose the correct one for you and your team or organization. Sometimes, e.g. you want to be able to write your automation testing results back to this tool, to have one source for reporting. Or you want to be able to manage your requirements too, … And most of the time, there are also budget constraints. Test Management tools come in all shapes and sizes when it comes down to money. So, if in doubt, contact an expert who can help you make the decision and choose the correct one within this jungle of test management tools.