Testing Theory 06 Software Testing Methodology

Software testing is a subject that requires continuous learning and supplementation of new knowledge. If you want to become an excellent tester, you must continue to study martial arts like a martial arts master. Take advantage of the strengths of many families and use them for your own use after digesting and absorbing them. This is how you can ultimately be invincible.
The various theoretical knowledge tested are like the internal skills of martial arts, and the various testing techniques and testing tools are like moves and weapons. If the practice of internal skills and mental methods is ignored, even if the moves and weapons are used proficiently, it will only be a trick. Strong lethality.
Test theory is essential for a tester. As mentioned earlier, she is the inner core method and the foundation.

According to the field of test theory design, it can be divided into the following categories:
test method class
Project management class
development psychology

The test method category is the one that needs to be mastered the most and is most frequently contacted, including how to conduct various types of tests. This is the hard qigong that testers must practice.
The project management category includes test process methods, quality management, configuration management and other theories related to the management process that testers and developers work together. Take a look at the theoretical knowledge of software process management such as CMM\MSF\RUP, which can make the test process easier. Do it better, and strive for a better working atmosphere for the test. Mastering more of this knowledge may make other members of the project team impress themselves at the right time. This is the righteousness method that testers need to practice.
Development psychology, including software process psychology, developer psychology, user psychology, etc., usually thinking more, especially empathy, will make it more powerful for their own work, which is the meditation method that testers need to practice.

Five Schools of Software Testing

Analytical school
The analytical school is passionate about calculating code coverage, providing an objective measure of testing. Analytical school testing requires precise and detailed specifications, and the tester verifies that the software complies with the specifications.

standard school
The core philosophy of the standards school is that tests must be managed predictably, repeatably, and planned. Testing must be efficient. Testing confirms the product and uses testing to measure the progress of software development. The standards school of testing requires clear boundaries to define testing and other activities, such as criteria for entry and exit testing, and the standards school tends to resist planned changes.

quality school
The quality school emphasizes institutions and uses tests to determine whether the development process has been followed strictly. The quality school sees testing as the role of QA, and testing as a ladder for process improvement.

context-driven school
Contextual testing emphasizes exploratory testing, the simultaneous design and execution of tests, and the ability to learn quickly. Context-driven testing embraces change, adjusts the test plan based on the test results, and the effectiveness of the test strategy can only be judged by actual observation.

Agile school
At the core of the agile school of thought is a dynamic process where testing must be automated. The Agile school emphasizes unit testing.

Application of Microsoft Software Testing Methods
From the point of view of the purpose of testing, testing can be roughly divided into two categories:
    One is a test to verify that the program works, and the other is a test to prove that the program doesn't work.
The first type is carried out according to the steps, which are the review of requirements and design, the testing of the design stage, and the comprehensive testing of the system.
Testers and developers participate in the review of requirements and designs together. Testers review requirements documents and design documents from the perspective of testing in terms of testability, clarity, completeness, and correctness.
In the process of product design by developers, testers begin to write test plans and test cases according to the requirements document, and the written test plans and test cases need to be reviewed with project managers and developers to ensure that the project and the software have reached an agreement. Cognitive, when developers complete the design, they need to supplement and improve the test cases appropriately according to the design document.
After entering the formal testing phase, testers build a test environment according to the test plan, execute test cases, write automated test programs and run them repeatedly.
The basic test strategy adopted by the test:
Execute simple test cases first, then execute complex test cases
Verify the single basic function first, then verify the combined function
Solve superficial, high-impact bugs first, and then solve deep, hard-to-reproduce bugs
Postmortem: After completing a phase, perform a phase retrospective to find various issues with this version to solve in the next version.

IBM's software testing method
IBM's testing is based on the RUP process model. A model of the software development process that emphasizes iterative development and continuous integration.
RUP Test Metrics
The RUP testing method pays more attention to the measurement of the test, and uses the test coverage and quality to measure the test. Test coverage is an evaluation of the adequacy of tests. Test coverage includes:
Coverage of test requirements
Test case coverage
Test execution code coverage
Requirements-based test coverage is evaluated multiple times during the test life cycle, and an identification of test coverage is provided at milestones in the test life cycle.
Code-based test coverage assesses how much of the code has already been executed, as opposed to how much of the remaining code is to be executed. Code coverage can be based on control flow or data. The purpose of control flow coverage is to test lines of code, branch conditions, paths in code, or other elements of software control flow. The purpose of data flow coverage is to manipulate whether the data state is valid through software.
Quality is an assessment of the reliability, stability, and performance of a test object. Quality is based on the evaluation of the test results and the analysis of the changes identified during the test.
RUP's classification of software testing
reliability:
Integrity testing focuses on testing the robustness of the test object, technical compatibility of the language, syntax, and resource utilization, which is implemented and executed against different test objects, including units and integrated units.
Structural testing focuses on testing that evaluates whether the test objective conforms to the construct for which it was designed.
Feature:
Configuration testing focuses on testing to ensure that objects perform as expected on different hardware and/or software configurations.
Functional testing focuses on verifying that the test object performs as planned, providing the required service, method, or use case.
Installation testing focuses on ensuring that the test object installs as expected on different hardware and/or software configurations, and under different conditions.
Security testing focuses on testing to ensure that only the intended protagonist can access the test object, data.
Capacity testing focuses on verifying the object's ability to process large amounts of data.
performance:
Benchmarking focuses on comparing the performance of the test object to a known reference load and system.
Competitive testing focuses on verifying that the test is acceptable for multiple actors to handle requests for the same resource.
Load testing is used to verify and evaluate the acceptability of operating limits under different loads while the system under test remains the same
Performance curve testing examines the timing profile of the test object, including execution flow, data access, functions, and system calls, to identify and resolve performance bottlenecks and inefficient processes.
Stress testing focuses on ensuring that the system can perform as expected when encountering abnormal conditions.

RUP's division of testing phases
Implemented early in an iteration, unit testing focuses on verifying the smallest measurable element of the software. Unit testing is typically applied to components in the implementation model, verifying that control flow and data flow have been covered, and that components work as expected. '
Integration tests are performed to ensure that the components in the implementation model function properly when integrated to execute the use case. Integration tests will reveal imperfections or errors in the package interface specification.
System testing occurs when the software operates as a whole or implements a well-defined subset of software behavior, in which case the goal is the entire implementation model of the system.
Acceptance testing is the last testing operation before software is deployed to ensure that the software is ready and available for end users to perform the software's intended functions and tasks,
AEP automatic error prevention method
AEP Automatic Error Prevention, a software testing method advocated by Parasoft in the United States, aims to help software companies move from inefficient error detection to comprehensive automatic error prevention.
method of persistence
Identify errors
Find out the cause of the error
Locating products produced to the wrong place
Modify the existing time to ensure the same error does not recur
Keep checking this practice to monitor if the practice is being followed

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325593370&siteId=291194637