Автор: Saeed Parsa
Издательство: Springer
Год: 2023
Страниц: 594
Язык: английский
Формат: pdf (true)
Размер: 19.1 MB
This book is about the design and development of tools for software testing. It intends to get the reader involved in software testing rather than simply memorizing the concepts. The source codes are downloadable from the book website. The book has three parts: software testability, fault localization, and test data generation.
The ability to test software efficiently and thoroughly is a hallmark of high-quality software. For code to be tested thoroughly, it should be testable in the first place. Testers, in a sense, are customers of developers. Developers must undertake an approach that keeps the code clean and efficient. Clean and efficient code is highly testable. Refactoring techniques help develop testable code. As the testability improves, automatic test data generation tools can provide relatively more efficient and effective test data. This book offers a machine learning tool to measure software testability based on which a software development process, Testability-Driven Development (TsDD), in support of test-first approaches is suggested.
Testing is something practical. Software testing is all practice. It relies on knowledge but is more than learning. It is based on programming experience and common sense. This book is all about the design and development of tools for software testing. My intention is to get the reader involved in software testing rather than simply memorizing the concepts. The book has three parts: Software Testability, Fault Localization, and Test data generation.
Part I describes unit and acceptance tests and proposes a new method called testability-driven development (TsDD) in support of TDD and BDD. TsDD uses a machine learning model to measure testability before and after refactoring. The reader will learn how to develop the testability prediction model and write software tools for automatic refactoring.
Part II focuses on developing tools for automatic fault localization. This part shows the reader how to use a compiler generator to instrument source code, create control flow graphs, identify prime paths, and slice the source code. On top of these tools, a software tool, Diagnoser, is offered to facilitate experimenting with and developing new fault localization algorithms. Diagnoser takes a source code and its test suite as input and reports the coverage provided by the test cases and the suspiciousness score for each statement.
Part III proposes using software testing as a prominent part of the cyber-physical system software to uncover and model unknown physical behaviors and the underlying physical rules. The reader will get insights into developing software tools to generate white box test data.
I have intentionally begun Chap. 1 of this book with the concept of testability. A straightforward yet fundamental concept overlooked by many programmers. As a software quality factor, testability is the extent to which a software artifact supports its testing. This chapter brings up some critical issues about software preparation for testing.
Chapter 2 briefly describes using Enterprise Architect to define business and technical requirements and generate code from UML models. The chapter proceeds with the practical use of test-driven development (TDD) to complete the generated code. This chapter provides guidelines and step-by-step instructions for installing and using Nunit in Visual Studio and Unitest in Python. In this chapter, the reader will learn how to use requirements specifications and UML models to derive test cases and how to apply TDD.
Chapter 3 describes behavior-driven development (BDD) as an agile methodology to design and develop code based on the acceptance tests satisfying the system requirements defined as user stories. This chapter gives the reader insights into the strengths and weaknesses of different tools support for different programming languages, Java, C#, and Python. BDD supports acceptance testing, while TDD is based on unit tests that test the individual methods in isolation.
Скачать Software Testing Automation: Testability Evaluation, Refactoring, Test Data Generation and Fault Localization