P. 1
STLC - Software Testing Life Cycle

STLC - Software Testing Life Cycle

|Views: 150|Likes:
Published by Satish987

More info:

Published by: Satish987 on Jun 10, 2011
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less





STLC - Software Testing Life Cycle

There is a systematic cycle to software testing, although it varies from organization to organization Software Testing Life Cycle: Software testing life cycle or STLC refers to a comprehensive group of testing related actions specifying details of every action along with the specification of the best time to perform such actions. There can not be a standardized testing process across various organizations, however every organization involved in software development business, defines & follows some sort of testing life cycle. STLC by & large comprises of following Six Sequential Phases: 1) Planning of Tests 2) Analysis of Tests 3) Designing of Tests 4) Creation & Verification of Tests 5) Execution of Testing Cycles 6) Performance Testing, Documentation 7) Actions after Implementation Every company follows its own software testing life cycle to suit its own requirements, culture & available resources. The software testing life cycle can’t be viewed in isolation, rather it interacts with the every phase of Software Development Life Cycle (SDLC). Prime focus of the software testing life cycle is on managing & controlling all activities of software testing. Testing might be manual testing or an automated testing using some tool. 1) Planning of Tests: In this phase a senior person like the project manager plans & identifies all the areas where testing efforts need to be applied, while operating within the boundaries of constraints like resources & budget. Unless judicious planning is done in the beginning, the result can be catastrophic with emergence of a poor quality product, dissatisfying the ultimate customer. Planning is not limited just to the initial phase, rather it is a continuous exercise extending till the end. During the planning stage, the team of senior level persons comes out with an outline of Testing Plan at High Level. The High Level Test Plan comprehensively describes the following:

Scope of Testing : Defining the areas to be tested, identification of features to be covered during testing

Identification of Approaches for Testing: Identification of approaches including types of testing

Defining Risks: Identification of different types of risks involved with the decided plan

Identification of resources : Identification of resources like man, materials & machines which need to be deployed during Testing

Time schedule: For performing the decided testing is aimed to deliver the end product as per the commitment made to the customer. Involvement of software testers begins in the planning phase of the software development life cycle. During the design phase, testers work with developers in determining what aspects of a design are testable and with what parameters those tests will work.

2) Analysis of Tests: Based upon the High Level Test Plan Document, further nitty-gritty’s covering the following are worked out. • • • • Identification of Types of Testing to be performed during various stages of Software Development Life Cycle. Identification of extent to which automation needs to be done. Identification of the time at which automation is to be carried out. Identification of documentation required for automated testing

The Software project can’t be successful unless there is frequent interaction among various teams involved in Coding & Testing with the active involvement of the Project Managers, Business Analysts or even the customer. Any deficiencies in the decided test plans come to the surface, during such meetings of crossfunctional teams. This provides an opportunity to have a rethinking & refining the strategies decided for testing.

Based upon the customer requirements a detailed matrix for functional validation is prepared to cover the following areas: • • • • Ensure that each & every business requirement is getting covered through some test case or the other. Identification of the test cases best suited to the automated testing Identification of the areas to covered for performance testing and stress testing Carry out detailed review of documentation covering areas like Customer Requirements, Product Features & Specifications and Functional Design etc.

3) Designing of Tests: This phase involves the following: • • • • • • • • Further polishing of various Test Cases, Test Plans Revision & finalization of Matrix for Functional Validation. Finalization of risk assessment methodologies. In case line of automation is to be adopted, identification of test cases suitable for automation. Creation of scripts for Test cases decided for automation. Preparation of test data. Establishing Unit testing Standards including defining acceptance criteria Revision & finalization of testing environment.

4) Construction and verification: This phase involves the following: • • • • • • Finalization of test plans and test cases Completion of script creation for test cased decided for automation. Completion of test plans for Performance testing & Stress testing. Providing technical support to the code developers in their effort directed towards unit testing. Bug logging in bug repository & preparation of detailed bug report. Performing Integration testing followed by reporting of defects detected if any.

5) Execution of Testing Cycles: This phase involves the following: • • Completion of test cycles by executing all the test cases till a predefined stage reaches or a stage of no detection of any more errors reach. This is an iterative process involving execution of Test Cases, Detection of Bugs, Bug Reporting, Modification of test cases if felt necessary, Fixing of bugs by the developers & finally repeating the testing cycles.

Life Cycle of Software Testing ( STLC ) Phase Planning of Tests Analysis of Tests Activities ($) Creation of a Test Plan of High Level ($) Creation of fully descriptive Test Plan ($) Creation of Matrix for Functional Validation ($) Creation of Test Cases Designing of Tests ($) Revision of Test Cases ($) Selection of Test Cases fit for automation Refined Test Cases. Winding up of the test environment & restoration of all test equipment to the original base line conditions.6) Performance Testing. Documentation of TGR (Things Gone Right) & TGW (Things Gone Wrong) reports. Identification & fixing of newly cropped up errors on continuous basis. Test Cases & Matrix for Functional Validation . Revision & finalization of test documentation Performing Acceptance testing. load testing followed by recovery testing Verification of the software application by simulating conditions of actual usage. 7) Actions after Implementation: This phase involves the following: • • • • Evaluation of the entire process of testing. Documentation & Actions after Implementation: This phase involves the following: • • • • Execution of test cases pertaining to performance testing & stress testing. Input Data Sets & Documents for Assessment of Risk Outcome Refined Test Plans & Specifications Refined Test Plans. Identification of approaches to be followed in the event of occurrence of similar defects & problems in the future. Creation of comprehensive plans with a view to refine the process of Testing.

