Chapter – 1 Introduction of Software Testing Certificate in Software Testing Skill Page 1 of 19 Confidentiality Statement This document should not be carried outside the physical and virtual boundaries of TCS and its client work locations. Sharing this document with any person other than a TCS associate would tantamount to violation of confidentiality agreement signed by you while joining TCS. Notice The information given in this course material is merely for reference. Certain third party terminologies or matter that may be appearing in the course are used only for contextual identification and explanation, without an intention to infringe. Certificate in Software Testing Skill TCS Business Domain Academy Contents Chapter-1 Introduction to Software Testing ...................................................................4 1.1 Introduction to Software Testing ........................................................................... 5 1.2 Software Testing Process ...................................................................................... 7 1.3 Testing Stream Roles & Responsibilities .............................................................. 10 Summary ........................................................................................................................ 16 References ...................................................................................................................... 18 Page 3 of 19 Certificate in Software Testing Skill Chapter-1 TCS Business Domain Academy Introduction to Software Testing Introduction Software testing is a process used to identify the correctness, completeness, and quality of developed computer software. It includes a set of activities conducted with the intent of finding errors in software so that it could be corrected before the product is released to the end users. This chapter will give you a basic understanding on software testing, principle, levels, myth and other related terminologies. Learning Objective After reading this chapter, you will be able to understand: • What is Software Testing • Objective of Software Testing • When to Start and Stop Software Testing • Qualities of the good Tester • Software testing Principle • Testing Stream Role and Responsibilities. • Software Testing Myths • Levels of Software Testing Page 4 of 19 Certificate in Software Testing Skill TCS Business Domain Academy 1.1 Introduction to Software Testing In this section we will know about overview, need, objective and understanding of software testing. 1.1.1 Overview “What is software testing?” is asked worldwide because of critical role software testing plays in the day to day life of software development. It is also said to be a talent to increase the quality of the software products. Software testing is the operating of software under controlled circumstances to check whether the software works as per expectation or not and to correct the errors, and also to ensure that we are delivering the right and quality software what the user intends. Software testing is a used to help in finding the correctness, completeness and quality of developed computer software with in mind that, testing cannot completely create the correctness of computer software. We can also say that testing is a process of valuing a system or its components with the intent to find out whether it fulfil the specified requirements or not. In simple words, testing is executing a system in order to find any gaps, defects, missing requirements in against the actual requirements. As per ANSI/IEEE 1059 standard, testing can be well-defined as “A process of analysing a software item to detect the differences between existing and required conditions (that is bugs/defects/errors) and to evaluate the features of the software item”. 1.1.2 Need of Software Testing There are several reason for software testing. • Complexity of software makes it error prone. • Untested or weekly tested software can cause losses in real life. e.g. o Disney's Lion King-1994-1995- The software did not work on the most common systems that the public had. o Intel Pentium Floating-Point Division Bug- 1994 - Intel took a change of more than $400 million to cover the costs of replacing bad chips. Page 5 of 19 Certificate in Software Testing Skill o TCS Business Domain Academy NASA Mars Polar Lander-1999- A software bug caused the tracking system to be inaccurate after 14 hrs. Of operation. o Patriot missile defence system-1991-A software bug caused the tracking system to be inaccurate after 14 hrs. Of operation. • A defect in the software has a root cause, while the effect of defect is seen as impact by the different stake holder. • Testing is part of overall Quality Assurance-It covers the Quality control aspect of ensuring Quality. • An anomaly in the software is called a bug or a defect. It may or may not lead to a failure during the usage of the software. • Software testing may be required for compliance with contractual or legal requirements. • 1.1.3 To ensure that what we create does what it’s supposed to do. Objective of Software Testing Software testing have many objectives. Software testing helps to ensure that it meets all the software requirements it was expected. Software testing helps to understand that the software that is being tested is an error free. Software testing helps to give a quality certification to client, that the software can be used by the client in his environment. It ensures quality of the software application/product. Besides, all these keep in mind that it is impossible to identify all errors, simply because it is not possible. As we know no human is error free and the same with software’s too. Software testing can be done in two below ways • Positive and • Negative Positive software testing is a process by giving the expected data to know whether it works as expected with expected data, whereas negative testing is a testing process by giving what is unexpected, to get knowledge how the software reacts to such a data. Negative software testing is also called illegal testing because the testing is using abnormal data. Positive software testing is the general testing done to verify the functionality of the software’s. Positive and Negative both types of testing helps us in finding errors/bugs. Negative software testing is giving us a positive view about software testing itself and It Page 6 of 19 Certificate in Software Testing Skill TCS Business Domain Academy helps us to know about the software behaviour behaves as expected or not. The objective of a software tester should be to make the test cases. He should not think like a software developer mind set. 1.1.4 Understanding Software Testing Testing is the process of executing a program with the intent of finding errors -Myers • Quality Control (QC) is testing the software or product for its intended behaviour. • Quality Assurance (QA) testing the processes involved in developing and testing the software or product • Verification is to found the truth of communication between a software product and its specification. • Validation is to establish the worth or fitness of a software product for its operational mission - Barry Boehm o Verification means “Are we building the product right?” o Validation means “Are we building the right product?” 1.2 Software Testing Process In this section we will know about when to start & stop software testing, qualities of good tester and software principle. 1.2.1 When to start Testing Early beginning to software testing process decreases the cost and time to rework and produce good quality (defect free) software. Software Development Life Cycle (SDLC), software testing can be started from the Requirements Phase and continued till the deployment phase of the software and it also depends on the used software development model. For example, in waterfall model, testing is done in the testing phase but in the incremental model testing is conducted at the end of every iteration/increment and the complete application is tested at the end stage. Software testing can be conducted in different forms at every phase of SDLC. • In requirement analysis phase, the analysis and verification of software requirements are considered as testing. • In Software design phase, reviewing software design with the motive to improve the design is also measured as testing. Page 7 of 19 Certificate in Software Testing Skill • TCS Business Domain Academy Software testing conducted by developer on completion of code development is also called testing. 1.2.2 When to Stop Testing It is Very difficult to decide when we have to stop testing, as testing is a never-ending process and no one can say that a software is 100% tested and it’s free from error. The below identifier are to be consider for stopping the testing process. • Testing deadlines & its validation of raised defects. • Completion of test case execution and it’s validation of raised bugs. • At Completion of code and functional coverage to a certain point and its validation of raised bugs. • Defects rate fall down below a particular level and no high-priority defects are identified and its validation of raised bugs closer. • 1.2.3 Management decision. Qualities of the good tester Software tester require technical skills as their development counterparts, but the tester’s mind set must have the below mentioned attributes. Keen Observation A tester should just not concern only about the test input and the expected output. He should have a keen observation on the functioning of the application under test. Only then he can think and test all possible test conditions that may not planned as part of test designing. Questioning Skills Another most important aspect for a good tester should be the questioning skills. The tester should not restrict him/her to simply verifying the functional specifications instead, start questioning the behaviour of the application on every test condition. In that way, the application can be verified against the given functional specifications as well as provide some really better suggestions on the application’s functionality. After all an independent tester is more like the end-user of the application and it is more important to test whether the application is user-friendly in all ways. Never give-up Sometimes, in the first run of the test execution, no defects might be encountered. But as a tester, he/she should develop the ‘Never give-up’ attitude and try to find alternative ways to Page 8 of 19 Certificate in Software Testing Skill TCS Business Domain Academy unearth any possible defects. It would be very rare that the software is developed defectfree! Interpersonal Skills The challenge for a tester does not end with finding the defect and reporting it. He/she has to maintain good relationship with the development team and good interpersonal skills helps in early defect acknowledgment by the development team which is essential for defect fixing and closure. 1.2.4 Software Testing Principle Testing shows presence of bugs, not its absence Software testing can show that bugs are present, but cannot verify that there are no defects. Software testing reduces the chance of undiscovered bugs remaining in the software product but, also if no defects are found, it is not a proof of accuracy. Exhaustive Testing is impossible Testing every functional and non-functional thing (all combinations of inputs and preconditions) is not feasible except for insignificant cases. Instead of in-depth testing, risk analysis and priorities should be used to aim testing efforts. Early Testing Testing actions should start as soon as possible and should be targeted on defined objectives. Defect Clustering A small number of modules cover most of the bugs found during pre-release software testing, or are accountable for the maximum operational failures. Pesticide Paradox If the same tests are repeated again and again, ultimately the same set of test cases will no longer find any new bugs. To come out this “pesticide paradox”, the test cases required to be regularly revised and reviewed. Page 9 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Testing is-context dependent Testing is conducted differently in different contexts. For example, safety-critical software is tested from an e-commerce site. Absence-of-errors fallacy Discovering and fixing bugs does not help if the system built is impracticable and does not fulfil the users’ requirement and their need. 1.3 Testing Stream Roles & Responsibilities In this section we will know about Testing Stream Roles & Responsibilities, Myth and Levels of software testing. 1.3.1 Testing Stream Roles and Responsibilities Figure 1 illustrates Testing Streams. Figure 1 Testing Stream Page 10 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Test Engineer Execute test cases as per test plans and log defects. Work closely with Test Lead / Analyst to achieve desired objectives. Test Analyst Develop Test Cases, Test Scripts and Test Data. Prepare traceability matrix .Work closely with testing team to achieve the desired test result. Test Lead Develop and manage Test Plans. Monitor test execution and track defects. Establish Testing Environment, processes and implement methodologies. Report status of testing and co-ordinate with end-users, testers and test manager. Test Manager Develop test strategy. Planning, effort estimation, resource management and training. Manage and deliver the Testing team activities. Establish, track and improve process efficiencies. Test Automation Engineer Prepare test automation design based on the test automation architecture and framework defined for the project. Define standards and guidelines for automation. Test Strategist Design testing framework including automated testing. Review testing deliverable. Analyse testing tools and recommend for use. Define test strategy. Define Metrics. Test Process Consultant Assess testing processes and recommend improvement action plan. Assess test automation feasibility. Prepare assessment plan and coordinate with the project/program stakeholders. Test CoE Lead Training and competency development. Standardize process and methodology. Maintain knowledge repository. Produce reporting metrics for higher management and customer. Page 11 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Business Analyst Prepare high level test scenarios based on business scenarios and requirements. Analyse requirements for accuracy and completeness from a business perspective. Review high level test scenarios prepared. Test Consultant Assess testing processes and recommend improvement action plan. Prepare assessment plan and coordinate with the project/program stakeholders. Pre-sales/ business development. Test Automation Consultant Automation feasibility analysis and tool evaluation. Automation approach and roadmap. Pre-sales/ business development. Creation of assets. Product review/ keep abreast of developments in product space. Test Center Delivery Manager End-to-end management of testing delivery for multiple projects / initiatives. Identify and monitor issues, risks and concerns at test centre level. Reporting to Customer Management to establish Client expectations. 1.3.2 Software testing Myth Myth 1 - : Testing is costly Fact: There is a proverb pay less for testing during development or pay more for software maintenance later point of time. Early testing saves cost and time both in several aspects, however falling the cost without testing may result unusable product. Myth 2 -: Only completely developed products are tested. Fact: No doubt, testing hang-on on the source code but reviewing software requirements and developing test cases for the same is independent from the developed code. However incremental or iterative approach as a SDLC development life cycle model may decrease the need of testing on the completely developed software. Myth 3- : Testing is time consuming Fact: Testing is never a time consuming process during software development life cycle but spotting and closing the defects find out during testing is a time consuming job but is a productive activities. Page 12 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Myth 4-: Complete testing is possible Fact: It is becomes an issue when stakeholder thinks that full testing is possible. It is might possible that all paths have been tested by the team but incidence of complete testing is impossible. There might be some situations that are not executed by the testing team or by the client during the SDLC and may be executed when the project has been deployed. Myth 5- : Testing is easy activity. Fact: Testing can be problematic and challenging (sometimes, even more so than coding activity). Myth 6- : Automated testing removes the need for manual testing Fact: 100% test automation never be reached. Manual Testing, to some level is always essential. Myth 7 - : A tested software is defect free Fact: This is a common myth that the stakeholders trusts in. Nobody can claim with 100 % certainty that a software application is fully defect free even if a tester with excellent testing skills has tested the software. Myth 8 - : When a bugs slips, it is the fault of the testers Fact: It is not proper approach to guilt testers for defects that persist in the application even after several rounds of testing has been performed by testers. This myth tells to Time, cost, and requirements changing Constraints. However the test strategy may also result in defects being missed by the test team. Myth 9- : Testers are responsible for quality of product. Fact: Quality is the responsibility of all stakeholders, including developers, of a project. It is a very general misunderstanding that only testers or the test team should be accountable for the product quality. Testers’ tasks contain the identification of defects to the stakeholders and then it is their choice whether they will fix and close the defects or release the software. There is more pressures on tester at the time of releasing the software, as they will be blamed for any defects. Page 13 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Myth 10 -: Testing is not a creative activity Fact: Creativity can be practical when framing test approaches, when designing test cases, and even when executing test cases. Myth 11-: Tester only task is to find defects Fact: Finding defects in a software is the task of the software testers, but at the same time, they are domain experts of the specific software. Developers are responsible for the particular component or area that is allocated to them but testers know the overall workings of the software, its dependencies, and the effects of one module to another modules. Myth 12 - : Anyone can do testing Fact: People outside from the IT industry are thinking and even believe that anyone can test a software product and testing is not a creative job. However testers understand very well that this is a myth. Thinking other scenarios, try to smash a software with the intent to discover potential defects is not possible for the person who developed it. Myth 13 -: Test Automation should be used wherever possible to reduce time Fact: Yes, this is true that test automation reduces the testing effort time, but it is never possible to start test automation at any point time during software development life cycle. This test automaton should be started when the software has been manually tested at least once and is stable to some extent. Moreover, test automation cannot be used if requirements keep on changing. 1.3.3 Levels of Testing There are usually FOUR levels of tests in Software Testing Life Cycle. Unit testing, integration testing, system testing and User acceptance testing. Unit Testing: The testing is conducted by the developer to test whether functions related to the module are behaving as expected or not. This is first round of testing and fully focused on specific unit or components of the software. Biggest benefits of this testing phase is that it can be run every time a piece of code is changed, which enable quick resolution of issues. Page 14 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Integration Testing: Integration testing allows the opportunity to combine all units with in the program and test them. This testing is design to find the interface issue between units/modules. This testing is beneficial to determine how efficiently the units are running together. System Testing The complete application is tested as a full in System testing level. The objective of this level of testing is to check whether the system has completed all requirements and qualities standard or not. This testing is performed in performed in closely mirrors of production environment. This level of testing is very important because it verifies the application whether it’s fulfilling technical, functional and business requirements set by the customer or not. User Acceptance Testing User Acceptance testing (UAT) is final level testing and is conducted to determine whether the system is ready to release or not. During SDLC, requirement changes can sometime misunderstood in a fashion that does not full-fill the required needs of the users. This level of testing is generally done by client in their UAT environment to find out whether the application meets their business needs or not. After successful completion and approval, the program will then be delivered to production environment. Page 15 of 19 Certificate in Software Testing Skill TCS Business Domain Academy Summary • Software Testing is a process used to help identify the correctness, completeness and quality of developed computer software. With that in mind, testing can never completely establish the correctness of computer software. • According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of analysing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item. • An early start to software testing process reduces the cost and time to rework and produce good quality / error free software. • Qualities of the good tester a) Keen Observation b) Questioning Skills c) Never give-up d) Interpersonal Skills • Testing Stream Roles and Responsibilities a) Test Engineer: Execute test cases as per test plans and log defects. Work closely with Test Lead / Analyst to achieve desired objectives. b) Test Analyst: Develop Test Cases, Test Scripts and Test Data. Prepare traceability matrix .Work closely with testing team to achieve the desired test result. c) Test Lead: Develop and manage Test Plans. Monitor test execution and track defects. Establish Testing Environment, processes and implement methodologies. Report status of testing and co-ordinate with end-users, testers and test manager. d) Test Manager: Develop test strategy. Planning, effort estimation, resource management and training. Manage and deliver the Testing team activities. Page 16 of 19 Certificate in Software Testing Skill TCS Business Domain Academy e) Test Automation Engineer: Prepare test automation design based on the test automation architecture and framework defined for the project. Define standards and guidelines for automation. f) Test Strategist: Design testing framework including automated testing. Review testing deliverable. Analyse testing tools and recommend for use. Define test strategy. Define Metrics. g) Test Process Consultant: Assess testing processes and recommend improvement action plan. Assess test automation feasibility. h) Test CoE Lead: Training and competency development. Standardize process and methodology. Maintain knowledge repository. i) Business Analyst: Prepare high level test scenarios based on business scenarios and requirements. Analyse requirements for accuracy and completeness from a business perspective. Review high level test scenarios prepared. j) Test Consultant: Assess testing processes and recommend improvement action plan. Prepare assessment plan and coordinate with the project/program stakeholders. Pre-sales/ business development. k) Test Automation Consultant: Automation feasibility analysis and tool evaluation. Automation approach and roadmap. l) Test Centre Delivery Manager: End-to-end management of testing delivery for multiple projects / initiatives. Identify and monitor issues, risks and concerns at test centre level. Reporting to Customer Management to establish Client expectations. Page 17 of 19 Certificate in Software Testing Skill TCS Business Domain Academy References • https://tcsltd.skillport.com/skillportfe/main.action#summary/VIDEOS/RW$88447:_ ss_video:87822 – Watch Video for additional knowledge on “Why Test?” • https://tcsltd.skillport.com/skillportfe/main.action#summary/VIDEOS/RW$88449:_ ss_video:87824 -- Watch Video for additional knowledge on “Testing Objectives” Page 18 of 19