go site The test cases are written in a stepwise approach by the Quality assurance team. This is later reviewed by the business analyst and certain modifications are also done if necessary. After the confirmation of test cases, the Quality Assurance team creates the test data on the basis of preconditions.
The entry criteria for the Test case development phase is:. The deliverables associated with the Test case development phase are:. This phase consists of setting the environment for testing. It is a very important part of the Software Testing Life cycle. The test environment defines the conditions on which the software will be tested. This is an independent activity; therefore, it can go parallel with the Test Case development phase. The test environment varies from company to company, in some cases, the company developer sets up the testing environment while in others, the customer sets up the test environment.
In any case, the test team does not participate in creating the test environment. This is because the test team can create a test environment which will be favorable to the software and to the organization, but the customer sets up the test environment according to their needs and requirements which is the ultimate goal. While the test environment is being -prepared by the customer or the developer, the testing team prepares for smoke testing. The smoke testing is performed to validate the test environment, it checks the readiness and stability of the test environment.
The entry criteria for the Test environment setup phase are:. Analyzing the requirements and preparing the list of required hardware and software in order to set up the test environment. Executing the Smoke test after the completion of the Test environment set up to validate the readiness and stability of the test environment. After developing the test case and creating the test environment he only thing left is executing the tests. In this phase, the test cases are executed by the testing team on the basis of test cases and test planning which is prepared in the previous phases namely the Test planning phase and the test case development phase.
The test cases which are passed are marked accordingly. When a test case fails, its corresponding defect or bug is reported to the team of developers using a bug tracking system. These bugs can also be linked to a corresponding test case for later usage. In an ideal case, a bug is associated with every failed test case. Some test cases are marked as Blocked due to some defect. A report is created in which the number of passed, blocker, failed or not run etc. Marking the status after executing the test cases like failed, passed, blocked or not run etc.
The deliverables associated with the test execution phase are:. This is just the phase where the evaluation of the whole cycle takes place. The members of the testing team evaluate the criteria of the cycle completion in the basis of Quality, Test coverage, Time, Software, Cost, and crucial business objectives. The team also discusses all the things which went well and the areas which need some improvement in the Software testing life cycle process.
The bug and test case report will be used to analyze and find out the distribution of defects by severity and type. After the completion of the test cycle, the test metrics and test closure reports will be prepared. The deliverables associated with the test cycle closure are:. As we have discussed above there are many challenges in the Software Testing Life Cycle, but they can be overcome using the best practices that are available. Best practices in Software testing includes maintaining the test effort well-organized test efforts with well-defined systems and processes in place.
To avoid challenges in the implementation of the testing process, the organization adopt the following popular practices:. The testing activities are started early in the Software Testing Life Cycle: This is kind of an unspoken rule. By testing early, the bugs are also detected early and can be removed in the early stages as well thus reducing the cost.
Performing iterative tests: The software testing should be performed in iterations. It reduces the number of problems as we progress into the life cycle. Reusing the test assets and improving the time spent with every subsequent cycle: Recycling and reusing of the test automation objects and test procedures enhance the efficiency and quality of the product. A lot of effort and time is can also be saved using this strategy. Utilizing the testing and its strategies on the basis of requirements: Different types of requirements will need different testing so if we employ only those tests which is required and rest of the test which are redundant are removed, then a lot of resources and time can be saved, and the testing process will be more efficient.
The Software Testing Life Cycle is limited to test for ensuring the quality of the product or the software while SDLC has a very vast and key role in the complete development of a product or software. The product cannot be commercialized or released without undergoing the SDLC phase. The bug life cycle is also known as the Defect life cycle. It describes all the set of states in which a bug or a defect goes through from the discovery to the defect fixation. The number of states that a bug goes through depends from project to project.
In short first, the bug is detected and then a value is assigned to it and then it is sent to the project manager for analysis. The project manager decides the status of the bug and that bug is processed according to the status assigned by the project manager. The following image will show the complete Bug life cycle. In this article, we learned that software testing is necessary as it ensures the reliability of the product and the organizations. The Software Testing Life Cycle process can adopt 4 different methodologies or models namely the agile model, the waterfall model, the V model, and the spiral model.
There are certain advantages and disadvantages to each of these methodologies. The waterfall model is the earliest method introduced for software testing. Both the V model and the waterfall model works like a waterfall in a downward direction. The phases involved in both of these do not interrupt with each other and the next phase starts after the completion of the previous phase. While in the agile model prolonged iterations of testing and developments take place across the whole Software Testing Life Cycle.
While the spiral model is used for larger projects which involve higher risk management. In the Spiral model, a particular activity is done in one single iteration called a spiral. Each phase contains its own entry criteria, activities, and deliverables. In the requirement analysis phase, the requirement of the customer is specified by the customer. In the test planning phase, a plan is prepared for testing the software and executing the test cases. In the test case development phase, the test cases are created and then in the test environment phase, the environment is created in which the software will be tested.
In the test execution phase, the test cases are executed according to the plan prepared in the test planning phase and the software is tested in the test environment. At last, in the test cycle closure, all the members of the testing team discuss the positives and negatives of the whole process and write the factors which need to be improved. And in the end, we saw the bug life cycle which involves all the states through which the bug goes through after being detected. What it is offshore outsourcing and what makes offshore outsourcing a concrete measure for all businesses?
In the article we want to explain how Apphawks as a Software Testing Services Company work and how we manage the QA process with our clients.
The testing of an E-commerce application or your online shopping platform is defined as Ecommerce testing. Read how should be performed. Skip to content. What is the Software Testing Life Cycle? The agile model for software testing focuses on four main values: It collaborates with the customer rather than contract negotiations. It involves both team and individual interaction over tools and processes. It allows responding to certain changes rather than following a particular plan. It emphasizes working software rather than comprehensive documentation.
Some of the features of the Agile model are: In the agile model, the processes are broken into various individual models so that developers can work on them separately. It proposes an iterative and incremental approach for software testing and software development. It allows the customer to have an early look on the project and make frequent decisions and changes to it. The agile methodology is considered somewhat unstructured model when compared to the rest of the models. The bugs, errors or the defects can be fixed in between the testing process.
It involves less planning and the project, or the testing process is executed within iterations of a short period of time 2—4 weeks. In an agile model, documentation is given less priority than the software testing and software developing processes. In Agile testing, the developers and testers work together. After completion of every iteration, acceptance from the user is performed. The agile model works better when the organization or the company have positive contact with the customer.
Phases involved in the Waterfall model The waterfall model is easy to understand and simple to implement but it is not as useful as it was before. The main advantages of using waterfall model are: It has a review process and specific deliverables for each phase. The phases are executed one at a time and no overlapping takes place. It works well for those projects where the requirements are well understood and do not change throughout the process. Some of the disadvantages of the waterfall method are: It does not show good results for projects that are long.
It comes with a high amount of uncertainty and risk. It works poorly for the projects in-which there is a moderate or high risk of requirement changes. It works poorly for the projects which are object-oriented and complex. If the scope is adjusted during the life cycle then the whole project can be killed.
The working software is created in the late stages of the life cycle. From the above discussion of advantages and disadvantages of the waterfall model, it is very well clear that the waterfall model can be used in: 1. V Model The waterfall model is an old and outdated model which has many disadvantages and limitations.
Different Phases involved in the V Model The advantages of the V-model are similar to that of the waterfall model. It is easy to understand and simple to use. Its simplicity makes it even easier to manage. No overlapping of phases takes place. Works very well for projects where the requirements are well understood like in smaller projects. It has a specific review process and deliverables for each phase. The disadvantages of V-model are: High uncertainty and risk. Not good for projects that are object-oriented and complex. Not good for long projects.
Not good for the projects where there is a moderate or high chance of requirement changes throughout the process. Spiral Model In the above two models, the V model and the waterfall model are good only for smaller projects where the requirements are very well specified. Phases involved in the Spiral Model The advantages of the Spiral model are: It allows the usage of prototypes extensively.
It allows the accommodation for the required changes, unlike the last two models where the requirements should be specified very clearly and should not change throughout the process. It allows the users to check the system very early. More accurate capturing of requirements. It allows dividing the development process into smaller parts so that the parts which are riskier can be developed earlier which leads to better and precise risk management.
The process involved is also complex. The date on which the project will be finished cannot be known early. Not suitable for projects involving low risk because it can be expensive and redundant for them. The spiral iteration can go on indefinitely. It needs excessive documentation because of many intermediate stages.
It involves six different phases: Requirement Analysis Test Planning Test Case development Test environment setup Test Execution Test Cycle closure Each of the phases involves different entry criteria and exit criteria. The entry criteria in the Requirement analysis phase are: The following documents have to be available: Requirement Specification and Application Architectural. The acceptance criteria need to be well defined along with the availability of the above documents. Some of the Activities involved in this phase are: 1.
Defining the testing priorities and focus.
The Deliverables which is associated with this phase are: 1. Report on Automation feasibility if it is required. The Entry Criteria for the Test planning phase is: Requirements documents the updated version of missing or unclear requirements. Report on automation criteria should be available. The activities associated with the Test Planning phase are: 1. Defining the scope and objective of the experiment. Listing the types of testing associated with the Software Testing Life Cycle. The estimation of test effort and planning for resources. Selecting the tools for testing if required.
Defining the overview of the testing process. Preparing the schedules for the test. Defining the environment for the test required for the entire project. Determining responsibilities and roles. Listing the deliverables of the testing. Defining the risk associated if any. Defining the suspension criteria, exit criteria, resumption criteria, and entry criteria.
The deliverables in the test planning phase are: 1. Test Strategy or Test Plan document. Document for the estimation of the Testing efforts. The entry criteria for the Test case development phase is: The requirements documents the updated version of missing or unclear requirement. The report on Automation feasibility. The Activities involved in the Test case development phase are: 1. Preparing the test cases. This code should not have any component level defects. Once components have been tested individually, these are then integrated and tested. This is called Integration testing, where software components, hardware components, or both are combined and tested to evaluate their interactions.
Testers perform integration testing with formal defect management mechanisms. At this stage, the testers concentrate only on integration. For example, if they integrate Component A and B, they are interested in testing the communication between A and B and not the functionality of the individual modules.
Both functional and structural approaches can be used to conduct integration testing. In the next section, we will understand the strategies to perform integration testing. The Top-Down approach to integration testing requires the highest-level modules to be tested and integrated first.
This allows early testing of high-level logic and data flow in the process and tends to minimize the need for drivers.
However, the need for stubs complicates test management, and low-level utilities are tested in the development cycle later. Another disadvantage is its poor support for the early release of limited functionality. The Bottom-Up approach requires the lowest-level units or utility modules to be tested and integrated first. Through this approach, utility modules are tested early in the development process, and the need for stubs is minimized.
However, the need for drivers complicates test management. The high-level logic and the data flow are tested later. Similar to the top-down approach, this approach also provides inadequate support for the early release of limited functionality. The third approach Big Bang, or umbrella approach, requires testing functional data and control flow paths. First, functions inputs are integrated into the bottom-up pattern.
Each function outputs are then embedded in a top-down manner. The primary advantage of this approach is the degree of support for the early release of limited functionality. It also helps in minimizing the need for stubs and drivers. Let us understand the difference between component and system integration testing, in the next section. Logically, Component Integration Testing is an extension of Component testing, where, two already tested components or units are combined into a component, and the interface between them is tested.
Integration testing identifies problems that occur when units are combined. This is typically carried out after Component Testing. This is generally carried out after Component Testing. System integration testing tests the interactions between different systems or between the hardware and the system. This form of testing tests the software system or application as a whole. This is typically carried out after System Testing. In the next section, we will discuss the inputs, test objects, and outputs of integration testing.
Once the integration testing has been performed, the system is subjected to end-to-end or system testing. System testing is done on application software to evaluate its overall compliance with the business, functional, or end-user requirements. Hence the knowledge of internal design, structure, or code is not required. It is usually carried out by an independent testing team and aims to detect defects or bugs both within the interfaces, and the software.
During system testing, the focus is on the software design, behavior, and expectations of the customer. System testing will include both functional and non-functional requirements such as performance, usability, and security. The test environment for system testing should correspond as closely as possible to a production environment, to minimize the risk of not finding environment specific failures in testing.
In the next section, we will discuss the inputs, test objects, and outputs of system testing. Once the application is ready to be released, the crucial step is acceptance testing before the software is released commercially. To ensure sufficient acceptance testing, test cases are created which validates the end-to-end business process, system transactions, and user access. The primary focus is on the exact real-world usage of the application and testing is done in a similar environment that simulates the production environment. Alpha testing is done at the software development site.
This differs from system testing and is tested in a simulated production environment. In the next section, we will discuss the inputs, test objects, and outputs of acceptance testing.
In the component testing stage, the developers are focused on independently testing each component under development. For example, searching a contact, calling the contact, disconnecting the phone in between, sending a message to the contact, and copying the contact information to an internet browser. During this stage, the OS is handed to live users to test and report.
Functional testing is considered as Black Box testing as the software is tested based on functional requirements. Here, the internal structure of the software is not considered. However, they should understand the functional requirements expected to be met by the tested system. Here, functions or modules are tested by giving different input data, and the output is compared to the expected results of business requirements. These tests verify whether the system is behaving as intended. Functional testing mainly involves identifying the functionalities to be tested, preparing the test data, documenting the expected result, executing the planned test case, comparing the actual result with the expected result, and reporting the deviation, if any.
Functional test cases can also be automated to execute them constantly with different data sets. In unit testing, the developer will test their developed code against the functional requirements. Smoke or Sanity testing is the first type of testing done once the code is deployed in the test environment. These tests are done to ensure the software does not have any showstopper defects and are available for the tester. Here, tester tests the functionality and compares it with the functional requirement document.
Integration Testing includes testing the requirements along with a few technical aspects. Non-functional requirements are often referred to as qualities of a system. They include all the behavioral requirements not defined in functional requirements such as performance, and stability of the application. These requirements are not directly related to the business functionally, however, are essential to maintaining the system. Non-functional testing can be performed at all levels. A non-functional requirement of the delete functionality might include a soft delete as the data, though the employee is no longer associated with the company.
If a record is soft deleted and a user tries to add it again, a message is displayed informing that the record already exists. However, the record cannot be viewed in the interface as the status is changed in the backend. Non-Functional testing depends on the needs of the specific organization and the customer. The names of many non-functional tests are often used interchangeably due to the overlap in scope between various non-functional requirements.
For example, software performance is a broad term that includes many specific requirements like reliability and scalability. Performance Testing measures the performance of the system regarding response time, ability to handle the number of users and so on. Load Testing tests the amount of load a system is able to handle without hampering the response time.
Stress Testing involves testing the system behavior beyond normal operational conditions. Security Testing tests how secure the system is to ensure the system cannot be hacked, or user information is not leaked. In an online banking software, the functional testing includes testing whether the funds are transferred accurately, if interest calculations are correct, and if bill payments are made on time.
Non-functional testing focus on the security of the system, to ensure all access is safe. It will ensure that the system can handle the load especially during peak time like the start of the month when there are salary disbursements and payments. Structural testing is also referred to as White Box testing, where the testers are required to know the internal implementations of the code.
During structural testing, the focus is to test how the code in the software is functioning. For example, a structural technique would check how the loops in the software are working. Different test cases may be derived to exercise each loop once, twice, thrice and so on. This may be done regardless of the functionality of the software. Structural testing is a phased process, which requires work on test data, followed by simulation of the test environment, execution of the prepared cases, verification of code coverage, and the final evaluation of test results, leading to the structural test report.
An extensive structure based examination; studies the decisions made by the program, design logic, and source code. Structural testing can be performed at all levels. Tools can also be used to measure the code coverage. Developers use structural testing in component testing and component integration testing. Structural testing is also used in a system and acceptance testing, however, the structures are different.
For example, the coverage of menu options or major business transactions could be the structural element in the system or acceptance testing. Re-testing is repeatedly testing the same functionality with different sets of input data. Whenever a tester finds a defect and a developer fixes it, the tester needs to retest the functionality. Regression Testing is re-executing the same test case whenever the code is modified, or some new functionality is added to it, to ensure no further defects have been introduced. The extent of regression testing is determined based on the risks of the system.
Test cases selected for regression testing should be repeatable. In most cases, regression testing is conducted using automated tests, which will enable testers to increase test coverage during regression testing. Both re-testing and regression testing can be performed at all levels and can include both functional and non-functional testing objectives. In most of the cases, Regression testing needs more effort than retesting and retesting is almost followed by regression testing. There are test cases to be executed in the first build, and after executing test cases, 90 passes and 10 fail.
After the bugs are fixed and when the second build is released for testing, the tester first conducts re-testing. They test the 10 test cases that had failed earlier. Once the tests have passed, the tester conducts regression testing which executes all the previously passed 90 test cases or few selected ones from the 90 based on calculated risk. This is done to ensure that while fixing the 10 failed tests, any changes made to the system did not impact the already running functionality. Software maintenance is a modification of software product after delivery, to correct faults, and improve the performance or any other attributes.
It is a common perception of maintenance that it merely involves fixing defects. This perception is propagated by users submitting problem reports that in reality are functionality enhancements to the system. Ensuring any such maintenance activities are carried out as expected is called maintenance testing. This should be carried out before deploying fixes or enhancements to the system into production. In the next section, we will discuss the importance of maintenance testing.
Whenever a user needs some new features in the existing software which requires modifications to be done, it needs to be tested for functional and non-functional aspects. Regression testing should also be carried out to ensure the existing features are working as expected. Maintenance testing is also required when the software is switched to another latest hardware platform, or the environment is changed to a new operating system version and Database version.
In this context, maintenance testing involves testing the whole application on new platforms and environment. Most of the systems do not have solitary existence. Instead, they interact with many products, systems, networks, and interfaces. The retirement of any link in this chain will again necessitate the need for maintenance testing the products to ensure it still works as expected.
Sometimes, this may impose some changes in the interface. So, functional and non-functional testing needs to be performed as part of maintenance testing. When making changes to the existing system, maintenance testing should be performed on the software, to reduce the risk of failure while operating and this is termed as Preventive Maintenance Testing. Sometimes, the software may behave unpredictably due to unknown issues. Once these issues are resolved, maintenance testing is required to ensure no new issues have been introduced.
This form of testing is called Corrective Testing. Enhancements and testing the enhancements to improve the safety, reliability, efficiency, or cost-effectiveness of operation is termed as Perfective Maintenance Testing. There are many times when you have to adapt the system to address requirements that arise due to changes in the environment or new regulations. Testing environmental or new regulation changes and ensuring they meet the new requirements is adaptation maintenance testing.
This book provides a step by step guide to all the processes, goals, inputs, outputs and many other aspects of a repeatable software methodology for ANY. The Software Development Lifecycle - A Complete Guide Richard Murch. This book provides a step by step guide to all the processes, goals, inputs, outputs and.
Let us understand how maintenance testing is different from new application testing, in the next section. Curious about the CTFL course? Watch our Course Preview for free! With this, we have reached the end of the chapter. Let us now check your understanding of the topics covered in this chapter. Software development process is divided into several logical stages which allows the company to organize its work efficiently to build a product of the required functionality within a specific time frame and budget. The different levels of testing include component, integration, system, and acceptance testing.
Resources Corporate Training Higher Education. Objectives After completing this chapter, you will be able to: Explain the importance of software development models, Identify the different levels of testing, Explain the important types of testing Distinguish between maintenance testing and new application testing. Product Lifecycle Management Product Lifecycle Management or PLM is a process of managing the entire lifecycle of a product from requirements, through design and manufacture, to service and disposal.
Let us focus on the product lifecycle, in the next section. Product Lifecycle The four product lifecycle phases are Introduction Growth Maturity Decline Introduction phase Introduction phase is where the product is developed and launched into the market.