Test Reports. Test Reports & BugReports Detailed Test Reports & BugReports. manual testing. software Requirements gathering requirements are reviewed by test team. Testing Scripts. Requirements Analysis is done is this phase. Coding or development testers write test cases and finalizes test plan. Retesting and regression testing is also done in this phase. Testing automation testing is done. SDLC (Software Development Life STLC (Software Test Life Cycle) cycle) SDLC is Software Development The process of testing a software in a well planned and LifeCycle. Final testing and implementation is done is this phase Deployment andfinal test report is prepared. Test Planning. cycle(STLC). defects found are reported. Test Execution and bug reporting. it is a systematic approach systematic way is known as software testing life to develop a software.Creation & Verification of Tests Execution of Testing Cycles Performance Testing. Documentation on various metrics used during testing Actions after Implementation ($) Evaluation of all Processes of Testing Detailed Plans for improving the process of testing ----------------------------------------------------------------------------------------------------------------------------------------- Software development life cycle(SDLC) and Software Testing Life cycle(STLC) go parallelly. Test construction and verification is done in this phase. Test analysis and Test design is done in this Design phase. Test team reviews design documents and prepares the test plan. Documentation ($) Creation of scripts suitable for Test Cases for automation ($) Completion of Cycles of Testing ($) Execution of Test Cases related to performance tests & Stress Testing ($) Detailed documentation Detailed Procedures for Testing. Maintenance Maintenance testing is done in this phase .

2. Test Planning In this phase all the planning about testing is done like what needs to be tested. Requirements Analysis Test Planning Test Analysis Test Design Test Construction and Verification Test Execution and Bug Reporting Final Testing and Implementation Post Implementation 1. resources. 3. 5. in this phase we need to dig deeper into project and figure out what testing needs to be carried out in each SDLC phase. risks etc. 3. . 4. Requirements Analysis In this phase testers analyze the customer requirements and work with developers during the design phase to see which requirements are testable and how they are going to test those requirements. 1. if automation needs to be done for software product.What is STLC (Software Testing LifeCycle)? The process of testing a software in a well planned and systematic way is known as software testing lifecycle(STLC). what will be the test environment. hardware and software availability. 8. test strategy to be followed. how will the automation be done. how the testing will be done. Usually IEEE 829 test plan template is used for test planning. Test Analysis After test planning phase is over test analysis phase starts. 2. Different organisations have different phases in STLC however generic Software Test LifeCycle (STLC) for waterfall development model consists of the following phases. 6. It is very important to start testing activities from the requirements phase itself because the cost of fixing defect is very less if it is found in requirements phase rather than in future phases. how much time will it take to automate and which features need to be automated. Automation activities are also decided in this phase. 7. A high level test plan document is created which includes all the planning inputs mentioned above and circulated to the stakeholders. what test methodologies will be followed.

if automation testing needs to be done then automation scripts also needs to written in this phase. load and performance testing are performed in this phase.Non functional testing areas (Stress and performance testing) are also analyzed and defined in this phase. after the test execution is complete and all the defects are reported. A document is prepared to cope up similar problems in future releases. If defect is found and fixed. After tester assures that defects have been fixed and no more critical defects remain in software the build is given for final testing. After developers fix the bugs raised by testers they give another build with fixes to testers. 8. testing needs to be done after every defect fix. The test plan document should also be finalized and verified by reviewers. Test execution reports are created and circulated to project stakeholders.e. end user scenarios etc. 5. 6. Test Execution and Bug Reporting Once the unit testing is done by the developers and test team gets the test build. testers start writing test cases by following those design techniques. 7. All the test cases and automation scripts need to be completed in this phase and got reviewed by the stakeholders. Final test execution reports and documents are prepared in this phase. testers do re-testing and regression testing to ensure that the defect has been fixed and not affected any other areas of software. . 4. the process review meeting's are done and lessons learnt are documented. Testing is an iterative process i. The test cases are executed and defects are reported in bug tracking tool. Test Construction and Verification In this phase testers prepare more test cases by keeping in mind the positive and negative scenarios. Final Testing and Implementation In this phase the final testing is done for the software. Post Implementation In this phase the test environment is cleaned up and restored to default state. Test Design In this phase various black-box and white-box test design techniques are used to design the test cases for testing. The software is also verified in the production kind of environment. non functional testing like stress.

