The document provides an overview of key concepts in software testing, including definitions of software testing, the objectives of testing, different testing levels based on the software development life cycle, techniques for designing test cases, common principles and myths. It discusses activities performed by test engineers and managers. The overview addresses taxonomy, automation, and limitations of software testing.
The document provides an overview of key concepts in software testing, including definitions of software testing, the objectives of testing, different testing levels based on the software development life cycle, techniques for designing test cases, common principles and myths. It discusses activities performed by test engineers and managers. The overview addresses taxonomy, automation, and limitations of software testing.
Content What is Software Testing? Activities of Test Engineering Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
3 Overview of Software Testing 11/04/21
What is Software Testing Most Common Software problems Incorrect calculation, Incorrect data edits Incorrect matching and merging of data Data searches that yields incorrect results Incorrect processing of data relationship Incorrect coding/implementation of business rules Inadequate software performance Unreliable results or performance Inadequate support of business needs Incorrect or inadequate interfaces with other systems Inadequate performance and security controls
4 Overview of Software Testing 11/04/21
What is Software Testing Several definitions: Testing is the process of demonstrating that errors are not present The purpose of testing is to show that a program performs its intended functions correctly Testing is the process of establishing confidence that a program or system does what it is supposed to. Testing is the process of executing a program or system with the intent of finding errors. Program testing is more properly viewed as the destructive process of trying to find the errors (whose presence is assumed) in a program
5 Overview of Software Testing 11/04/21
What is Software Testing The Major Objectives of Software Testing: Uncover as many as errors (or bugs) as possible in a given timeline. Demonstrate a given software product matching its requirement specifications. Validate the quality of a software testing using the minimum cost and efforts. Generate high quality test cases, perform effective tests, and issue correct and helpful problem reports.
6 Overview of Software Testing 11/04/21
What is Software Testing Software testing is one element of a broader topic that is often referred to as Verification and Validation (V&V) Verification: The process of determining whether the products of a given phase of the software development process fulfill the requirements established during the previous phase (“Are we building the product right?”) Verification is usually a more technical activity that uses knowledge about the individual software artifacts, requirements, and specifications. Verification activities include testing and reviews
7 Overview of Software Testing 11/04/21
What is Software Testing Validation: The process of evaluating software at the end of software development to ensure compliance with intended usage (“Are we building the right product?”) Validation activities are used to evaluate whether the features that have been built into the software satisfy the customer requirements and are traceable to customer requirements Validation usually depends on domain knowledge
8 Overview of Software Testing 11/04/21
What is Software Testing
9 Overview of Software Testing 11/04/21
Content What is Software Testing? Activities of Test Engineer Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
10 Overview of Software Testing 11/04/21
Activities of Test Engineer Test Engineer An information technology (IT) professional who is in charge of one or more technical test activities Define test cases, write test specifications, Run tests Analyzing results, and reporting results to developers and managers. …
Test Manager Set test policies and processes, interact with other managers on the project, and otherwise help the engineers do their work
11 Overview of Software Testing 11/04/21
Activities of Test Engineer
12 Overview of Software Testing 11/04/21
Activities of Test Engineer Automation of Test Activities Software testing is expensive and labor intensive. Software testing requires up to 50% of software development costs, and even more for safety-critical applications. => One of the goals of software testing is to automate as much as possible, thereby significantly reducing its cost, minimizing human error, and making regression testing easier. Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions Example: Stress Test, Selenium, TestComplete, IBM Rational Functional Tester
13 Overview of Software Testing 11/04/21
Content What is Software Testing? Activities of Test Engineer Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
14 Overview of Software Testing 11/04/21
Software Testing Taxonomy Testing Levels Based on Software Activity Beizer’s Testing Levels Based on Test Process Maturity [1] – Chapter 1
15 Overview of Software Testing 11/04/21
Testing Levels Based on Software Activity
16 Overview of Software Testing 11/04/21
Testing Levels Based on Software Activity Acceptance Testing – assess software with respect to requirements. System Testing – assess software with respect to architectural design. Performance Testing Stress Testing Security Testing … Integration Testing – assess software with respect to subsystem design.
17 Overview of Software Testing 11/04/21
Testing Levels Based on Software Activity Module Testing – assess software with respect to detailed design. Unit Testing – assess software with respect to implementation. Regression Testing Is done after changes are made to the software, and its purpose is to help ensure that the updated software still possesses the functionality it had before the updates.
18 Overview of Software Testing 11/04/21
Content What is Software Testing? Activities of Test Engineer Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
19 Overview of Software Testing 11/04/21
Test Case Test Case Values (Input): The input values necessary to complete some execution of the software under test. Expected Results: The result that will be produced when executing the test if and only if the program satisfies its intended behavior Prefix Values: Any inputs necessary to put the software into the appropriate state to receive the test case values. Postfix Values: Any inputs that need to be sent to the software after the test case values are sent. Test Case: composed of the test case values, expected results, prefix values, and postfix values necessary for a complete execution and evaluation of the software under test. Test Suite: a collection of test cases that are intended to be used to test a software program to show that it has some specified set of behaviours
20 Overview of Software Testing 11/04/21
Test Case Design Methods Any engineered product (and most other things) can be tested in one of two ways Black box testing No knowledge of internal design or code required. Tests are based on requirements and functionality White box testing Knowledge of the internal program design and code required. Tests are based on coverage of code statements, branches, paths, conditions.
21 Overview of Software Testing 11/04/21
Test Case Design Methods
22 Overview of Software Testing 11/04/21
Test Case Design Methods Testing type Techniques Used Unit Testing White Box Integration Testing White Box Black Box System Testing Black Box Acceptance Testing Black Box
23 Overview of Software Testing 11/04/21
Content What is Software Testing? Activities of Test Engineer Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
24 Overview of Software Testing 11/04/21
Software Testing Principles A necessary part of a test case is a definition of the expected output or result If the expected result of a test case has not been predefined, chances are that a plausible, but erroneous, result will be interpreted as a correct result because of the phenomenon of “the eye seeing what it wants to see.” => a test case must consist of two components: A description of the input data to the program. A precise description of the correct output of the program for that set of input data.
25 Overview of Software Testing 11/04/21
Software Testing Principles Testing requires independence. A programmer should avoid attempting to test his or her own program. Psychological issues The program may contain errors due to the programmer’s misunderstanding of the problem statement or specification A programming organization should not test its own programs. Thoroughly inspect the results of each test
26 Overview of Software Testing 11/04/21
Software Testing Principles Test cases must be written for input conditions that are invalid and unexpected, as well as for those that are valid and expected. Examining a program to see if it does not do what it is supposed to do is only half the battle; the other half is seeing whether the program does what it is not supposed to do. Avoid throwaway test cases unless the program is truly a throwaway program.
27 Overview of Software Testing 11/04/21
Software Testing Principles Do not plan a testing effort under the tacit assumption that no errors will be found. The probability of the existence of more errors in a section of a program is proportional to the number of errors already found in that section
28 Overview of Software Testing 11/04/21
Software Testing Principles Testing is an extremely creative and intellectually challenging task. Testing should begin “in the small” and progress toward testing “in the large.” Exhaustive testing is not possible Tests should be planned long before testing begins.
29 Overview of Software Testing 11/04/21
Content What is Software Testing? Activities of Test Engineering Software Testing Taxonomy Test Case Design Methods Principles of Software Testing Software Testing Myths Software Testing Limits
30 Overview of Software Testing 11/04/21
Software Testing Myths We can test a program completely. In other words, we test a program exhaustively. We can find all program errors as long as test engineers do a good job. We can test a program by trying all possible inputs and states of a program. A good test suite must include a great number of test cases. Good test cases always are complicated ones. Software test automation can replace test engineers to perform good software testing. Software testing is simple and easy. Anyone can do it. No training is needed.
31 Overview of Software Testing 11/04/21
Software Testing Limits We can never be sure the specifications are 100% correct. We can never be certain that a testing system (or tool) is correct. No testing tools can cope with every software program. Tester engineers never be sure that they completely understand a software product. We never have enough resources to perform software testing. We can never be certain that we achieve 100% adequate software testing