June 7, 2009

Skills of a Test Engineer’s Skull

Software Testing is one of the key practices in the Software Development Life Cycle that requires diversified skills. Because, developers find it difficult to find out the defects in their own code psychologically, the developers cannot test their code effectively. Hence, there arises the need for an Independent Testing Group.

Every Test Engineer need to have some skill sets. The most important seven (7) Skill sets based on me are:

1. Understanding Skills
The first and foremost activity of Software Testing is to understand the requirements/ functionalities of the software to be tested. Formal Documents like Software Requirement Specifications, Software Functional Specifications, Use Case Specifications and other documents like Minutes of Meeting serves as the key references for planning and executing the testing tasks. The test engineer must have very good understanding skills to read and understand the information written in these documents. Many a times, it is possible to have many interpretations for the information presented in the documents. The test engineers must be able to identify the duplicate & ambiguous requirements.

2. Listening Skills
Documents are not the only source of reference for the testing activities. The information required for the testing activities may be acquired through offline meetings, seminars, conferences, etc. The minutes of the meetings, conferences, seminars may or may not be recorded in a formal document. The Test Engineers must have very good active listening skills in order to collate and co-relate all of that information and refer them for the testing activities. While the requirements or functionalities of the software are discussed over a meeting, many a times, some part of the requirements are missed out. The Test Engineers should be able to identify and get them clarified before heading towards the subsequent testing phases.

3. Test Planning Skills

All software requirements shall be testable. The software shall be designed in such a way that all software requirements shall be testable. The test plan shall be formulated in such a way that paves the way for validating all the software requirements. In the real time scenario, there could be many requirements that are not testable. The Test Engineer with his/her test planning skills should be able to find out a workaround to test those non-testable requirements. If there is no way to test them, that shall be communicated clearly to the appropriate authority. There could be many requirements that are very complex to test and the Test Engineer should be able to identify the best approach to test them.

4. Test Design Skills
Software Testing Science preaches many techniques like Equivalence Class Partitioning, Boundary Value Analysis, Orthogonal Array and many more techniques for an effective test design. The Test Engineers shall be aware of all those techniques and apply them into their software test designing practice. The Test Engineer shall be aware of the how to write test cases – non-ambiguous, simple, straight to the point. The test case needs to contain Test Case Description, Test Steps and its corresponding expected results.

5. Test Execution Skills

Test Execution is nothing but executing the steps that is specified in the test design documents. During the execution, the Test Engineers shall capture the actual results and compare against the expected results specified in the test design documents. If there are any deviations between the expected and actual results, the Test Engineers shall consider that as a defect. The Test Engineer shall analyze the cause of the defect and if it is found and confirmed in the application under test, the same shall be communicated to the developers and it shall get fixed. If the cause of the defect is found with the test case, the same shall be communicated to the test designers and the test cases shall be modified/ amended accordingly. If the Test Engineers are not confident about the application functionalities and the test design documents, they may not confidently come to a conclusion about the defect in case of any discrepancies. This will lead to defects being leaked to the next phase and the Test Engineers needs to avoid this scenario. The Test Engineers shall be confident about the application functionalities and in case of any ambiguity or clarifications; they need to get them sorted out before executing the tests or at least during the test execution.

6. Defect Reporting Skills
Defect Reports are one of the critical deliverables from a Test Engineer. The defect reports are viewed by the development team, business analysts, project managers, technical managers and the quality assurance engineers along with the Test Engineers. Hence, the defect reports shall carry enough information about the defect. Steps to reproduce the defect, its expected result and actual result along with other information such as Severity, Priority, Assigned To (developer), Test Environment details are very critical for a defect report without which, the defect report is considered as incomplete. The Test Engineer shall be aware of the importance of the defect report and he/she shall create defect report in such a way that it is non-ambiguous. During the course of fixing the defect, the developers may come back to the testing team for more information regarding the defect and the Test Engineer shall provide the same without failing.

7. Test Automation Skills
Test Automation is a wonderful phenomenon by which the testing cost is drastically reduced. The manual test cases upon automation can be executed by running the automated test scripts. This means that the manual effort to run those automated test cases is not necessary and hence the total test effort is reduced drastically. The Test Engineers shall be aware of the technique for adopting test automation into the current testing process. Identifying the test automation candidates is very critical for the success of the automation project. Automation candidates shall be identified in such a way that the testing cost towards manual test execution would reduce significantly. This involves lots of thoughts from the financial perspective as well. The Test Engineers shall understand the process of do’s & don’ts of automation to make the automation project successful.

The Test Engineers shall understand/ learn and be confident about the application functionalities. Test planning, designing, execution and defect reporting are the basic and essential skills that a Test Engineer shall possess and develop in his day-to-day career.