Validation is concerned with evaluating the software. 4. component or system to determine it meets end user requirements. Unit testing requires stubs and drivers. Once the system is integrated and you found error in an integrated system it becomes difficult to differentiate that the error occurred in which unit. Unit Testing Integration Testing System Testing User Acceptance Testing Unit Testing Unit is the smallest testable part of the software system. running predefined test cases and measuring the output with expected results. What is STUB? . When developer is coding the software it may happen that the dependent modules are not completed for testing. 3. in such cases developers use STUBS and DRIVERS to simulate the called(stub) and caller(driver) units. so unit testing is mandatory before integrating the units.What is Validation Validation represents dynamic testing techniques. Why is unit testing important Suppose you have two units and you do not want to test the units individually but as an integrated system to save your time. The smallest testable part is isolated from the remainder code and tested to determine whether it works correctly. Let's explain STUBS and DRIVERS in detail. stubs simulates the called unit and driver simulates the calling unit. Validation answers the question “Did we build the software fit for purpose and does it provides the solution to the problem”. Unit testing is done to verify that the lowest independent entities in any software are working fine. 2. Validation ensures that the software operates as planned in the requirements phase by executing it. Some important validation techniques are as follows: 1.

the higher level components are substituted with drivers. Module A is ready and we need to test it.Assume you have 3 modules. Top-down Approach Top down approach tests the integration from top to bottom. 2. Bottom-up approach In bottom up approach testing takes place from the bottom of the control flow. This dummy piece of code is known as driver. This dummy module code is known as stub. 1. Integration testing identifies the problems that occur when the individual units are combined i. 3.e it detects the problem in interface of the two units. Module A. . Module B and module C. it follows the architectural structure. There are mainly three approaches to do integration testing. Big bang approach In big bang approach most or all of the developed modules are coupled together to form a complete system and then used for integration testing. Example: Integration can start with GUI and the missing components will be substituted by stubs and integration will go on. Integration Testing In integration testing the individual tested units are grouped as one and the interface between them is tested. Integration testing is done after unit testing. but module A calls functions from Module B and C which are not ready. so developer will write a dummy module which simulates B and C and returns values to module A. its main focus is to verify that the customer requirements are fulfilled. What is DRIVER? Now suppose you have modules B and C ready but module A which calls functions from module B and C is not ready so developer will write a dummy piece of code for module A which will return values to module B and C. System Testing Testing the behavior of the whole software/system as defined in software requirements specification(SRS) is known as system testing.

Sanity testing is done with an intent to verify that end user requirements are met on not. Stress Testing 5. Sanity testing is done after thorough regression testing is over. Maintenance Testing 9. Security Testing 10. It tests the functioning of the system or software i.Reliability Testing 11. 3.Accessibility Testing 12. 2. Functional Testing 3.GUI Testing Sanity Testing 1. 4.System testing is done after integration testing is complete. . Sanity testing follows narrow and deep approach with detailed testing of some limited features. it is done to make sure that any defect fixes or changes after regression testing does not break the core functionality of the product. The test types followed in system testing differ from organization to organization however this list covers some of the main testing types which need to be covered in system testing. Following types of testing should be considered during system testing cycle. Functional testing considers the specified behavior of the software. Functional testing is also known as component testing. Performance Testing 7. The functions of the software are described in the functional specification document or requirements specification document. You can say that sanity testing is a subset of regression testing. Load Testing 6. Usability Testing 4. System testing should test functional and non functional requirements of the software. 2. 1. Functional Testing 1. Sanity tests are mostly non scripted. It is done towards the end of the product release phase.e. 6. Regression Testing 8. Sanity Testing 2. 5. What the software does. 3. Sanity testing is like doing some specialized testing which is used to find problems in particular functionality. When there are some minor issues with software and a new build is obtained after fixing the issues then instead of doing complete regression testing a sanity is performed on that build.

Usability Testing tests the following features of the software. number of concurrent users or transactions is increased and the behavior of the system is examined and checked what load can be handled by the software. The tools are used to create different user profiles and inject different kind of activities on server which replicates the end-user environments.CPU. How convenient is the software to end user. In stress testing we load the software with large number of concurrent users/processes which cannot be handled by the systems hardware resources. Stress Testing is a type of performance testing and it is a non-functional testing. 3. The main objective of load testing is to determine the response time of the software for critical transactions and make sure that they are within the specified limit. throughput or MIPS (Millions of instructions per second) at which the system/software operates. How easy it is to learn the software.Usability Testing Usability means the software's capability to be learned and understood easily and how attractive it looks to the end user. Performance Testing is done by generating some activity on the system/software. It is a type of performance testing. 2. Stress testing puts the hardware resources under extensive levels of stress in order to ensure that software is stable in a normal environment. How easy it is to use the software. Usability Testing is a black box testing technique. Stress Testing Stress testing tests the software with a focus to check that the software does not crashes if the hardware resources(like memory. . 1. Load Testing is non-functional testing. Performance Testing Performance Testing is done to determine the software characteristics like response time.Disk Space) are not sufficient. this is done by the performance test tools available. Load Testing • • • • Load testing tests the software or component with increasing load.

