1.Software lifecycle(SDLC)Six stages
1. Problem definition and planning
This stage is a joint discussion between the software developer and the demand side, mainly determining the software development goal and its feasibility.
2. Requirement Analysis
When software development is determined to be feasible, detailed analysis of each function required by the software is performed. The demand analysis stage is a very important stage. Doing well at this stage will lay a good foundation for the success of the entire software development project. "The only thing that remains unchanged is the change itself. ", The same requirements are constantly changing and in-depth throughout the software development process. Therefore, we must develop a demand change plan to cope with such changes, so as to ensure the smooth development of the entire project.
3. Software Design
In this phase, the entire software system is designed based on the results of the requirement analysis, such as the system framework design and database design. Software design is generally divided into the overall design and detailed design. Good software design will lay a good foundation for software programming.
4. program code
In this phase, the results of the software design are converted into code that can run on a computer. It is necessary to develop a uniform program code that complies with standard compiling specifications. To ensure the readability and maintainability of the program, and improve the running efficiency of the program.
5. Software Testing
After the software design is complete, it must undergo rigorous tests to identify and correct problems existing in the software throughout the design process. The entire testing process is divided into three phases: unit testing, assembly testing, and system testing. The testing methods include white-box testing and black-box testing. In the test process, a detailed test plan should be established and tests should be carried out in strict accordance with the test plan to reduce testing randomness.
6. Operation and Maintenance
Software maintenance is the longest stage in the software life cycle. After software development is completed and put into use, the software cannot continue to meet user requirements due to various reasons. To continue the service life of the software, the software must be maintained. Software maintenance includes corrective maintenance and corrective maintenance.
2Software lifecycle model
From the moment the concept was proposed, the software product entered the software life cycle. After requirements, analysis, design, implementation, and deployment, the software will be used and enter the maintenance phase until the end of the process is gradually extinct due to the lack of maintenance costs. Such a process is called "life cycle model ).
Typical life cycle models include waterfall models, rapid prototyping models, and iterative models.
The characteristics of the waterfall model (the document is the subject), many problems will be exposed at the end. Iterative models are exposed earlier than waterfall models. The rapid prototyping method is more intuitive than waterfall models.
3. Software Testing concepts
Broad concept: refers to all inspection, review, and validation work in the software life cycle, including the review and validation of various documents and codes in the analysis, design, and post-development maintenance phases.
Narrow concept: process of identifying Software defects, that is, inconsistency between actual results and expected results
4.Software testing purpose
Ü the purpose of the test is to discover various defects in the software.
Ü tests can only prove that the software has defects, and cannot prove that the software does not exist defects
Ü testing can reduce defects in the software to a certain extent, rather than completely eliminating them.
Ü identify various errors and defects in the software with less use cases, time and manpower to ensure the quality of the software
5. Software Testing principles
Good-enough: a measure of the input/output ratio.
Ü ensures the coverage of the test, but it is impossible to perform the exhaustive test.
Ü all tests should be traced back to user requirements
Ü the earlier the test, the better. The test process should be combined with the development process.
Ü Testing Scale from small to large, from unit testing to System Testing
U. In order to discover errors as much as possible, it should be tested by an independent third party
Ü you cannot modify the program for convenience of testing
Ü test what the software should do and what the software should not do
6. Focus of software testing
Ü Test Case Design
-The design of test cases is the core of software testing.
-The test case reflects the quality requirements of the tested object and determines the quality evaluation of the tested object.
Ü Test Management
-Especially for large-scale software systems that contain multiple subsystems, the testing work involves a lot of manpower and material resources. Effective Testing Management is a necessary prerequisite for ensuring effective testing.
Ü establish a test environment
-The test environment should be consistent with the actual test environment.
7. Black box testing
Ü What is black box testing?
-Also known as function testing or data-driven testing, it is used to test the functional requirements/implementations of the software. It is used to test whether each function meets the requirements, regardless of the internal logic structure of the program.
Ü black box Testing Method
-Function division
-Division of equivalence classes
-Boundary Value Analysis
-Reason
-Incorrect Prediction
8. What is white box testing?
-The white box test, also known as the structure test or logic-driven test, must know the internal working process of the software and test whether the software runs properly according to requirements and design.
-Main white box testing methods
-It corresponds to some main structures of the program: Statements, branches, logical paths, and variables. The main methods for white box testing are:
-Statement overwrite Method
-Branch coverage Method
-Logic coverage Method
9.What is dynamic testing?
Dynamic Testing must run the software in the development/test environment or the actual running environment, and use test cases to find Software defects; dynamic Testing includes function validation and interface testing, coverage analysis, performance analysis, and memory analysis.
10.What is static testing?
Static testing does not actually run the software. It mainly evaluates the programming format and structure of the software. static testing includes code check, program structure analysis, and code quality measurement. It can be performed manually or automatically using software tools.
11.Manual and automatic tests
A. The disadvantage of manual testing is that the testing workload is large and there are many duplicates, making it difficult to implement regression testing.
B. Automated Testing uses software testing tools to automate all or part of the testing work: management, design, execution, and reporting; saves a lot of test overhead and can complete some tests that cannot be implemented by manual testing.
Ü manual completion of the entire test process cannot ensure the scientific and strict nature of the test:
-The more defects modified, the more difficult regression testing
-No one can provide precise data to the decision-making layer to measure the current work progress and work efficiency.
-Fatigue and other human factors resulting from repeated tests make the test standards different
-The longer the test takes, the less rigorous the test.
Ü automated testing frees testers from repeated and complex test execution and uses more time for test design and result analysis.
Ü software testing cannot be completely automated
Ü all manual test tasks cannot be completed
Ü no creativity and poor flexibility, cannot improve the effectiveness of the test
Ü many unexpected problems may occur during the process, especially when the software is unstable.
Ü high maintenance of test scripts