Software testing can be described as the process which helps to identify the correctness, completeness, security and quality of developed computer software. In a nutshell, testing is finding out how well something works; a good tester will try multiple avenues to break whatever it is they are testing. In computer hardware and software development, testing is used at key checkpoints in the overall process to determine whether objectives are being met.
Skills a software tester needs
We’ve put together a list of the top 5 skills we think a good Software Test Analyst will need to succeed in their next IT job:
- Good Communication Skills – Test Analysts need to be able to effectively communicate with various stakeholders at multiple levels of an organisation. Whilst most of a test analyst’s job is “behind the scenes” there will be times where the complicated “behind the scenes stuff” needs to be clearly communicated and easily understood by business stakeholders who aren’t necessarily IT experts.
- Logical & Critical Thinking Skills – Logical, critical thinking and the ability to learn at a face pace are important to any testing role. Having a good attention to detail can help a tester better analyse information, and analyse the right information at the right time.
- Good Documentation and Report Writing Skills – A software tester will usually be required to generate reports on the testing being done, and to translate them into concise reports to management. A test must be able to report on structured test cases in a way that is meaningful to the business in which they’re operating.
- Awareness of Software Development Life Cycle (SDLC) – Software testers who know the basics of programming and SDLC will be more effective in testing new software. A test analyst will be better positioned to test software when they can relate to and imagine the coding structure that’s going on behind the scenes.
Types of testing
There are many different types of testing, some of which are summarised below:
When the smallest testable parts of an application, called units, are individually and independently scrutinized for proper operation. For example if you have built a house, unit testing could be checking a door knob turns and opens the door, or that a window is transparent and can be both opened and closed.
This ensures that components of a system interact together correctly. Integration testing can expose problems with the interfaces between different systems before trouble occurs in real-world program execution. In our house, an example of this could be ensuring the sound system and the TV communicate.
This tests the end-to-end functionality of a complete system; does it do what the business needs it to do? Systems testing may be combined with the integration test stage and doesn’t require any knowledge of the inner workings of the system, simply that it performs its task.
User Acceptance testing (UAT)
UAT is a phase of software development in which the software is tested in the ‘real world’ by the intended audience or end users. UAT is also known as beta testing, application testing or end user testing. Often UAT is completed by subject matter experts within the business and not necessarily IT staff; because of this, UAT is a good entry point for someone looking to move into testing.
Performance, load and stress testing
Performance testing is the process of determining the speed or effectiveness of a computer, network, software program or device. This can cover user response times (ie how long does it take to retrieve data, run on-line reports etc) and background or overnight batch processes, such as data loads.
Load testing is used to see how well a system performs at both the normal expected usage of the system and extreme load conditions. Stress tests are used to simulate extreme conditions such as high transaction concurrency and extended continuous operation (also known as soak tests). A good example of this is the cell network immediately after an emergency where a lot of people are trying to make calls at the same time – the cell network would have been rigorously tested to understand what load the network can manage before calls get dropped.
Performance testing is highly specialised and usually requires the use of sophisticated tools, for example:
- Apache Jmeter
- Rational Performance Tester
True performance testers tend to be quite hard to find and command much higher salaries than regular test analysts.
Regression testing is the process of re-executing tests to verify that parts of a system have not been adversely affected by changes made to other aspects of the system.
Test cases, suites, scripts and scenarios
A test case is a set of conditions or variables under which a tester will determine if a requirement upon an application is partially or fully satisfied. It may take many test cases to determine that a requirement is fully satisfied. Going back to our house analogy, if we look at a test case for a front door, we could look at:
- Does the door handle turn?
- Does the door open? All the way or part way? Do I have control over how fast the door opens? Can I fit through the door?
- Does the door close? All the way or part way? Do I have control over how fast the door closes?
- Does the door fit into the door frame
- Is there a lock and key? Can I lock and unlock the door using the key?
- Is the door weather-proof?
- Can I see through the door when it’s closed?
Each question would be a test script on its own, new Test Analysts may not write their own scripts but a more experienced Tester certainly should. A Tester completes or executes each script. The most common term for a collection of test cases is a test suite.
A test plan documents the strategy that will be used to verify and ensure that a product or system meets its design specifications and other requirements.
Tester qualifications and certifications
The most common testing certification is ISTQB (International Software Testing Qualifications Board), but others do exist. Holding ISTQB is not always essential to be successful in a placement but it is becoming more commonly asked for.
A Test Analyst may have come from a technical or a business super-user / subject matter expert background. They need to have a strong attention to detail and tenacity to keep trying a system to see if they can break it. Often testing can be repetitive, the enjoyment comes from working with different systems and within different environments.
Test Analysts often work with other Test Analysts, often under the guidance of a Senior or Lead Test Analyst, and a Test Manager. They may liaise with Business Analysts to ensure the system is responding according to business user’s needs, as well as the Developers who may be needed to fix any identified defects or bugs (problems).
A Test Analyst’s responsibilities include:
- Writing and executing test scripts for software and systems to detect faults
- Keeping written records of defects and bugs that are discovered during testing
- Analysing the defects and bugs to identify what is causing them
- Developing or recommending solutions to fix any problems discovered during testing
- Tracking the success of the solutions
- Keeping software and systems documentation up to date
A Test Lead or Senior will often have the same responsibilities as a Test Analyst, but will often have the added responsibility for mentoring junior members of the team and keeping the testing on track when the Test Manager is unavailable. They should definitely be writing their own test scripts.
Some Senior or Lead Testers will be on the career path to becoming a Test Manager, and so will have more of an involvement with the test plan, reviewing test cases, ensuring test requirements are thorough and correct as well as working in with others in the business to communicate the test status (be it Project Managers, Test Managers, senior leadership team).
The Test Manager is ultimately responsible for both the testing team (people) and the testing work itself; that the plan is correctly established and the quality and features of the deliverable(s) are going to meet the business’ needs.
Some organisations have a Test Manager purely focused on the team / people management aspect and a separate Test Manager focused on the testing work. It is possible a Test Manager be hands on, but this will be a smaller part of their role.
Specific responsibilities may include:
- Team/ people management
- Defining the test strategy, then lead, guide and monitor the analysis, design, implementation and execution of the test cases, test procedures and test suites.
- Deploying and managing the appropriate testing framework to meet the testing mandate.
- Defining the scope of testing within the context of each release/delivery.
- They estimate the testing to be done and negotiate to acquire the necessary resources.
- Ensuring the test environment is put into place before and managed during test execution.
- Communicating with others in the business to report on the test status (be it Project Managers or the senior leadership team).
Test Analyst Salary
Salaries for test will vary depending on the experience of the individual and the shape of the IT sector at the time you’re job hunting. Here in New Zealand salaries for testers start at $62,5000 and the more experienced tester can earn up to $90,000 according to our latest remuneration report.
The demand for testers is good. Careers NZ states that test roles are in high demand.
For greater insight into tester salaries in NZ see http://www.itsalaries.co.nz/