among other things. may be used to test performance both on static and dynamic resources (files. Can work with very large datasets when used in streaming mode. Servlets. It should generate load on the system which is tested 2. Apache jmeter Java desktop application from the Apache Software Foundation designed to load test functional behavior and measure performance. IBM Rational Performance Tester Its a performance testing tool from IBM. Perl scripts. Originally designed for testing Web Applications but has since expanded to other test functions. . and databases. DBUnit Open source JUnit extension (also usable with Ant) targeted for database-driven projects that. can make a graphical analysis of performance or test server/script/object behavior under heavy concurrent load. Loadrunner Loadrunner is HP's (formerly Mercury's) load/stress testing tool for web and other applications. Data Bases and Queries. it supports load testing against applications such as HTTP. Java Objects. It is supported on Windows and Linux. platforms. It should measure the throughput Performance Testing Tools 1. 3. Large suite of network/app/server monitors to enable performance measurement of each tier/server/component and tracing of bottlenecks. it supports a wide variety of application environments. SAP. Enables avoidance of problems that can occur when one test case corrupts the database and causes subsequent tests to fail or exacerbate the damage. and can help verify that database data matches expected sets of values. Performance Testing Tools should have the following characteristics: 1. puts a database into a known state between test runs. Can be used to simulate a heavy load on a server.The purpose of doing performance testing is to ensure that the software meets the specified performance criteria. FTP Servers and more). and figure out which part of the software is causing the software performance go down. 4. network or object to test its strength or to analyze overall performance under different load types. Siebel etc. It should measure the server response time 3. Has the ability to export and import database data to and from XML datasets. 2.

The deployed software needs to be enhanced. So it is very necessary to do maintenance testing of software applications. so regression testing is also done. Why is Maintenance Testing required 1. The main intent behind regression testing is to ensure that any code changes made for software enhancements or configuration changes has not introduced any new defects in the software. The Testing done during this enhancement. tester should consider 2 parts. Anytime the changes are made to the existing working code. 2. The changes made in software does not affect the existing functionality of the software. most of the banking software systems needs to be operational 24*7*365.Regression Testing Regression Testing is done to find out the defects that arise due to code changes made in existing code like functional enhancements or configuration changes. Regression test suite is the ideal candidate for automation because it needs to be executed after every new version. 2. . Database version etc. which requires testing the whole application on new platforms and environment. Maintenance Testing Maintenance Testing is done on the already deployed software. Any changes made in software should be tested thoroughly. User may need some more new features in the existing software which requires modifications to be done in the existing software and these modifications need to be tested. It is necessary to have a regression test suite and execute that suite after every new version of software is available. a suite of test cases is executed to ensure that the new changes have not introduced any bugs in the software. changed or migrated to other hardware. 1. In maintenance testing. End user might want to migrate the software to other latest hardware platform or change the environment like OS version. Once the software is deployed in operational environment it needs some maintenance from time to time in order to avoid system breakdown. change and migration cycle is known as maintenance testing.

Security Testing Security Testing tests the ability of the system/software to prevent unauthorized access to the resources and data. Integrity A measure intended to allow the receiver to determine that the information which it is providing is correct. Access control is an example of authorization. Integrity schemes often use some of the same underlying technologies as confidentiality schemes. biometrics. authorization. availability and non-repudiation. Information must be kept available to authorized persons when they need it. Authorization The process of determining that a requester is allowed to receive a service or perform an operation. radio frequency identification. Confidentiality A security measure which protects against the disclosure of information to parties other than the intended recipient that is by no means the only way of ensuring the security. integrity. Authentication can take many forms including but not limited to: passwords. but they usually involve adding additional information to a communication to form the basis of an algorithmic check rather than the encoding all of the communication. As per wikipedia security testing needs to cover the six basic security concepts: confidentiality. Availability Assuring information and communications services will be ready for use when expected. authentication. Authentication The process of establishing the identity of the user. etc. Non-repudiation .

A measure intended to prevent the later denial that an action happened. User Acceptance Testing Acceptance testing is performed after system testing is done and all or most of the major defects have been fixed. Verification ensures that the software documents comply with the organisations standards. 4. Important Verification techniques are as follows: 1. Beta Testing Beta testing is also know as field testing. Commercial off the shelf(COTS). In communication terms this often involves the interchange of authentication information combined with some form of provable time stamp. it is done by potential or existing users/customers at an external site without developers involvement. Alpha Testing Alpha testing is mostly applicable for software's developed for mass market i. Acceptance testing is done in production kind of environment. What is Verification Verification represents static testing techniques. This testing is done to acquire feedback from the market. Alpha testing is conducted at developers site.e. members or developers organisation are invited to use the system and report defects. there are two types of acceptance testing for COTS software's. it is static analysis technique. Feasibility reviews Requirements reviews technical Reviews Walk through . For Commercial off the shelf (COTS) software's that are meant for the mass market testing needs to be done by the potential users. this test is done to determine that the software satisfies the end users/customers needs. The goal of acceptance testing is to establish confidence in the delivered software/system that it meets the end user/customers requirements and is fit for use Acceptance testing is done by user/customer and some of the project stakeholders. 4. feedback is needed from potential users. 3. Verification answer's the question “Is the Software build according to the specifications”. potential users. or a communication that took place etc. 2.

