In our various apps to access each** In the past two years, we have also seen problems with the apps of many large manufacturers, such as Meituan Takeaway, such as Alibaba Cloud and WeChat, and to avoid these big problems, we need to find software problems as much as possible before the software is launched, which is what we call testing, that is, testing the software, and finding the cause of the problem is the purpose of our software testing.
Before understanding what software testing is, we must first understand software defects, because the purpose of software testing is to find software defects, find the causes, and assist in solving them.
Software defects: This is what we know as "bugs". That is, some kind of problem, error, or hidden functional defect in computer software or programs that disrupts the ability to function normally.
Manifestations of defects:
The software does not implement the functional modules required by the product specification;
The software has an error that should not have occurred as indicated by the product specifications;
The software implements functional requirements that are not mentioned in the product specifications;
The software does not achieve what should have been achieved although not explicitly mentioned in the product specifications;
The software is difficult to understand, not easy to use, slow, and has an unfriendly user experience.
Causes of software defects:
The requirements are not clear;
The structure of the system is complex;
Incomplete consideration of the logical path of the program or the scope of the data;
Ensure precise synchronization of design time;
There are systemic and reliable hidden dangers;
The complexity of the system operating environment;
When there are many communication ports, the security and applicability of the system will be affected
Problems with the compatibility of design technology systems.
Definition: Software testing is the process of executing a program or system to find bugs.
Software testing should follow the following principles:
Comprehensive: Covers all possible scenarios and use cases, both normal and abnormal.
Independence: Testing should be independent of development and should be carried out by a dedicated testing team or professional testers.
Early start: Testing should start early in software development to catch defects early and at a lower cost.
Defect concentration: When a defect is found, it should focus on the root cause of the problem rather than a surface fix to avoid recurrence of similar problems.
Automate as much as possible: Increase efficiency and reduce human error with automated testing tools.
Continuous improvement: Testing processes and strategies should be continuously improved to adapt to changing software and requirements.
Software testing strategy
A software testing strategy is a template for software testing in the software engineering process, i.e., a series of steps that put a specific test case approach into
Features included in software testing:
Testing starts at the module level and expands to the entire collection of computer-based systems
Different testing techniques are available at different time points;
Tests are managed by developers and independent test groups
Testing and debugging are different activities, but debugging must be able to adapt to any testing strategy.
There are many ways to classify software testing, but here are a few commonly used ones:
Software development phases
Unit tests. Refers to the inspection and verification of the smallest testable unit in the software, and the unit test needs to design test cases from the internal structure of the software. Multiple modules can be tested independently.
Integration testing. Assembly test Joint test: Assemble all modules into subsystems or systems for integration testing according to the design requirements.
System testing. The software, computer hardware, peripherals, networks and other elements that have been confirmed are combined to carry out various assembly tests and confirmation tests of the information system, and the system test is a test for the entire product.
Acceptance testing. Delivery testing: Ensure software readiness.
By testing technology
White Box Testing: Structural Testing, Clear Box Testing, Logic-Driven Testing, **-based testing.
Black-box testing: Functional testing: By testing whether each function works properly.
Gray box testing: A testing method between white-box testing and black-box testing: focusing not only on the correctness of outputs and inputs, but also on what's going on inside the program.
Whether the software under test is actually running is divided
Static test: It refers to not running the program itself, but only checking the correctness of the program by analyzing or checking the syntax, structure, process, interface, etc. of the source program.
For **test: mainly test ** for compliance with the corresponding standards and specifications;
For interface testing: the main test is whether the actual interface of the software is consistent with the description in the requirements
For document testing: The main test is whether the user and the requirement description meet the actual needs of the user.
Dynamic test: It refers to the operation of the program under test, to check the difference between the running results and the expected results, and to analyze the performance of the operation efficiency, correctness, robustness, etc.
Test type division
Functional testing is mainly used to test the software according to the product requirements specification to verify whether the software functions meet the requirements, including the inspection of the original functions and the testing of whether the software has redundant functions and missing functions.
Interface test, mainly to test the interface of the system, test whether the user interface is friendly, whether the software is convenient and easy to use, whether the system design is reasonable, whether the interface position is correct, etc.
Performance test, which mainly tests whether the performance of the system meets the needs of users, that is, verifies the capability status of the system under specific operating conditions. The performance test is mainly to simulate the normal, peak, and abnormal load conditions through automated test tools, and test the performance indicators of the system.
Strength testing, forcing the system to operate with abnormal resource allocation. The goal is to find errors caused by insufficient resources or resource contention.
Stress testing, which is mainly used in an overloaded environment to check whether the system can function properly.
Security testing, which tests the system's ability to prevent unauthorized intrusions.
Compatibility testing tests test the compatibility of software products on different platforms, different utility software, or different versions of the same utility software.
The installation test mainly verifies whether the software can be installed correctly, whether the settings of the installation file are valid, whether the entire computer system is affected after installation, whether the software can be uninstalled cleanly, and whether the entire computer system is affected after uninstalling the software.
Document testing, which mainly checks the clarity and accuracy of internal or external documents.
V model.
w model.
H model.
x model.
Software testing is an important part of ensuring software quality, which is not only related to the stability of the product and user experience, but also directly affects the reputation and interests of the enterprise. Understanding the basic principles, objects, and functions of software testing, as well as the types and effects of defects, is important for us to learn software testing.