Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 49
Software Engineering-I
SE-401
MUHAMMAD TALHA TAHIR BAJWA
Outline What is Software Testing? Principles of Testing Types of Software Testing Methods of Software Testing Testing Approaches Testing Levels Regression Testing Smoke Testing Stress Testing Load Testing Performance Testing What is Software Testing? Software testing is a process, to evaluate the functionality of a software application with an intent to find whether the developed software met the specified requirements or not. And to identify the defects to ensure that the product is defect free in order to produce the quality product. What is Software Testing? Testing is a process of executing a program with the aim of finding error. To make our software perform well it should be error free. If testing is done successfully it will remove all the errors from the software. Why Software Testing? Some of the reasons why software testing becomes very significant and integral part in the field of information technology are as follows: Cost effectiveness Customer Satisfaction Security Product Quality Principles of Testing All the test should meet the customer requirements. To make our software effective testing should be performed by third party. Exhaustive testing is not possible. As we need the optimal amount of testing based on the risk assessment of the application. All the test to be conducted should be planned before implementing it. Start testing with small parts and extend it to large parts. Software Testing Types
There are two types of software testing:
1. Manual Testing 2. Automation Testing Manual Testing Manual Testing is a process of finding out the defects or bugs in a software program. In this method the tester plays an important role of end user and verifies that all the features of the application are working correctly. The tester manually executes test cases without using any automation tools. The tester prepares a test plan document which describes the detailed and systematic approach to testing of software applications. Manual Testing Test cases are planned to cover almost 100% of the software application. As manual testing involves complete test cases it is a time consuming test. The differences between actual and desired results are treated as defects. The defects are then fixed by the developer of software application. Manual Testing The tester retests the defects to ensure that defects are fixed. The goal of Manual testing is to ensure that application is defect & error free. And is working fine to provide good quality work to customers. Procedure of Manual Testing Automation Testing Automation testing is the process of testing the software using an automation tool to find the defects. In this process, testers execute the test scripts and generate the test results automatically by using automation tools. Automation Testing is used to re-run the test scenarios that were performed manually, quickly, and repeatedly. Some of the famous automation testing tools for are Selenium, Appium, Test Complete, Silk Test etc. Automation Testing What to Automate?
It is not possible to automate everything in a software.
The areas at which a user can make transactions such as the login form or registration forms, any area where large number of users can access the software simultaneously should be automated. Furthermore, all GUI items, connections with databases, field validations, etc. can be efficiently tested by automating the manual process. When to Automate? Test Automation should be used by considering the following aspects of a software: Large and critical projects Projects that require testing the same areas frequently Requirements not changing frequently Stable software with respect to manual testing Availability of time Testing Methods
Two methods are used in software testing:
1. Static Testing 2. Dynamic Testing Static Testing It is also known as Verification in Software Testing. Verification is a static method of checking documents and files. Verification is the process, to ensure that whether we are building the product right. i.e., to verify the requirements which we have and to verify whether we are developing the product accordingly or not. Activities involved here are Inspections, Reviews, Walkthroughs. Dynamic Testing
It is also known as Validation in Software Testing.
Validation is a dynamic process of testing the real product. Validation is the process, whether we are building the right product. i.e., to validate the product which we have developed is right or not. Activities involved in this is Testing the software application. Testing Approaches
There are three types of software testing approaches:
1. White Box Testing 2. Black Box Testing 3. Grey Box Testing White Box Testing It is also called as Glass Box, Clear Box, Structural Testing. White Box Testing is based on applications internal code structure. In white-box testing, an internal perspective of the system, as well as programming skills, are used to design test cases. This testing is usually done at the unit level. Black Box Testing It is also called as Behavioral/Specification-Based/Input-Output Testing. Black Box Testing is a software testing method in which testers evaluate the functionality of the software under test without looking at the internal code structure. Types of Black Box Testing
Two types of Black Box Testing are given below:
1. Functional Testing 2. Non-functional Testing Functional Testing In simple words, what the system actually does is functional testing. To verify that each function of the software application behaves as specified in the requirement document. Testing all the functionalities by providing appropriate input to verify whether the actual output is matching the expected output or not. It falls within the scope of black box testing and the testers need not concern about the source code of the application. Non-functional Testing In simple words, how well the system performs is non- functionality testing. Non-functional testing refers to various aspects of the software such as performance, load, stress, scalability, security, compatibility etc. Main focus is to improve the user experience on how fast the system responds to a request. Gray Box Testing Grey box is the combination of both White Box and Black Box Testing. The tester who works on this type of testing needs to have access to design documents. This helps to create better test cases in this process. Testing Levels
There are four levels of testing
1. Unit Testing 2. Integration Testing 3. System Testing 4. Acceptance Testing Unit Testing Unit Testing is done to check whether the individual modules of the source code are working properly. i.e. testing each and every unit of the application separately by the developer in the developer’s environment. The goal of unit testing is to isolate each part of the program and show that individual parts are correct in terms of requirements and functionality. Integration Testing Integration testing is defined as the testing of combined parts of an application to determine if they function correctly. OR Integration testing is testing in which a group of components are combined to produce output. Approaches/Methodologies/Strategies of Integration Testing
Software Engineering defines variety of strategies to
execute Integration testing. 1. Big Bang Approach 2. Incremental Approach: which is further divided into the following Top Down Approach Bottom Up Approach Sandwich Approach - Combination of Top Down and Bottom Up Big Bang Approach Here all component are integrated together at once and then tested. Convenient for small systems. Fault Localization is difficult. Given the sheer number of interfaces that need to be tested in this approach, some interfaces link to be tested could be missed easily. Since the Integration testing can commence only after "all" the modules are designed, the testing team will have less time for execution in the testing phase. Since all modules are tested at once, high-risk critical modules are not isolated and tested on priority. Incremental Approach In this approach, testing is done by joining two or more modules that are logically related. Then the other related modules are added and tested for the proper functioning. The process continues until all of the modules are joined and tested successfully. What is Stub and Driver? Incremental Approach is carried out by using dummy programs called Stubs and Drivers. Stubs and Drivers do not implement the entire programming logic of the software module but just simulate data communication with the calling module. Stub: Is called by the Module under Test. Driver: Calls the Module to be tested. Bottom-up Integration In the bottom-up strategy, each module at lower levels is tested with higher modules until all modules are tested. It takes help of Drivers for testing. Fault localization is easier. No time is wasted waiting for all modules to be developed unlike Big-bang approach. Critical modules (at the top level of software architecture) which control the flow of application are tested last and may be prone to defects. Top-down Integration In Top to down approach, testing takes place from top to down following the control flow of the software system. Takes help of stubs for testing. Fault Localization is easier. Critical Modules are tested on priority; major design flaws could be found and fixed first. Hybrid/Sandwich Integration
In the sandwich/hybrid strategy is a combination of Top
Down and Bottom up approaches. Here, top modules are tested with lower modules at the same time lower modules are integrated with top modules and tested. This strategy makes use of stubs as well as drivers. System Testing System testing tests the system as a whole. Once all the components are integrated, the application as a whole is tested rigorously to see that it meets the specified Quality Standards. This type of testing is performed by a specialized testing team. System testing is important because of the following reasons System Testing System testing is the first step in the Software Development Life Cycle, where the application is tested as a whole. The application is tested thoroughly to verify that it meets the functional and technical specifications. The application is tested in an environment that is very close to the production environment where the application will be deployed. System testing enables us to test, verify, and validate both the business requirements as well as the application architecture. Acceptance Testing To obtain customer sign-off so that software can be delivered and payments received. Types of Acceptance Testing are: 1. Alpha Testing 2. Beta Testing 3. Gamma Testing Alpha Testing This is a type of validation testing. It is a type of acceptance testing which is done before the product is released to customers. It is typically done by QA people. Example: When software testing is performed internally within the organization. Beta Testing The beta test is conducted at one or more customer sites by the end-user of the software. This version is released for the limited number of users for testing in real time environment. Example: When software testing is performed for limited number of peoples. Gamma Testing Gamma Testing is done when software is ready for release with specified requirements, this testing done directly by skipping all the in-house testing activities. The software is almost ready for final release. Gamma testing is the third level of testing, generally for safety. Regression Testing Every time new module is added leads to changes in program. This type of testing make sure that whole component works properly even after adding components to the complete program. Example: In school record suppose we have module staff, students and finance combining these modules and checking if on integration these module works fine is regression testing Smoke Testing This test is done to make sure that software under testing is ready or stable for further testing. Example: If project has 2 modules so before going to module 2 make sure that module 1 works properly. Stress Testing In this we gives unfavorable conditions to the system and check how they perform in those condition. Example: Test cases that require maximum memory or other resources are executed. Test cases that may cause excessive disk requirement. Load Testing Load testing is the process that simulates actual user load on any application or website. It checks how the application behaves during normal and high loads. This type of testing is applied when a development project nears to its completion. Performance Testing
Performance testing is a type of testing for
determining the speed of a computer, network or device. It checks the performance of the components of a system by passing different parameters in different load scenarios.