it is static analysis technique. Quality Control (QC) can also be referred as testing activity. Quality assurance ensures that the processes designed for the product development and services are effective enough to meet the objectives. 2. 3. Quality Control is concerned with the software product being developed. 4. . Quality Assurance (QA) is a process driven approach. 2. 6. Validation 1. It prevents the software defects/errors.5. The Quality Control system identifies and addresses product errors/defects. What is Quality Control 1. 7. the solution to the problem”. it is a process to monitor and improve existing quality processes. 4. 8. 2. Validation represents dynamic testing techniques. 5. Verification represents static testing techniques. Validation answers the question “Did we build “Is the Software build according to the software fit for purpose and does it provides the specifications”. 5. 2. running predefined test cases and measuring the output with expected results. It ensures that the product or services are developed or implemented on agreed standards. Validation ensures that the software operates as planned in the requirements phase by executing it. Verification ensures that the software documents comply with the organisations standards. It is a process of verifying whether the software product or services meets or exceeds the customer expectations. 3. What is Quality Assurance 1. Verification answers the question 3. It measures and controls the quality of the software as it is being developed. Quality control system provides routine checks to ensure that the software is being developed correctly without errors. 9. 3. Inspections Formal reviews Informal reviews Peer reviews Static Code Analysis Verification vs Validation Verification 1. Quality Control ensures that the final product is error free and satisfactory.

Every incident that occurs during testing may not be a defect or bug. Concerned with Product: It 1. 3. Process Driven Approach: It is a process to measures and controls the quality of monitor and improve existing quality processes. commonly defects are also known as bug. the software as it is being developed. however we call the incident a defect or bug only if the Root Cause is the problem in the tested component. objectives. The variation in the expected and actual results is known as defects.Quality Assurance Vs Quality Control Quality Assurance Quality Control 2. incidents or issues. Incidents can also occur by some other factors as well like testers mistake in test setup. invalid expected results etc. Am incident is any situation in which the software system has a questionable behavior. Quality Assurance ensures that the processes 2. 3. Quality Control ensures that the designed for the product development and final product is error free and services are effective enough to meet the satisfactory. problem. Defect Life Cycle In the figure shown below all the defect reports move through a series of clearly identified states. What is a Bug or Defect While testing when a tester executes the test cases he might observe that the actual test results do not match from the expected results. Quality Control finds product defects. . Quality Assurance focuses on defect prevention. We log these incidents just to keep track of the record of what is observed during the testing so that we can find out the solution to correct it. environment error. 2. Different organisation have different names to describe this variation.

after this defect moves to closed state. 4. If the defect is to be fixed. The tester verifies the fix and closes the defect. 2. Once the defect is assigned to the developer it is fixed by developer and moved to fixed state. If the defect fix does not solve the issue reported by tester. A defect is in open state when the tester finds any variation in the test results during testing. tester re-opens the defect and defect moves to re-opened state. It is then assigned to developer to fix it. after this project team decides when to fix the defect. 3. Now the project team decides whether to fix the defect in that release or to postpone it for future release. 5. It is re-opened in other development cycles and moved to reopened state. It is then approved for re-repair and again assigned to developer. .1. peer tester reviews the defect report and a defect is opened. If the project team defers the defect it is moved to deferred state. 6. If the defect is to be fixed in later releases it is moved to deferred state. after this an e-mail is generated by the defect tracking tool to the tester who reported the defect to verify the fix. 7. a developer is assigned the defect and defect moves to assigned state.

This is known as confirmation Testing or Re-testing Non Functional Testing Non functional testing tests the characteristics of the software like how fast the response is. A subset of planned test cases is decided which covers the main functionality of the software. tester looks for answers to basic questions like. In this sense a smoke test is the process of validating code changes before the changes are checked into the larger production official source code collection or the main branch of source code. but does not bother with finer software component details. A daily build and smoke test is among industry best practices. You need to re-run the failed test cases to make sure that the previous failures are gone. Confirmation Testing or Re-testing Confirmation testing is also known as re-testing. Smoke testing "touches" all areas of the application without getting too deep. or what time does the software takes to perform any operation. You log a defect in bug tracking tool. 2. The test cases can be performed manually or by using an automated tool. Suppose you were testing some software application and you found defects in some component. . Smoke testing is done by testers before accepting a build for further testing. In software engineering. Confirmation Testing is done to make sure that the tests cases which failed in last execution are passing after the defects against those failures are fixed. Developer will fix that defect and provide you with the official testable build. a smoke test generally consists of a collection of tests that can be applied to a newly created or repaired computer program. "Does the application window opens". it has a collection of written tests that are performed on the software prior to being accepted for further testing. For Example: 1. 3. The purpose is to determine whether the application is stable enough so that a more detailed testing can be performed. 4. "Can tester launch the software?" etc.Smoke Testing Smoke testing is done for the software in order to verify that the software is stable enough for further testing. Sometimes the tests are performed by the automated system that builds the final software.

