Skip to main content
Top

2019 | Book

Concise Guide to Software Testing

insite
SEARCH

About this book

This practically-focused textbook provides a concise and accessible introduction to the field of software testing, explaining the fundamental principles and offering guidance on applying the theory in an industrial environment.

Topics and features: presents a brief history of software quality and its influential pioneers, as well as a discussion of the various software lifecycles used in software development; describes the fundamentals of testing in traditional software engineering, and the role that static testing plays in building quality into a product; explains the process of software test planning, test analysis and design, and test management; discusses test outsourcing, and test metrics and problem solving; reviews the tools available to support software testing activities, and the benefits of a software process improvement initiative; examines testing in the Agile world, and the verification of safety critical systems; considers the legal and ethical aspects of software testing, and the importance of software configuration management; provides key learning topics and review questions in every chapter, and supplies a helpful glossary at the end of the book.

This easy-to-follow guide is an essential resource for undergraduate students of computer science seeking to learn about software testing, and how to build high quality and reliable software on time and on budget. The work will also be of interest to industrialists including software engineers, software testers, quality professionals and software managers, as well as the motivated general reader.

Table of Contents

Frontmatter
1. Fundamentals of Software Quality
Abstract
The goal of a software company is to develop high-quality innovative products and services at a competitive price to its customers, and this requires a focus on software quality and customer satisfaction. It is more effective to build quality into the software product rather than addressing quality issues late in the project. Customers have very high expectations on quality and expect high-quality software products to be consistently delivered on time and on budget. The focus on quality requires effective software processes to be in place so that quality software may be consistently produced.
Gerard O’Regan
2. Fundamentals of Software Engineering
Abstract
Software engineering involves the multi-person construction of multi-version programs. We discuss various software lifecycles and the phases in traditional software development. We discuss requirements gathering and specification, software design, implementation, testing, and maintenance. The lightweight Agile methodology is introduced, and it has become very popular in the industry.
Gerard O’Regan
3. Fundamentals of Software Testing
Abstract
Testing plays a key role in verifying the correctness of software and confirming that the requirements have been correctly implemented. It is both a constructive and destructive activity in that while, on the one hand, it aims to verify the correctness of the software, on the other hand, it aims to find as many defects as possible that are in the software. The vast majority of defects are detected by software inspections in a mature software organization, and the goal is to detect the remaining defects during testing.
Gerard O’Regan
4. Static Testing
Abstract
Static testing (as distinct from dynamic testing) is a form of software testing that involves a systematic examination of the software code and documentation without execution of the code. It may be conducted manually or through the use of specialized software testing tools. There are several types of static testing such as code analysis, code reviews, structured walk-throughs, informal reviews, and software inspections.
Gerard O’Regan
5. Software Test Planning
Abstract
Testing is a sub-project of a project and needs to be managed as such, and so good planning and monitoring and control are required. Test planning involves defining the scope of the testing to be performed; defining the test environment; estimating the effort required to define the test cases and to perform the testing; identifying the resources needed (including people, hardware, software, and tools); assigning the resources to the tasks; defining the schedule; and identifying any risks to the testing and managing them.
Gerard O’Regan
6. Test Case Analysis and Design
Abstract
Test case analysis and design are concerned with analysing the requirements to determine the test conditions and designing the test cases (using various techniques). The requirements and test conditions are used to specify the test cases, where each test case includes input, a procedure for carrying out the test, and the expected results. The quality of the testing is influenced by the quality of the test cases, and they need to be designed to cover the requirements. Traceability of the test cases to the requirements ensures that the test cases are sufficient to verifythat all of the requirements have been implemented and tested.
Gerard O’Regan
7. Test Execution and Management
Abstract
Test management is concerned with the activities involved in managing the software testing, whereas test execution is concerned with the activities involved during the execution of the test cases. The main activities in test management include the organization of the test team, test planning, test case design and specification, test execution, defect management, change request management, test monitoring and control, and test reporting. Good test management is a key enabler to project success, and an effective test process is repeatable and predictable.
Gerard O’Regan
8. Test Outsourcing
Abstract
Test outsourcing is concerned with the challenges of outsourcing the testing part of a project to a third-party testing organization. It is concerned with the selection of an appropriate supplier to perform the testing and the management of the supplier during the testing. A project may lack the in-house expertise or resources to conduct the testing, and in such situations, it may be appropriate to outsource the testing to a specialized test organization. It is essential that the selected test organization is capable of carrying out the testing to the desired quality standard, as well as being capable of completing the testing within the budget and schedule constraints.
Gerard O’Regan
9. Test Metrics and Problem-Solving
Abstract
This chapter presents a collection of test and other metrics to provide visibility into key areas of the organization and to show how metrics are used to facilitate improvement. The Goal, Question, Metrics (GQM) approach is discussed, and this allows metrics related to the organization goals to be defined. A selection of sample metrics is presented, and problem-solving tools such as fishbone diagrams, Pareto charts, trend charts are discussed.
Gerard O’Regan
10. Software Testing Tools
Abstract
The goal of this chapter is to give a flavour of a selection of the plethora of tools that are available to support the performance of testing throughout the development lifecycle. Testing plays a key role in verifying that the software system satisfies the requirements and is fit for purpose. There are various categories of test tools ranging from tools that manage software testing to tools that perform specific functions such as automated software inspections or automation of regression tests.
Gerard O’Regan
11. Test Process Improvement
Abstract
Test process improvement is concerned with the continuous improvement of the testing process. There are dedicated test process improvement models such as the TMM or TMap that contain best practice in software testing to mature the testing process. The test manager also conducts a lessons learned review with the test team at the end of a project, and the goal is to learn any lessons from the testing to determine what went well and what needs to be improved for the next project.
Gerard O’Regan
12. Testing in the Agile World
Abstract
Conventional software projects employ a testing phase to verify the correctness of the software, and the developers and testers are in a sense in different silos during the project, which potentially leads to an adversarial relationship between them. However, in the Agile world, testing is employed from the very beginning of the project to provide regular feedback on the extent to which the product meets business needs. The developers and testers are very much part of one integrated team, and they work closely together in a spirit of collaboration. That is, there is a completely different mindset of testing employed in the Agile world.
Gerard O’Regan
13. Verification of Safety-Critical Systems
Abstract
A safety-critical system is a system whose failure could result in significant economic damage or loss of life. There are many examples of safety-critical systems such as aircraft flight control systems, nuclear power stations, and missile systems. It is essential to employ rigorous processes in their design and development, and software testing alone is usually insufficient in verifying the correctness of such systems.
Gerard O’Regan
14. Legal, Ethical, and Professional Aspects of Testing
Abstract
Legal aspects of testing are concerned with the application of the legal system to the computing field. It includes intellectual property law such as patents, copyright, trademarks, and trade secrets. Patents provide legal protection for intellectual ideas; copyright law protects the expression of an idea, and trademarks provide legal protection of names or symbols. There are potential legal impacts to an organization if the software has been inadequately tested, and if the quality of the testing is deemed to be negligent. Software testers are professionals and need to behave professionally and ethically at all times during testing.
Gerard O’Regan
15. Configuration Management
Abstract
Configuration management is concerned with identifying those deliverables that must be subject to change control, and controlling changes to them. It provides full traceability of the changes made during the project including a record of what has been changed, as well as who changed it. It involves identifying the configuration items of the system; controlling changes to them; and maintaining integrity and traceability.
Gerard O’Regan
16. Epilogue
Abstract
This chapter is the concluding chapter in which we summarize the journey that we have travelled in this book.
Gerard O’Regan
Backmatter
Metadata
Title
Concise Guide to Software Testing
Author
Dr. Gerard O'Regan
Copyright Year
2019
Electronic ISBN
978-3-030-28494-7
Print ISBN
978-3-030-28493-0
DOI
https://doi.org/10.1007/978-3-030-28494-7

Premium Partner