"Software Testing" [Ron Patton] (1) - software testing background, software development process, software testing foundation

  • "Software Testing (Original Book 2nd Edition)" Author: [US] Ron Patton This book is a classic book for getting started with software testing.
  • When I first entered the industry, I also read this book and benefited a lot.
  • And even after working for so many years, looking back at this book, you will find that you can't escape the scope of this book.
  • This series is the reading notes of this book, which excerpts important parts of the book and also writes some thoughts.

The part of the original book corresponding to this article has been uploaded to my official account [Skills Required for Software Testing]. If necessary, you can search for the name of the official account, or click the QR code at the bottom of the article to get it~
(Resources are for learning and sharing only, not for commercial use)

1. Software testing background

(1) Terminology for software failure

  • In different environments, different terms are used to describe the phenomenon of software failure. Here are some examples:
    • defect
    • fault
    • problem
    • error
    • incident
    • deviation
    • failure
    • Contradiction (inconsistencv)
    • special
    • defect (bug)
  • Although there are so many terms to describe software defects, in actual work, according to the actual situation of the company, you can call them whatever you want.

(2) The official definition of a software defect

  • At least one of the following five rules is met to call a software defect, that is, a bug:
    1. The software does not realize the functions required by the product specification.
    2. The software has errors that the product specification indicates should not occur.
    3. The software implements functions not mentioned in the product manual.
    4. The software fails to achieve the goals that should be achieved although not explicitly mentioned in the product specification,
    5. Software is difficult to understand, difficult to use, slow or from a tester's point of view - would be perceived as bad by the end user
  • It can be seen that the product specification, that is, the requirements document is particularly important for the definition of a defect.

(3) Why do software defects occur?

  • The product specification (requirements document) is the culprit for most defects.
    • In many cases, requirements are not written, or are not comprehensive enough, change frequently, or are not communicated well by the entire development team.
    • Planning for software is extremely important, if not done well, software defects will appear.
  • The second largest source of software defects is design, the process by which programmers plan software. The reason for the software failure here is the same as the product manual-arbitrary, changeable, and insufficient communication.

(4) Repair expenses (cost) for software defects

  • Software defects are likely to be discovered during the process from inception, through planning, programming, testing, and public use.
  • The sooner a bug is found and the sooner it is fixed, the lower the repair fee and the lower the cost.

(5) What exactly does a software tester do

  • The main job of software testers is to improve the quality of software:
    1. The goal of a software tester is to find software defects.
    2. The goal of a software tester is to find software defects as early as possible.
    3. The goal of a software tester is to find software defects as early as possible and ensure that they are fixed.

(6) Qualities that an excellent software tester should possess

  • Here are the qualities most software testers should have:
    • They are group explorers.
    • They are troubleshooters.
    • They are creative.
    • They are a group of perfectionists.
    • They focus on strategy and diplomacy.
    • They are good at persuasion.
  • Apart from these qualities, it is also important to be educated in software programming.

2. Software development process

(1) Investment required for software products

  • client needs
  • Product Manual
  • Schedule
  • Software design documents (structural documents, data flow diagrams, state transition diagrams, flowcharts, code comments)
  • Test documentation (test plans, test cases, defect reports, test tools and automated tests, metrics statistics and summaries)

(2) What are the components of the software product?

  • When a product is packaged and distributed, not only the code is distributed, but a lot of support is also included. Since all these parts are viewed or used by customers, testing is also required. The following list can give an initial impression that software products are not limited to code:
    • help file
    • user manual
    • samples and examples
    • Labels and Stickers
    • Product Support Information
    • Icons and Logos
    • error message
    • Advertising and Promotional Materials
    • description file
    • Install
  • Note : This book has been released relatively early, and the software has changed in form, and the above list may no longer need testing. The focus of software testing is also mostly on code testing.