2. Most non-English-speaking customers have operating system in their native language and they .e it detects the problem in interface of the two units. Globalization Testing In the current scenario of the global marketplace. 3.Some examples of Non-Functional Testing are: 1. Integration testing is done after unit testing. 1. it is very important to make software products which are sensitive to the different location and cultural expectations of users around the world. the higher level components are substituted with drivers. There are mainly three approaches to do integration testing. Integration testing identifies the problems that occur when the individual units are combined i. 5. Bottom-up approach • In bottom up approach testing takes place from the bottom of the control flow. 4.e. Example: Integration can start with GUI and the missing components will be substituted by stubs and integration will go on. 2. Performance Testing Load Testing Stress Testing Usability Testing Reliability Testing Non functionality testing focuses on the software's performance i. it follows the architectural structure. Big bang approach • In big bang approach most or all of the developed modules are coupled together to form a complete system and then used for integration testing. How well it works. Top-down Approach • • Top down approach tests the integration from top to bottom. 3. Integration Testing In integration testing the individual tested units are grouped as one and the interface between them is tested.

Globalization is the term used to describe the process of producing software that can be run independent of its geographical and cultural environment. This technique could be called non-execution technique. Dynamic Testing is also known as Dynamic Analysis. There are lot aspects that must be considered when producing globalized software. 4. The software companies which ensure that their software products are easily acceptable in different regions and cultures will definitely gain more market share than the company's which do not focus on globalization. 5. This is done with an eye toward completeness or appropriateness for the task at hand. the term �globalization� will be used to describe both concepts. Informal Reviews Walkthrough Technical Reviews Inspection Static Code Analysis Dynamic Testing Dynamic Testing is used to test the software by executing it. for in the broadest sense of the term. design documents etc. 2. It is primarily syntax checking of the code or manually reviewing the code. static testing involves reviewing requirements and specifications. For simplicity. also they want that the software is available in their native language as well. In dynamic . This is the verification portion of Verification and Validation. 2. 3. Some of the aspects are as follows: 1. The fundamental objective of static testing technique is to improve the quality of the software products by finding errors in early stages of software development life cycle.expect that computer programs will not fail on their computers. to find errors. software is not truly globalized unless it is localized as well. Sensitivity to the English vocabulary Date and time formatting Currency handling Paper sizes for printing Address and telephone number formatting Static Testing Static testing is the form of software testing where you do not execute the code being examined. Localization is the term used to describe the process of customizing the globalized software for a specific environment. Following are the main Static Testing techniques used: 1. requirements documents. From the black box testing point of view. 3. 5. this technique is used to test the dynamic behavior of the code. 4.

3. for example beta testing of Gmail. CPU usage. testers do minimum planning and maximum execution of the software by which they get in depth idea about the software functionality.testing the software should be compiled and executed. input values are given and output values are checked with the expected output. Exploratory testing is mostly used if the requirements are incomplete and time to release the software is less. this analyses the variable quantities like memory usage. response time and overall performance of the software. test execution. Unit Testing Integration Testing System Testing Acceptance Testing Beta Testing 1. 2. Exploratory Testing As the name suggests exploratory testing is about exploring more into the software and finding about the software." Exploratory Testing is mostly performed by skilled testers. In exploratory testing tester focuses more on how the software actually works. . 2. Testing done by the potential or existing users. It is done to acquire feedback from mass market. 5. Beta Testing is done after alpha testing. Dynamic testing involves working with the software. 4. Beta Testing is done for external acceptance testing of COTS(Commercial off the Shelf) software. As per Cem Kaner exploratory testing is "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of his/her work by treating test-related learning. 4. test design. 3. Dynamic testing is the Validation part of Verification and Validation. once the tester starts getting insight into the software he can make decisions to what to test next. It is operation testing i. customers and end users at the external site without developers involvement is know as beta testing. and test result interpretation as mutually supportive activities that run in parallel throughout the project.e. It tests if the software satisfies the business or operational needs of the customers and end users. Some of the Dynamic Testing Techniques are given below: 1.

10. Installer should give option to repair or uninstall. Product Installer should check for the pre-requisites needed for the software. Installation should be successful on all the supported platforms. Try installing the software without administrative privileges. 7. test engineer should keep in mind the following points: 1. 4. 8. 9. also registry entry should get removed. Installer should allow user to change the install location. Product Installer should give user the default install location of the software. .Install Testing Install Testing is done to ensure that the software and its components get installed successfully and function properly post installation. 6. 2. While doing Installation testing. Un-installation should happen successfully and all the installed files should get cleaned up from the install location. 5. Over the network installation should be supported. Silent installation should be successful. 3.Native installation should be successful.

