Improving testing results: in-depth analysis of the key methods and practices of "Effective Software Testing"

Insert image description here


1. Write in front

Insert image description here

In recent years, some new publishing methods have emerged, and MEAP (Manning Early Access Program) is one of them, extending the open source movement to the publishing industry. In MEAP, readers can read an early version of the book chapter by chapter before it is published. During the author's writing process, readers can provide timely feedback to help the author write better works.
"Effective Software Testing" is a software testing book based on MEAP, and its quality has been tested by many readers. Mauricio Aniche, the author of this book, attempts to help developers avoid common mistakes. Dr. Mauricio is a developer and has personally gone to the site to deliver and deploy software; after customers raised issues, he debugged, analyzed and corrected the software in a timely manner. The lesson is profound. He attaches great importance to testing and does it himself. He firmly believes that "to become an efficient developer, you must first become an efficient software tester" and strongly recommends building an automated test set when developing a system. Feed back test results, thereby significantly improving the work efficiency of software engineers.

2. Unique point of view

  • Emphasis on effective and systematic software testing: This book emphasizes that developers should conduct effective and systematic software testing, including the cost of testing, the role of test automation, and the systematicness and completeness of testing. This focus on overall quality allows testing to play a greater role in the software development process.
  • Focus on testing based on requirements specifications: This book details how to conduct software testing based on requirements specifications. By explaining the steps of understanding requirements, exploring program behavior, analyzing boundaries, and designing test cases, readers can learn how to better apply requirement specifications during the testing process and improve the quality and effect of testing.
  • Discussed the relationship between contractual design and testing: Design by Contract is one of the important themes of this book. By explaining the concepts and importance of preconditions, postconditions and invariants, as well as the relationship between contract design and testing, readers can understand how to consider testing requirements during the design phase and improve the testability and quality of the code.
  • Emphasis on property-based testing: "Effective Software Testing" introduces the concept and practice of attribute-based testing. Multiple examples demonstrate how to test different types of code and emphasize the importance of creativity in property-based testing. This perspective allows readers to broaden their understanding of software testing methods and apply different testing methods more flexibly.
  • Test-driven development (TDD) explored: This book provides a detailed introduction to the concepts and practices of test-driven development (TDD) in one chapter. It demonstrates how to use TDD for development through examples, and explores the applicability of TDD and related schools and research. This allows readers to learn about a test-driven approach to software development and understand its benefits and challenges.

3. Introduction

1. Chapter 1 Effective and Systematic Software Testing:
This chapter introduces the role of the developer in software testing and the importance of effective software testing. The cost of testing, the role of test automation, and the systematicness and completeness of testing are discussed. It concludes with an introduction to the test pyramid and the reasons for using different test levels.
2. Chapter 2 Testing Based on Requirements Specifications:
This chapter introduces in detail how to conduct software testing based on requirements specifications. It includes steps such as understanding requirements, exploring program behavior, analyzing boundaries, and designing test cases. Partitioning of tests and automation of design test cases are also covered.
3. Chapter 3 Structured Testing and Code Coverage:
This chapter introduces the concept of structured testing and code coverage standards. Different coverage criteria such as line coverage, branch coverage, conditional+branch coverage and path coverage are discussed. The handling of complex conditional statements and MC/DC coverage standards is also introduced.
4. Chapter 4 Contractual Design:
This chapter explains the concept and importance of preconditions, postconditions and invariants in contractual design. The relationship between the assertion keyword and contract changes and the Liskov substitution principle is introduced. Finally, the relationship between contractual design and testing is discussed.
5. Chapter 5 Attribute-Based Testing:
This chapter mainly introduces the concept and practice of attribute-based testing. Multiple examples demonstrate how to test various types of code. The importance of creativity in attribute-based testing is discussed.
6. Chapter 6 Testing Doubles and Mock Objects:
This chapter explains the concepts and usage of dumb objects, pseudo objects, stub objects and mock objects. The functions and usage of the simulation framework are introduced. The application of simulated objects in practical work is discussed.
7. Chapter 7 Testability Design:
This chapter mainly discusses how to design code with good testability. The separation of infrastructure code and domain code, dependency injection and controllability, making classes and methods observable, etc. are discussed.
8. Chapter 8 Test-Driven Development:
This chapter introduces the concepts and practices of test-driven development (TDD). Demonstrates how to develop using TDD through examples. The applicability of TDD and related schools and research are discussed.
9. Chapter 9 Writing Large Tests:
This chapter discusses issues and techniques for testing in large systems. Includes database and SQL testing, system testing, and considerations and practices for working with large components.
10. Chapter 10 Quality of Test Code:
This chapter emphasizes the importance of writing maintainable and high-quality test code. The principles of maintainability and common bad smells in test code are discussed.
11. Chapter 11 Summary of the whole book:
The last chapter summarizes the main content of the whole book. The importance of iteration, the reality of bugs, and the importance of user engagement are emphasized, and future directions are envisioned.

4. Introduction of the author

Dr. Mauricio Aniche, a teaching assistant at the Department of Software Engineering at Delft University of Technology in the Netherlands and concurrently director of the technical department of Adyen Company
Mauricio holds a MS and PhD in Computer Science from the University of São Paulo, Brazil. During his master's degree, he co-founded Alura, one of the most popular e-learning platforms for software engineers in Brazil. He is the author of two popular books among Brazilian developers: Test-Driven Development in the Real World and Object-Oriented Programming and SOLID for Ninjas.
We firmly believe that "to become an efficient developer, you must first become an efficient software tester and it is strongly recommended to build an efficient software tester when developing systems." An automated test set can provide feedback on test results at any time, thereby significantly improving the work efficiency of software engineers. .

5. Book donation or purchase

Purchase link: "Effective Software Testing"

Book purchase portal: https://u.jd.com/vqqmLt2
JD.com coupon collection address (no threshold coupon 10 yuan):
APP: https://pro.m.jd.com/mall/active/2Z3HoZGKy5i9aEpmoTUZnmcoAhHg/index. html
PC: https://pro.jd.com/mall/active/2Z3HoZGKy5i9aEpmoTUZnmcoAhHg/index.html

How to participate in the book donation event?

点击文章底部微信名片,参与朋友圈赠书活动,点赞8,18,28各送一本,包邮到家!!!

Guess you like

Origin blog.csdn.net/qq_72157449/article/details/132805201