Software Testing & Maintenance Module 4 PDF

Summary

This document presents a module on software testing and maintenance. It covers a variety of topics including software testing introduction, validation, and verification, along with testing documentation and software maintenance. The topics are organized in an easy-to-understand format and should help students learn how to conduct software testing and handle software maintenance effectively.

Full Transcript

MODULE 4: SOFTWARE TESTING & MAINTENANCE By: Jocelyn I. Ancheta TOPICS INCLUDED 01 Software Testing Introduction 02 Software Validation and Verification 03 Testing Documentation 04 Software Maintenance Learning Outcomes 1. D...

MODULE 4: SOFTWARE TESTING & MAINTENANCE By: Jocelyn I. Ancheta TOPICS INCLUDED 01 Software Testing Introduction 02 Software Validation and Verification 03 Testing Documentation 04 Software Maintenance Learning Outcomes 1. Define software testing. 2. Differentiate between software verification and validation 3. Implement testing documentation of project/software development 4. Handle Software Maintenance UNIT 1 Software Testing Introduction What is Software Testing? Software Testing is a process of identifying the correctness of software by considering its all attributes (Reliability, Scalability, Portability, Re-usability, Usability) and evaluating the execution of software components to find the software bugs or errors or defects. Software Testing provides an independent view and objective of the software and gives surety of fitness of the software. It involves testing of all components under the required services to confirm whether it is satisfying the specified requirements or not. Software Testing is the evaluation of the software against requirements gathered from users and system specifications. Software Testing Testing is mandatory because it will be a dangerous situation if the software fails any of time due to lack of testing. So, without testing software cannot be deployed to the end user. Importance of Software Testing If there are any bugs or errors in the software, it can be identified early and can be solved before delivery of the software product. Importance of Software Testing Properly tested software product ensures reliability, security and high performance which further results in time saving, cost effectiveness and customer satisfaction. History Examples: Nissan cars recalled over 1 million cars from the market due to software failure in the airbag sensory detectors. There has been reported two accident due to this software failure. Starbucks was forced to close about 60% of stores in the U.S and Canada due to software failure in its POS system. At one point, the store served coffee for free as they were unable to process the transaction. History Examples: Some of Amazon’s third-party retailers saw their product prices reduced due to a software glitch. They were left with heavy losses. Vulnerability in Windows 10. This bug enables users to escape from security sandboxes through a flaw in the win32k system. History Examples: China Airlines Airbus A300 crashed due to a software bug on April 26, 1994, killing 264 innocents live. In April of 1999, a software bug caused the failure of a $1.2 billion military satellite launch, the costliest accident in history In May of 1996, a software bug caused the bank accounts of 823 customers of a major U.S. bank to be credited with 920 million US dollars. Benefits of Software Testing Cost-Effective Security It is one of the important advantages of It is the most vulnerable and sensitive benefit of software testing. Testing any IT project on software testing. People are looking for trusted time helps you to save your money for the products. It helps in removing risks and long term. In case if the bugs caught in the problems earlier. earlier stage of software testing, it costs less to fix. Testing Product quality Customer Satisfaction It is an essential requirement of any The main aim of any product is to give software product. Testing ensures a quality satisfaction to their customers. UI/UX Testing product is delivered to customers. ensures the best user experience. Types of Software Testing Types of Software Testing Testing Category Types of Testing Functional Testing Unit Testing Integration Testing Smoke UAT ( User Acceptance Testing) Localization Globalization Interoperability So on.. Non-Functional Testing Performance Endurance Load Volume Scalability Usability So on.. Maintenance Regression Maintenance UNIT 2: Software Verification and Validation Software Verification Verification is the process of confirming if the software is meeting the business requirements, and is developed adhering to the proper specifications and methodologies. Ensuring that the software meets the specified requirements, design, and functionality. Software Validation Validation is process of examining whether or not the software satisfies the user requirements. It is carried out at the end of the SDLC. If the software matches requirements for which it was made, it is validated. Ensures that the software meets the user's expectations, needs, and requirements. VERIFICATION VALIDATION Focus focuses on the software's focuses on the software's internal consistency and external behavior and user adherence to specifications needs. Purpose ensures the software is ensures the software is useful built correctly, and effective. Timing occurs during the occurs during the testing and development phase deployment phases. Scope covers the entire software focuses on the final product's development life cycle functionality and usability. Example: Unit testing, integration User acceptance testing, testing, code reviews usability testing, beta testing ❑ Verification: "Does the software meet the requirements?“ ❑ Validation: "Does the software solve the real-world problem?" To illustrate the difference: Imagine building a house. - Verification: Checking that the house is built according to the blueprint (correct construction). - Validation: Checking that the house meets the homeowner's needs and expectations (correct solution). Target of the test are: ❑ Errors - These are actual coding mistakes made by developers. In addition, there is a difference in output of software and desired output, is considered as an error. ❑ Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an error which can cause system to fail. ❑ Failure - failure is said to be the inability of the system to perform the desired task. Failure occurs when fault exists in the system. Manual Vs Automated Testing ❑ Manual - This testing is performed without taking help of automated testing tools. The software tester prepares test cases for different sections and levels of the code, executes the tests and reports the result to the manager. ❑ Automated - This testing is a testing procedure done with aid of automated testing tools. The limitations with manual testing can be overcome using automated test tools. Testing Approaches Tests can be conducted based on two approaches: ❑ Functionality testing ❑ Implementation testing Testing Approaches When functionality is being tested without taking the actual implementation in concern it is known as black-box testing. The other side is known as white-box testing where not only functionality is tested but the way it is implemented is also analyzed. Black-Box Testing It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case, has a set of input values and respective desired results. On providing input, if the output matches with the desired results, the program is tested ‘ok’, and problematic otherwise. Black-Box Testing Black-Box Testing In this testing method, the design and structure of the code are not known to the tester, and testing engineers and end users conduct this test on the software. Black-Box Testing Techniques ❑ Equivalence class - The input is divided into similar classes. If one element of a class passes the test, it is assumed that all the class is passed. ❑ Boundary values - The input is divided into higher and lower end values. If these values pass the test, it is assumed that all values in between may pass too. Black-Box Testing ❑ Cause-effect graphing - In both previous methods, only one input value at a time is tested. Cause (input) – Effect (output) is a testing technique where combinations of input values are tested in a systematic way. ❑ Pair-wise Testing - The behavior of software depends on multiple parameters. In pairwise testing, the multiple parameters are tested pair-wise for their different values. Black-Box Testing ❑ State-based Testing - The system changes state on provision of input. These systems are tested based on their states and input. Example: Testers can provide positive and negative input test values and record the system behavior. State-Based Testing State-Based Testing State-Based Testing White-Box Testing It is conducted to test program and its implementation, in order to improve code efficiency or structure. It is also known as ‘Structural’ testing. In this testing method, the design and structure of the code are known to the tester. Programmers of the code conduct this test on the code. White-Box Testing White-Box Testing Techniques ❑ Control-flow testing - The purpose of the control-flow testing to set up test cases which covers all statements and branch conditions. The branch conditions are tested for both being true and false, so that all statements can be covered. White-Box Testing Techniques ❑ Data-flow testing - This testing technique emphasis to cover all the data variables included in the program. It tests where the variables were declared and defined and where they were used or changed. TESTING LEVELS Testing itself may be defined at various levels of SDLC. The testing process runs parallel to software development. Before jumping on the next stage, a stage is tested, validated and verified. Testing separately is done just to make sure that there are no hidden bugs or issues left in the software. Software is tested on various levels. Unit Testing ❑ While coding, the programmer performs some tests on that unit of program to know if it is error free. Testing is performed under white-box testing approach. Unit testing helps developers decide that individual units of the program are working as per requirement and are error free. Unit Testing ❑ 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 ❑ Even if the units of software are working fine individually, there is a need to find out if the units if integrated together would also work without errors. For example, argument passing and data updating etc. Integration Testing Integration testing can be done in two ways: Bottom-up integration testing and Top-down integration testing. ❑ Bottom-up integration This testing begins with unit testing, followed by tests of progressively higher-level combinations of units called modules or builds. ❑ Top-down integration In this testing, the highest-level modules are tested first and progressively, lower-level modules are tested thereafter. Integration Testing In a comprehensive software development environment, bottom-up testing is usually done first, followed by top-down testing. The process concludes with multiple tests of the complete application, preferably in scenarios designed to mimic actual situations. System Testing The software is compiled as product and then it is tested as a whole. This can be accomplished using one or more of the following tests: ❑ Functionality testing - Tests all functionalities of the software against the requirement. System Testing ❑ Performance testing - This test proves how efficient the software is. It tests the effectiveness and average time taken by the software to do desired task. It is done by means of load testing and stress testing where the software is put under high user and data load under various environment conditions. ❑ Security & Portability - These tests are done when the software is meant to work on various platforms and accessed by number of persons. Acceptance Testing When the software is ready to hand over to the customer it has to go through last phase of testing where it is tested for user-interaction and response. This is important because even if the software matches all user requirements and if user does not like the way it appears or works, it may be rejected. Acceptance Testing ❑ Alpha testing - The team of developer themselves perform alpha testing by using the system as if it is being used in work environment. They try to find out how user would react to some action in software and how the system should respond to inputs. ❑ Beta testing - After the software is tested internally, it is handed over to the users to use it under their production environment only for testing purpose. This is not as yet the delivered product. Developers expect that users at this stage will bring minute problems, which were skipped to attend. Regression Testing ❑ Whenever a software product is updated with new code, feature or functionality, it is tested thoroughly to detect if there is any negative impact of the added code. This is known as regression testing. Module 4 Exercise #1: ❑ 1. Group work. Conduct a test documentation of your project by following what you have learned in different stages. Make sure all members will work and cooperate in the activity. ❑ Kindly visit the link for your reference (https://www.softwaretestinghelp.com/test-case- template-examples/) ❑ Also, follow the below details and submit next meeting. ❑ Paper: Short Bond Paper ❑ Font Style: Trebuchet MS ❑ Font size: 12 ❑ Heading/Title: 14 in Bold THANK YOU GOD BLESS

Use Quizgecko on...
Browser
Browser