. For example: 1. Solaris pkg files. In error guessing testers can think of situations where software will fail. Native Installation Native installation installs the software application using the OS installation utilities. Pressing submit button on form without filling any entries. Error guessing This is a Test design technique where the experience of a tester is used to find the components of software where defects might be present. user sees a installation screen and provides the installation parameters. silent installation verifies that messages and errors are stored properly in log files. it only uses the testers previous skills. Interoperability Testing Interoperability means the capability of the software to interact with other systems/softwares or software components. As per IEEE Glossary interoperability is: The ability of two or more systems or components to exchange information and to use the information that has been exchanged. AIX installp files) for Linux and Unix platforms is successful. Error guessing has no rules for testing. rpm files. Division by zero 2. Interactive Installation Interactive installation is the GUI installation of software application. Interoperability testing means testing the software to check if it can inter-operate with other software component. It is mostly done by experienced testers who can use their past experience to find defects in software. softwares or systems.Silent Installation Silent installation does not send messages to the console.e. it verifies that the installation of native packages(i. Response files are used for data input in silent installation.

WhiteBox Test Design Techniques Typically Whitebox Test Design Techniques include: 1. We have numbered the code lines just to illustrate the statement coverage example however this may not always be correct. It tests paths within a unit and also flow between units during integration of units. Alpha Testing is mostly done for COTS(Commercial Off the Shelf) software to ensure internal acceptance before moving the software for beta testing. WhiteBox Testing 1. 1. The formula to calculate statement coverage is: Statement Coverage=(Number of statements exercised/Total number of statements)*100 Studies in the software industry have shown that black-box testing may actually achieve only 60% to 75% statement coverage. 3. Alpha Testing Alpha Testing is done to ensure confidence in the product or for internal acceptance testing. alpha testing is done at the developers site by independent test team. READ X . potential end users and stakeholders. 5. 4. 2. 2. It checks what going on inside the software. 3. Requires knowledge of internal code structure and good programming skills. Also Know as clear box Testing. WhiteBox testing tests the structure of the software or software component. Entering wring data in the fields and checking software behavior. Line Coverage or Statement Coverage Decision Coverage Condition Coverage Multiple Condition Decision Coverage Multiple Condition Coverage 1) Statement Coverage or Line Coverage Statement coverage is also known as line coverage. To illustrate the principles of code coverage lets take one pseudo-code which is not specific to any programming language.glass box testing or structural testing. this leaves around 25% to 40% of the statements untested.3. 4.

