Unit 8: Software Testing
The SDLC phases are not necessarily sequential and often overlap, which is the case with software tests. Software testing is the execution of code to find errors and to verify requirements are satisfied. The code executed can be part of the developed code or test code that enables the test itself, for example, code that calls the code under test or demonstrates behavior. Test activity can occur in any phase but typically in implementation and construction. Types of testing include unit testing, integration testing, system testing, and acceptance testing. Each is performed according to a test plan identifying the test strategy and procedures used.
Testing is an SDLC activity that may occur at any SDLC activity level: requirements, design, construction, test, deployment, and delivery. Software testing is an example of development and maintenance activities used in every phase of the SDLC and, thus, are affected by technological change that affects components at any level, from small components of code to large integrated code components to design and architecture components and to requirements. Software testing methodologies have evolved in parallel with the evolution of software development methodologies. For example, there are testing methodologies for agile, waterfall, incremental, evolutionary, spiral, and OO development methodologies. The long history of the evolution of software testing has resulted in an extensive testing vocabulary, testing strategies, quality features, processes, procedures, practices and techniques, compatible methods (methodologies), and automated testing tools. The software testing support tools listed at the end of this unit no longer exist, are limited to code products, or need to be well known. However, the testing functions they provided continue to evolve and are provided by newer tools, which also support the testing of products of every SDLC phase, support new testing methodologies, models, and languages, focus on satisfying needed quality goals, and utilize AI, large scale data analysis, cloud resources.
Completing this unit should take you approximately 3 hours.
Upon successful completion of this unit, you will be able to:
- describe basic software testing terms, such as test case, traceability matrix, and acceptance criteria;
- compare the use of various testing strategies, including black-box, white-box, top-down, and bottom-up;
- identify different types of tests, including functional, non-functional performance, and user tests; and
- design a test plan that includes unit, integration, and system levels of test coverage.
8.1: Software Testing Terminology
This is a quick introduction to many terminologies used in the science (and art) of testing. Do not worry if you do not understand them fully. We will examine these topics more deeply by looking closely at test strategies (white-box, black-box, top-down, and bottom-up) and the testing levels (unit, integration, and system tests).
8.2: Software Test Strategies
Each major software development activity should have a plan. For small projects, a single project-level plan could incorporate each major activity. For large projects, a major activity, especially an activity that occurs in every phase, will have its own plan, such as a software V&V (verification and validation) plan or software test plan. Such plans contain management or technical topics, including goals of the activity, strategies, processes, procedures, techniques, or tools. The next section addresses test quality goals, strategies, processes, and techniques, and the next addresses test strategies in more detail.
Unlike physical systems, most of the defects in software are design errors. Read about the important purpose of software testing and differentiate between verification and validation and basic software testing terms. Compare and contrast various testing strategies, including black-box, white-box, top-down, and bottom-up.
In this section, you will learn about two kinds of test strategies: how the logic is tested (via black-box and white-box testing) and how the testing is conducted (by top-down and bottom-up testing).
8.3: Software Test Coverage
The test is one verification and validation technique. Others are inspections and reviews, formal proof methods, static analysis, and prototyping. Testing is the execution of requirements analysis, design, code, and test products. (Note that the last is an example of recursion – a test of a test, an important concept in computer science and software engineering). Test scope includes the data and behaviors in the problem domain gathered in requirements analysis and data and behaviors of the products of design, Implementation, and Test activities, such as risk scenarios, environments, and events. Specific examples are security risks, development and operational environments, and system interactions. Test coverage is the percentage of the test scope addressed by testing.
This section shows the elements of a software test plan and how one company designs testing to validate that specification, design, and coding mesh with the functional and non-functional requirements of the system. The development of a test plan takes into consideration the programming language. Selection of a programming language can involve considering older languages, like COBOL, first used in 1960. Suppose a company has legacy business systems and a project application is well known to the company (meaning that it is a system with precedent) with stable requirements. In that case, COBOL might be a good choice. Indeed, a scan of job openings 70 years after COBOL was first used often finds several openings for COBOL programmers.
As you review this test plan, think about a plan to verify and validate the goals, design (organization and flow), and content of this course, CS302. Recall that at a high enough level of abstraction, the SDLC can be applied to other types of development, including course development.
Unit 8 Assessment
- Receive a grade
Take this assessment to see how well you understood this unit.
- This assessment does not count towards your grade. It is just for practice!
- You will see the correct answers when you submit your answers. Use this to help you study for the final exam!
- You can take this assessment as many times as you want, whenever you want.