(3) Software project members

  • Main personnel and their responsibilities:
    • The project manager , program manager or supervisor drives the entire project from start to finish. They are often responsible for writing product specifications, managing schedules, and making major decisions.
    • An architecture architect or system engineer is a technical expert in a product team . They are generally experienced enough to design the architecture or software of the entire system. Their jobs are closely related to programmers.
    • Programmers, developers, or code makers design, write software, and fix bugs in software . They work closely with project managers and designers to produce software, and then work closely with project managers and testers to fix defects.
    • Testers or Quality Assurance (Quality Assurance, QA) staff are responsible for identifying and reporting software product problems . They work closely with all members of the development team during the development process, conducting tests and reporting issues found. Chapter 21, "Software Quality Assurance," fully describes the differences between software testing and software quality assurance tasks.
    • Technical writers, user assistance specialists, user training specialists, manual writers, or copywriters prepare the files and online documentation that accompany software products.
    • The configuration manager or builder is responsible for combining the code written by the programmer and all the documentation written by the technical author into a software package.
  • Note : The current software project team is not the same as the previous members:
    • Project managers, architects, programmers, and tests still exist;
    • Configuration administrators and copywriters may no longer exist, or may be replaced by other personnel;
    • Compared with before, there are also some new positions, such as operations, marketing, operation and maintenance, art, etc.

(3) Software development life cycle model

  • Here are the 4 most commonly used modes, the others are just variations of these:
    • Big Bang Pattern: The big bang pattern has the advantage of simplicity. There is very little planning, scheduling, and formal development process, and all the energy goes into developing software and writing code.
    • Change-while-write mode: Change-while-write mode is the default development mode when the project team does not deliberately adopt other development modes. This is a step up from the big bang model, at least with product needs in mind.
    • Waterfall: Projects using the waterfall model go through a series of steps from the initial idea to the final product. At the end of each step, the project team organizes a review and decides whether to proceed to the next step.
      • There are three points that need to be emphasized about the waterfall model: the waterfall model places great emphasis on the definition of products; the steps of the waterfall model are separated and have no intersection; the waterfall model cannot be traced back. Once you enter a certain step, you must complete the task of that step.
    • Spiral pattern: The general idea of ​​the spiral pattern is that you don't have to define all the details in detail at first. Start small, define important features, work towards implementing them, take customer feedback, and move on to the next phase. Repeat the above process until the final product is obtained.

3. The basis of software testing (principle)

(1) Testing principles

  1. It is impossible to test the program
  2. Software testing is risky behavior, and deciding not to test all situations is choosing to take risks.
  3. Testing cannot reveal latent software defects; it can report the presence of a defect, but not its absence.
  4. The more software defects found, the more software defects.
  5. The more software is tested, the stronger the immunity to testing.
  6. Not all bugs are fixed
  7. The definition of a defect can sometimes be elusive, and it can be discussed with multiple parties to specify the criteria that are most appropriate for the project.
  8. Product manuals are never finalized
  9. Software testers are not popular in product teams because they always bring bad news.
    (In fact, as the industry's recognition of testing work is getting higher and higher, it is already difficult to feel this)
  10. Software testing is a methodical technical profession.

(2) Terms and definitions of software testing

  • Precise and accurate (this picture in the book can well illustrate the difference between these two words. The accuracy of software testing depends largely on the nature of the product, and it should be adjusted according to the actual situation.)
    insert image description here
  • Validation and Verification : Validation is the process of ensuring that the software conforms to the product specification; Verification is the process of ensuring that the software meets the user's requirements.
  • Quality and Reliability : Reliability is an aspect of quality.
  • Testing and Quality Assurance (QA) : The goal of a software tester is to find software defects as early as possible and ensure that the defects are fixed. The primary responsibility of software quality assurance personnel is to create and enforce standards and methods that improve the software development process and prevent software defects from occurring.

(3) Black box testing and white box testing

  • Black box testing is sometimes called functional testing or behavior testing. In black box testing, the software tester only knows what to do, but cannot see how the software works.
  • In white box testing , a software tester has access to the program's code and assists in testing by examining the code for clues. Doing white box testing also takes some risks. Because it is necessary to customize the test by making corresponding code operations, it is easy to cause fixed thinking that cannot be objectively tested.

(4) Static testing and dynamic testing

  • Static testing refers to the part of the test that doesn't run - it's just checking and auditing;
  • Dynamic testing refers to testing in the usual sense—using and running software.

—————————————————————————————————
The part of the original book corresponding to this article has been uploaded to the official account of my operation [software testing essential skills]
It was scanned by a mobile phone, it may be a little blurry, I will see if I can scan it more clearly in the future~[抱打]
(Resources are only for learning and sharing, not for commercial use)
If necessary, click on the article to send the two-dimensional Code, go to the official account to get it~
insert image description here

Guess you like

Origin blog.csdn.net/weixin_40883833/article/details/130396282