3.e TRUE and FALSE) of control statement has been executed at least once. READ Y IF X>Y PRINT “X is greater than Y” ENDIF Let us see how can we achieve 100% code coverage for this pseudo-code. 5. 3. A statement can also contain more than one statement. we can have 100% coverage by just one test set in which variable X is always greater than variable Y. a DOWHILE or a CASE statement it is known as decision because in all these statements there are two outcomes. Decision Coverage or Branch Coverage Decision Coverage is also known as Branch Coverage. either TRUE or FALSE. Whenever there are two or more possible exits from the statement like an IF statement. 2. TEST SET 1: X=10. Let us take one example to explain decision coverage: 1. Y=5 A statement may be a single line or it may be spread over several lines. READ X READ Y IF "X > Y" PRINT X is greater that Y . With the loop control statement like DO-WHILE or IF statement the outcome is either TRUE or FALSE and decision coverage ensures that each outcome(i. Alternatively you can say that control statement IF has been evaluated both to TRUE and FALSE. 4. The formula to calculate decision coverage is: Decision Coverage=(Number of decision outcomes executed/Total number of decision outcomes)*100% Research in the industries have shown that even if through functional testing has been done it only achieves 40% to 60% decision coverage. 4.2. Decision coverage is stronger that statement coverage and it requires more test cases to achieve 100% decision coverage. Some code coverage tools group statements that are always executed together in a block and consider them as one statement.

condition coverage ensures whether all the Boolean expressions have been evaluated to both TRUE and FALSE. Y=5 TEST CASE 2: X=2. ENDIF To get 100% statement coverage only one test case is sufficient for this pseudo-code. Y=FALSE TEST 2: X=FALSE. TEST CASE 1: X=10 Y=5 However this test case won't give you 100% decision coverage as the FALSE condition of the IF statement is not exercised. TEST 1: X=TRUE. .5. So the final TEST SET for 100% decision coverage will be: TEST CASE 1: X=10. Y=TRUE Note: 100% condition coverage does not guarantee 100% decision coverage. Condition Coverage or Predicate Coverage Condition coverage is also known as Predicate Coverage Condition coverage is seen for Boolean expression. In order to achieve 100% decision coverage we need to exercise the FALSE condition of the IF statement which will be covered when X is less than Y. Let us take an example to explain Condition Coverage IF ("X && Y") In order to suffice valid condition coverage for this pseudo-code following tests will be sufficient. Y=10 Note: 100% decision coverage guarantees 100% statement coverage but 100% statement coverage does not guarantee 100% decision coverage. Multiple Condition Decision Coverage Multiple Condition Decision Coverage(MCDC) is also known as Modified Condition Decision Coverage.

Example for MCDC if {(X or Y) and Z} then To satisfy condition coverage. Z=FALSE However for MCDC the above test cases are not sufficient because in MCDC each Boolean variable should be evaluated to TRUE and FALSE at least once and also affect the decision outcome. Z=TRUE In test case 3 decision outcome is FALSE In test case 4 decision outcome is TRUE In test case 5 decision outcome is FALSE In test case 6 decision outcome is TRUE So in the above test cases you can see that the change in the value of Boolean variables made a change in decision outcomes. Z=FALSE To satisfy the decision coverage we need to ensure that the IF statement evaluates to TRUE and FALSE at least once. So the test set will be: TEST CASE1: X=TRUE.Y and Z in above statement should be evaluated to TRUE and FALSE at least one time.In MCDC each condition should be evaluated at least once which affects the decision outcome independently. Z=TRUE TEST CASE2: X=FALSE. . Y=TRUE. Y=TRUE. In Multiple Condition Coverage for each decision all the combinations of conditions should be evaluated. So to ensure MCDC we need 4 more test cases. TEST CASE3: X=FALSE. Multiple Condition Coverage Multiple Condition Coverage is also known as Condition Combination Coverage. Z=TRUE TEST CASE2: X=FALSE. Y=FALSE. Y=FALSE. each Boolean expression X. Z=TRUE TEST CASE5: X=FALSE. Y=TRUE. Z=FALSE TEST CASE6: X=TRUE. Z=TRUE TEST CASE4: X=FALSE. Y=TRUE. The TEST CASES for condition coverage will be: TEST CASE1: X=TRUE. Y=FALSE. Y=FALSE.

Similarly there will be 8 test cases for 3 conditions. Or in other words the Test engineer need not know the internal working of the “Black box” or application. so it doesn’t explicitly use Knowledge of the internal structure or code. Tools used for Black Box testing: Black box testing tools are mainly record and playback tools. but it’s still discouraged. System. These tools are used for regression testing that to check whether new build has created any bug in previous working application . BBT advantages. We need to cover majority of test cases so that most of the bugs will get discovered by blackbox testing. So you can say that if there are n conditions.Lets take an example: if (A||B) then print C Here we have 2 Boolean expressions A and B. B=FALSE TEST CASE3: A=FALSE. disadvantages and and How Black box testing is performed i. Behavioral test design is slightly different from black-box test design because the use of internal knowledge isn’t strictly forbidden. Black box testing occurs throughout the software development and Testing life cycle i. Black Box Testing: Types and techniques of BBT I have covered what is White box Testing in previous article. B=TRUE TEST CASE2: A=TRUE. Main focus in black box testing is on functionality of the system as a whole. Black box testing treats the system as a “black-box”.e the black box testing techniques. B=FALSE As you can see that there are 4 test cases for 2 conditions. Majority of the applicationa are tested by black box testing method. there will be 2^n tests.e in Unit. so the test set for Multiple Condition Coverage will be: TEST CASE1: A=TRUE. Integration. The term ‘behavioral testing’ is also used for black box testing and white box testing is also sometimes called ‘structural testing’. Here I will concentrate on Black box testing. Each testing method has its own advantages and disadvantages. B=TRUE TEST CASE4: A=FALSE. There are some bugs that cannot be found using only black box or only white box. Acceptance and regression testing stages.

From this object graph each object relationship is identified and test cases written accordingly to discover the errors.Used to verify contradictions in actual system and the specifications. and error values. Number of variables For n variables: BVA yields 4n + 1 test cases. These record and playback tools records test cases in the form of some scripts like TSL.It is difficult to identify all possible inputs in limited testing time. 2.The test inputs needs to be from large sample space. Min.Chances of having unidentified paths during this testing Methods of Black box Testing: Graph Based Testing Methods: Each and every application is build up of some objects. typical values BVA techniques: 1. Boundary values include maximum. min-1. typical values. Max -1. writing the test cases that cover all the application paths. For this technique there are no specific tools. just inside/outside boundaries. Max +1 3.Tester can be non-technical. Advantages of Black Box Testing .functionality. . Boundary Value Analysis: Many systems have tendency to fail on boundary. Perl. Extends equivalence partitioning Test both sides of each boundary Look at output boundaries for test cases too Test min. Nom. Forces attention to exception handling . max+1. Java script. Kinds of ranges Generalizing ranges depends on the nature or type of variables Advantages of Boundary Value Analysis 1. . . So writing test cases is slow and difficult . Robustness Testing – Boundary Value Analysis plus values that go beyond the limits 2. max. Min – 1. Max. All such objects are identified and graph is prepared. Error Guessing is the art of guessing where errors can be hidden. Boundary Value Analysis (BVA) is a test Functional Testing technique where the extreme boundary values are chosen. So testing boundry values of application is important. Error Guessing: This is purely based on previous experience and judgment of tester. Min +1. VB script.Test cases can be designed as soon as the functional specifications are complete Disadvantages of Black Box Testing . minimum.

org/stgb.softrel. 3. If an input condition is Boolean. one valid and one invalid class is defined. Reference . Comparison Testing: Different independent versions of same software are used to compare to each other for testing in this method. Equivalence Partitioning: Equivalence partitioning is a black box testing method that divides the input domain of a program into classes of data from which test cases can be derived. How is this partitioning performed while testing: 1. one valid and one two invalid classes are defined. one valid and two invalid equivalence classes are defined.Limitations of Boundary Value Analysis Boundary value testing is efficient only for variables of fixed values i. one valid and one invalid equivalence class is defined.http://www. 4.e boundary. If an input condition requires a specific value. If an input condition specifies a range.html . If an input condition specifies a member of a set. 2.

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->