Document Details
Uploaded by GenialThunderstorm
University of Benghazi
Tags
Full Transcript
Course: Software Testing Lecture 1 تحضير د.سلوى العقيلي تقديم أ.هدى مفتاح بوحلفاية Introduction Software is a key ingredient in many of the devices and systems that pervade our society. Software testing is the process of checking the quality, function...
Course: Software Testing Lecture 1 تحضير د.سلوى العقيلي تقديم أ.هدى مفتاح بوحلفاية Introduction Software is a key ingredient in many of the devices and systems that pervade our society. Software testing is the process of checking the quality, functionality, and performance of a software product before launching. To do software testing, testers either interact with the software manually or execute test scripts to find bugs and errors, ensuring that the software works as expected. Software testing is also done to see if business logic is fulfilled, or if there are any missing gaps in requirements that need immediate tackles. Software is an essential component of embedded applications such as: airplanes, air traffic control systems, watches, ovens, cars, DVD players, garage door openers, cell phones, and remote controllers. Testing is method that the industry uses to evaluate software under development. Testing is the process of executing a program with the intent of finding faults (bugs) Software testing is a crucial part of the software development life cycle. Without it, app-breaking bugs that can negatively impact the bottom-line may go undetected. According to ANSI/IEEE 1059 standard, Testing can be defined as - A process of analyzing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item. 1 Why Software Testing is Important? Software Testing is Important because 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. Properly tested software product ensures reliability, security and high performance which further results in time saving, cost effectiveness and customer satisfaction. The road of software development is bumpy, and products can always be vulnerable to bugs and defects. It is necessary to ensure that software works as expected before being released to the market. Here are several reasons why software testing is essential: 1. Detecting defects for the development team to address The end goal of software testing is always to uncover bugs and defects. Modern software is built from highly interconnected components that must work together seamlessly to deliver the intended functionality. 2. Maintain and enhance product quality Product quality is more than just the absence of bugs. When we think of quality, we think of the characteristics that not only meet but also exceed customer expectations. From this perspective, software testing is the key to quality, for the following reasons: Maintain, Enhance, Improve customers' trust and satisfaction, Identify vulnerabilities that can save company costs and even human lives. 2 What are the benefits of Software Testing? 1. Cost-Effective: It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money for the long term. In case if the bugs caught in the earlier stage of software testing, it costs less to fix. 2. Security: It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in removing risks and problems earlier. 3. Product quality: It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers. 4. Customer Satisfaction: The main aim of any product is to give satisfaction to their customers. When we start testing in SDLC? Software testing should start early in the Software Development Life Cycle (SDLC). This helps to capture and eliminate defects in the early stages of SDLC i.e requirement gathering and design phases. An early start to testing helps to reduce the number of defects and ultimately the rework cost in the end. It also depends on the development model that is being used. For example, in the Waterfall model, formal testing is conducted in the testing phase; but in the incremental model, testing is performed at the end of every increment/iteration and the whole application is tested at the end. During the testing phase, developers find out whether their code and programming work according to customer requirements. 3 Moreover, developers also conduct testing which is called Unit Testing. In most cases, the following professionals are involved in testing a system within their respective capacities : Software Tester Software Developer Project Lead/Manager End User Testing is done in different forms at every phase of SDLC During the requirement gathering phase, the analysis and verification of requirements are also considered as testing. Reviewing the design in the design phase with the intent to improve the design is also considered as testing. Testing performed by a developer on completion of the code is also categorized as testing. When the time is right to stop testing? The most common factors that are taken into account when deciding when to stop testing are: Deadlines, e.g. release deadlines, testing deadlines; Percentage of test cases passed; Test budget and rate of spending ; Amount of code, functionality, or requirements to be covered; Minimum accepted bug rate; Types of Software Testing Functional testing: 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 4 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: how well the system performs is non-functionality testing. Non-functional testing refers to various aspects of the software such as performance, security, and compatibility etc.. Main focus is to improve the user experience on how fast the system responds to a request. Testing Strategies in Software Engineering Unit Testing: This software testing basic approach is followed by the programmer to test the unit of the program. It helps developers to know whether the individual unit of the code is working properly or not. Integration testing: It focuses on the construction and design of the software. You need to see that the integrated units are working without errors or not. System testing: In this method, your software is compiled as a whole and then tested as a whole. This testing strategy checks the functionality, security, portability, amongst others. 5 6 7