W ho should test? and what? – An Overview W ho should do the testing? Software testing is not the job of one person. It is teamwork. The size of the team depends upon the complexity and size of the software being tested. The software developer should have minimum or no role in the testing process as everyone knows that for a person who has developed the software, it is very difficult to pin point errors in his own creations. Seven soft skills crucial for a good tester are – that He or She must: 1) Be Cautious 2) Be Curious 3) Have Patience 4) Have Perseverance 5) Be Analytical 6) Be Critical but with an attitude of not jumping to conclusions. 7) Be Good Communicator Thus “More the soft skills a tester has, better tester He or She is” Above all, a Most Successful Tester is the one: 1) Who is completely passionate. 2) Who is always eager to learn more & more. 3) Who never gives up. Various personnel and their roles during development & testing are: 1
Project manager Software developers
Roles Provides funding, provides requirements, approves changes and some of the test results. Plans and manages the project. Designs the codes and builds the software. Creates test plans and test specifications based on the requirements and functional and technical documents. Executes the tests and documents the results.
Role based demarcation exclusive to the field of Testing: 1) Junior Software Testers: Are the ones having good theoretical knowledge of testing & would have participated in good number of seminars on testing or would have passed some courses in testing. Such individuals are not expected to have experience on testing; however little experience can be desirable. 2) Software Testers: Are the ones having good ability to understand testing packs, do testing, and doing documentation / defect logging. Such individuals usually do repetitive work & are invariably involved in front-end testing. Usually at least 6 months of testing experience is preferred for this role. 3) Senior Software Testers: Are the ones having responsibility of doing all tasks usually performed by a Tester. In addition to this they are involved in back-end testing. The senior testers also do updating of test cases. Usually 1 to 2 years of experience of testing is preferred for this role. 4) Testing Analysts: Are the ones having expertise in extracting requirements out of documentation & doing thorough verification with business & ascertaining the correctness of all the
information. The testing analysts also do writing of test cases, executing the tests & reporting the findings thereafter. Usually 2 to 3 years of experience of testing along with at least 1-year experience of analysis is preferred for this role. 5) Testing Managers: Are the ones having experience of doing all the tasks described above. Apart from this they possess the ability of managing the entire testing process, personnel as well as the testing environment. Usually 3 to 4 years of experience of testing along with at least 1-year of managerial experience & sound expertise of Project Management is ideal for this role. 6) Testing Consultants: Are the senior people having experience of doing all the tasks described above. Consultants are usually good communicators having proven ability of man management, with the help of which they are able to effectively handle the client & the senior executives of the organization. This includes doing systematic analysis of the current testing process of the client & ability to guide the client with their expert comments & recommendations to improve. Consultants have great expertise of manual testing in addition to sound knowledge of specialized fields like Automation, Usability & Security etc. Generally persons with 5 years or more of Testing & Project Management experience in some senior capacity are appointed as testing consultants. 7) Test Automators: Are the ones having good skills of development plus sound experience of manual testing & have acquired specialization of Automated Testing; but as of date they would not prefer to get involved in manual testing. Automators have thorough knowledge & experience of using different Automation Tools. Usually 1 to 2 years of experience of test automation is preferred for this role. Next question comes as to what should be tested? According to Myer - for most of the programs, it is impractical to attempt to test the program with all possible inputs, due to a combinatorial explosion. For those inputs selected, a testing oracle is needed to determine the correctness of the output for particular test input. Mayer also says that, for most programs, it is impractical to attempt to test all execution paths through the product, due to combinatorial explosion. It is also not possible to develop an algorithm for generating test data for paths in an arbitrary product, due to the inability to determine path feasibility. The point, which is being emphasized here, is that complete or exhaustive testing is just not possible. This is because exhaustive testing requires every statement in the program and every possible path combination to be executed at once. Let us logically try to see as to why it is being said that complete testing is not possible:
For example, Myer considered a while loop and few IF statements structure which has say (10)14 or 100 trillions paths as per above figure. It is because there are 5 paths through the loop body which are executed 20 times. Hence we get (5) 20 + (5) 19 + (5) 18 + ... + (5) 1 = (10) 14 or 100 trillions If 1 path takes 5 minutes to test then (10)14 paths will take = 5 x (10)14 minutes = 1 billion years This means we shall not be able to achieve our ideal objective of complete testing. Hence we need to try to find out the critical areas where probability of finding a fault is maximum. However this too is not an easy task for an organization. Since we need to test for every possible combination of valid and invalid inputs, the total number of combinations are 28 x 28 if a program requires two 8 bit integers as input. What if inputs are more than two and size is also more than 8 bits. Hence, complete testing is just not possible. To overcome such difficulties, the organizations must try to develop strategies and policies for choosing effective testing techniques rather than leaving this as arbitrary judgements by the development team.