I am new to testing, so I don't know which basic testing concepts I must learn. Please tell me which concepts are the most important in testing.
Testing is a broad area that takes in elements from requirements, architecture, design, and implementation. Testing is also a key component of software quality. The IEEE Software Engineering Body of Knowledge (free HTML version found here) defines testing as
The dynamic verification of the behavior of a program on a finite set of test cases, suitable selected from the usually infinite executions domain, against the specified expected behavior.
You can read the entire SWEBOK Software Testing knowledge area online, along with the rest of the book.
A few topics that you might want to look into are:
- The differences between faults, failures, and errors. These terms are used to define what is called the "cause-effect chain". Simply, a fault or defect is the reason that a system can fail.
- The oracle problem. In software testing, an oracle is something that says if a program passes or fails given its behavior on a test.
- The limitations of testing. Dijstra's famous quote of "program testing can be used to show the presence of bugs, but never to show their absence." You must learn about risk management and how to test sufficiently to reduce risk to an acceptable level.
- Test levels
- Unit Testing. Verifying the functionality of the low-level modules, usually functions and methods.
- Integration Testing. Testing the interaction between components. In an object-oriented system, what is being tested is probably the relationship between classes.
- System Testing. Testing the complete software system. During this stage, you also test against non-functional requirements.
- Objectives of testing. A few important ones are testing that the system meets requirements (conformance or functional testing), changes to the system haven't caused additional problems (regression and smoke testing), the system is usable (usability testing).
- White box and black box testing. Really, how to test when you can see the source code, when you can't see the source code. Different methodologies apply to each situation.
- Measurements and metrics
- Classifying of found faults and defects
- Fault density
- Coverage
- Documentation. How to produce reports for management and the engineering team. Documents produced by testers include Test Plans, Test Design Specifications, Test Procedure Specifications, Test Case Specifications, and Test Logs. You can probably find sample documents and templates online.
The following books are also recommended reading, as suggested in the SWEBOK Software Testing section:
- K. Beck, Test-Driven Development by Example, Addison-Wesley, 2002.
- B. Beizer, Software Testing Techniques, International Thomson Press, 1990.
- P. C. Jorgensen, Software Testing: A Craftsman's Approach, second edition, CRC Press, 2004.
- C. Kaner, J. Falk, and H.Q. Nguyen, Testing Computer Software, second ed., John Wiley & Sons, 1999.
- C. Kaner, J. Bach, and B. Pettichord, Lessons Learned in Software Testing, Wiley Computer Publishing, 2001.
- M.R. Lyu, Handbook of Software Reliability Engineering, Mc-Graw-Hill/IEEE, 1996.
- W. Perry, Effective Methods for Software Testing, John Wiley & Sons, 1995.
- S. L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001.
I hope that this gets you started.
i recommend you to go for these:
unit testing integration testing black, white box and smoke testing
these are oftentimes used concepts.
精彩评论