A beginner's guide to software testing

The purpose of writing this article is to help new testers better understand the software testing industry and its development prospects. Let newcomers no longer know nothing about the industry, and easily enter the software testing industry.

1. Responsibilities of software test engineer

With the development of technology, various applications and Apps have emerged as the times require! In the early days, these applications were only used by developers, products, and some users, and they gave corresponding revision opinions. After they felt OK, they went online. They could be used directly on the Internet or on some app download platforms, without any specification. software testing! There are more or less bugs in these softwares, and these bugs may be problems in functions, compatibility, performance, etc.!

In order to improve the problem of low software quality, the industry of software testing has only begun to receive attention! The purpose of software testing is to improve software quality and give users a better experience!

A software test engineer is to understand the functional requirements of the product, test it, check whether the software has defects (Bug), test whether the software has stability (Robustness), security, ease of operation, etc., and write corresponding test specifications and dedicated staff for test cases.

Responsibilities of a software test engineer:

1. Write test cases according to requirements documents and design documents;

2. Complete product integration testing and system testing;

3. According to the test plan, build the test environment;

4. Execute manual testing based on test cases, feedback and track product bugs and use case defects;

5. Research and application of testing tools/systems;

Second, the characteristics of the software testing industry

There are many students around me who have switched careers to software testing, and I often ask them why they are software testing engineers? I often ask this question during interviews, and the answers can be roughly classified into two categories:

I like testing this job; IT salary is high, I want to work in IT, but I don't know how to program, and the testing threshold is low. I admire colleagues who like testing work very much. I also joined the testing family because I like computers and the threshold for testing is low. Later, I like to enjoy the sense of accomplishment brought by the test, and enjoy the joy of locating the problem alone.

I briefly sorted out the characteristics of several software testing professions for your reference.

Quick entry, high salary, relatively low academic threshold, high market demand, low employment competition, long career life, and broad development space 3. Development of software testing

In a broad sense, the development of testers is divided, that is, it is not limited to testing their own work, and there are roughly 6 major categories of directions. There are three core skill elements that determine different development directions, namely:

Three core elements: business development, management development, and test development.

business development

Business development brings the pursuit of quality and speed, which is the main line of development of the entire industry. The needs of business development have affected product development and testing. It is as greedy as capitalists, and it is always pursuing breakthroughs in bottlenecks and faster and better development. It determines the life and death of many companies and the future of engineers in many industries. R&D, products, and QA all serve the business.

Technological development

Technology is an important part of productivity, and the development of technology is accelerating. Every qualitative change will bring some major changes, and the maturity of technology determines how much the test industry can achieve. As a test engineer, you must be good at using the current technology stack to create solutions that meet current needs.

management development

The main body of the company will never stop pursuing simple and efficient management. Every step forward in technology and tools means that the ability of organizational communication is enhanced. The direction of management will gradually be flattened, with fewer and fewer senior management and more and more front-line management. One of the embarrassing things about the testing industry is the disappearance of the large quality department model, which has caused the development of the testing industry to encounter a ceiling. If the R&D and products cannot be held, the development of the testing industry will not be able to advance well.

According to the mastery of the three core skills and the intersection points between them, they can be roughly divided into six categories:

Management Direction: Test Supervisor, Test Manager, Project Manager, Quality Manager, Technical Support Manager, Pre-sales Test Manager Test Technical Direction: Senior Test Engineer, Test Technical Expert, Test Consulting, Outsourcing Test, Vocational Education and Training Business Technical Direction: Developer , system analysis engineer, demand analysis engineer, solution expert, market research and product planning, industry testing expert Technical support direction: pre-sales support, technical support, customer service, customer training, external problem solving Quality assurance direction: QA, quality audit personnel, quality improvement personnel, risk analysis personnel and other directions: document development, sales personnel, pre-sales testing, marketing personnel, and project maintenance personnel only represent the specific directions of the major directions, and the superior and subordinate are not identified between each direction/position. hierarchical relationship

From the basics of software testing to the actual project

 

Fourth, the process of software testing

Regardless of development or testing, there is a demand side, through communication with the demand side, integrating information, and formulating a demand specification! Requirements specification: refers to the text of the user's requirements for software functions, performance, compatibility, UI, etc.! Development Develop and design programs according to the requirements specification! However, some companies do not provide requirements specifications, and most companies use meetings and design models as requirements irregularly in this part. The purpose of this is that the requirements are not clear, and the communication cost is too high!

The following is a test flow chart that I think is more rigorous or standardized:

Five, software testing classification

Classified by method:

Black box testing: It is understood that the internal structure cannot be seen, usually to check its function. White box testing: you can see the internal structure and detect the internal code. Gray box testing: A combination of black box and white box testing. Classified by direction:

Functional testing: testing the functionality of the software. Performance testing: stress testing, load testing, concurrency testing, etc. Security testing: testing the security of the software. Classified by stage:

Unit test: method, function, class Integration test: interface System test: function, performance, security, compatibility, usability, stability, UI, etc. Acceptance testing: Acceptance is classified by object:

App testing web testing IoT testing. . . Sort by status:

Static testing: test code according to white box testing Dynamic testing: testing according to black box or gray box Other:

Smoke test: The test before the test, probably to detect that the software is not testable (it can be understood that there are problems with random testing) Regression test: After feeding back the problems that occurred in the test, retest the problem. α test: internal test β test: public test 6. Introduction to software testing

1. The life cycle of software testing

Test requirements analysis-->test design-->test plan-->test execution-->quality assessment

2. Basics of software testing

The basics of testing are the most important part of software testing. As long as you are doing testing, no matter what kind of testing it is, the basics and theoretical knowledge of testing must be learned.

Definition of software testing: Describes a process used to facilitate the verification of the correctness, integrity, safety, and quality of software. In other words, software testing is a review or comparison process between actual output and expected output.

The classic definition of software testing is: the process of operating the program under specified conditions to find program errors, measure the quality of the software, and evaluate whether it can meet the design requirements.

Testing method: Software testing is the process of using manual or automatic means to run or measure a software system, the purpose of which is to check whether it meets the specified requirements or to clarify the difference between the expected results and the actual results.

From the perspective of whether you care about the internal structure of the software and the specific implementation, the testing methods mainly include white-box testing and black-box testing. White-box testing methods mainly include code inspection, static structural analysis, static quality measurement, logic coverage, basic path testing, domain testing, symbol testing, path coverage, and program variation. Black-box testing methods mainly include equivalence class division method, boundary value analysis method, error guessing method, cause-and-effect diagram method, decision table-driven method, orthogonal experiment design method, function diagram method, scenario method, etc.

From the perspective of whether to execute the program, the test method can be divided into static test and dynamic test. Static testing includes code inspection, static structural analysis, code quality measurement, etc. Dynamic testing consists of three parts: constructing test cases, executing programs, and analyzing the output results of programs.

Software test plan: The test plan of a software project is a document describing the purpose, scope, method, and focus of software testing, etc. of the test. Writing a test plan document is a useful way to verify the acceptability of a software product.

A good test plan can play the following roles:

Integrate the testing effort with the overall development effort; resources and changes are considered a manageable risk in advance. Test plan: The test strategy is a part of the test plan.

The test plan is to analyze or decompose the requirements from the perspective of testing, specify how to test in the direction, and the analysis results are the test points and test methods.

The test plan includes:

Introduction (including a, writing purpose; b, expected readers; c, reference materials); test scope; test strategy (considering different test methods according to different test types) overall writing ideas for test case writing: black box test case (priority ) + white-box test cases (supplementary) = complete test cases

Overall writing strategy: For test case writing, the four commonly used methods are basically enough, equivalence class, boundary value, orthogonal experiment method, error inference method, supplemented by scenario test method, requirement/design conversion method, Exploratory testing ideas can handle the testing of most products. Individual products still need to be refined and expanded at a certain point, and it needs to be discussed as it stands.

Definition of BUG: The product manual stipulates something to be done, but the software does not implement it. For example: the product manual requires the calculator to implement addition, subtraction, multiplication and division functions, and the calculator made cannot perform division operations. This is a BUG . What the product manual stipulates not to do, but the software realizes it. For example: the product manual requires the calculator not to implement functions other than addition, subtraction, multiplication and division. The calculator made can not only perform addition, subtraction, multiplication and division. , can also perform power or trigonometric function calculations, which is also a BUG. Things that are not mentioned in the product manual, but the software has realized, for example: the product manual requires the calculator to implement addition, subtraction, multiplication and division functions, and the calculator made can also perform power calculations, which is also a BUG. It is not mentioned in the product manual, but it is something that must be done, but the software has not implemented it. The product manual requires the calculator to implement addition, subtraction, multiplication and division functions, but it does not mention that it can be used normally when the battery is very low. And the calculator made is wrong when the battery is low, which is also a BUG. The software is difficult to understand, difficult to use, and super slow. The problems that testers see from the perspective of end users are common but not correct. The product manual requires the calculator to implement addition, subtraction, multiplication and division functions. However, the text or logo used by the buttons is not clear, such as: the "plus" button is represented by "and", or it takes 1 minute or more to calculate 1+1, which is also a BUG. Classification of BUG: fatal bug: the system cannot fully meet the requirements, the system stops running, important parts of the system cannot run, the system crashes or hangs, etc., causing the system to not run normally.

Serious bug: Seriously affects the realization of system requirements or basic functions, and there is no correction method (reinstalling or restarting the software is not a correction method). Make the system unstable, or destroy data, or produce erroneous results, or some functions cannot be performed, and it is a major problem that often occurs in routine operations or unavoidable in non-routine operations. The system cannot meet the main business requirements, performance, functions or Usability is severely reduced.

General bug: The system can meet the business requirements, the system performance or response time slows down, and wrong intermediate results are generated but the final results are not affected.

Low-level bug: It makes the operator inconvenient or troublesome to operate, but it does not affect the performance of work functions or important functions. Minor problems such as spelling errors or inconvenient use of the interface or problems that need to be improved

The eight elements of BUG: Defect number: the unique identifier of the defect Defect status: the progress of the defect tracking process Defect title: an overview of the defect, describing the essence of the problem Reproduction steps: step by step description of the operation steps to reproduce the defect Severity: defect on The degree of influence of the software system Priority: the importance or urgency of repairing defects Defect type: according to the source of the defect and the type according to the division Test environment: test environment configuration, including operating system and browser BUG life cycle Submit bug— Assign bugs—handle bugs—verify bugs—close bugs

From the basics of software testing to the actual project

 

New, Confirm, Resolve, Revalidate, Close, Reopen

Relationship between testing and development process

Waterfall: Proceeds in a linear fashion, with the current activity receiving the work of the previous activity. The results of the work need to be verified, and it is irreversible from top to bottom, so the efficiency is low, and if errors are found, all must be overturned and redone

Planning-→requirement analysis→design→coding→testing→operation and maintenance

Role: The waterfall model is the basic framework of all other models and plays an important role in software engineering.

The waterfall model is a software development model that proceeds in a linear sequence because each stage of the waterfall model is executed only once.

In the waterfall model, the testing phase is after the software implementation, that is to say, there is enough time reserved for testing activities after the code is completed, otherwise it will lead to insufficient testing, thus directly leaving defects to customers.

V-shaped: The V model is an improvement of the well-known waterfall model. The development group is on the left and the test group is on the right. There is such a one-to-one relationship

The W-shaped (double V) W model evolved from the V model. In fact, the development is a V, and the test is a parallel V. Compared with the V model, the W model increases the verification and confirmation activities that should be carried out simultaneously in each development stage of the software. W clearly shows the parallel relationship between testing and development.

The w model is developed and tested together, and the test is also based on user needs, so there is no need to wait for the development to be completed before testing. Therefore, when testing the test design, you can not only refer to the outline design of the development, but also refer to the previous demand analysis, etc. .

Spiral plan making→risk analysis→implementation engineering (requirements confirmation, software requirements, software product design, design confirmation and certification, detailed design, development, testing)→customer evaluation

From the basics of software testing to the actual project

 

Features:

The spiral model combines the waterfall model with the rapid prototyping model and emphasizes the risk analysis neglected by other models. Each spiral includes 4 steps: planning, risk analysis, implementation engineering, customer evaluation (equivalent to a progressive process, each A spiral contains these four steps) PDCA: The meaning of the PDCA cycle is to divide quality management into four stages, namely Plan (plan), Do (execution), Check (check) and Act (processing). In the quality management activities, it is required to make plans, implement the plans, check the implementation effect, and then include the successful ones into the standard, and leave the unsuccessful ones to be solved in the next cycle. This working method is the basic method of quality management, and also the general law of enterprise management.

1. P (Plan) plan, including the determination of guidelines and goals, and the formulation of activity planning.

2. D (Do) Execution. Based on the known information, design specific methods, plans, and plan layouts; and then carry out specific operations based on the design and layout to realize the contents of the plan.

3. C (Check) Check, summarize the results of the implementation plan, distinguish what is right and what is wrong, clarify the effect, and find out the problem.

4. A (Act) processing, processing the results of the summary inspection, affirming and standardizing the successful experience; summarizing the lessons of failure and drawing attention. Unresolved issues should be submitted to the next PDCA cycle for resolution.

The above four processes do not end after running once, but go on again and again. After one cycle is completed, some problems are solved, and the unsolved problems enter the next cycle, so that the stepwise rise.

5W2H: Ask five English words starting with W and two English words starting with H to find clues to solve problems, find ideas for inventions, and carry out design ideas, so as to come up with new invention projects. This is called 5W2H method .

(1) WHAT - what is it? What is the purpose? What work do you do?

(2) WHY - why do it? Can you not do it? Is there an alternative?

(3) WHO - who? Who will do it?

(4) WHEN - when? What time do you do it? When is the best time?

(5) WHERE - where? where to do it

(6) HOW - how to do it? How to improve efficiency? How to implement it? What is the method?

(7) HOW MUCH - how much? To what extent? What is the quantity? What is the quality level? What is the cost output?

3. Tool learning

Test management tools: TestDirector (large and comprehensive), jira (simple and easy to use), Quality Center (complex, charged), Zen Road (simple and easy to use), bugzilla (simple function), svn (code and document management tool), vss Similar to svn, git, the same as svn, but multi-branch management is better than svn, Note (large and comprehensive, too expensive), CQ (ClearQuest-IBM product-large and comprehensive);

Interface testing tools: Jmeter (open source), postman, SoapUI

Performance testing tool: loadrunner, large and comprehensive, it is still a bit difficult to learn proficiency, a heavyweight tool

C/S automation tool: qtp (recording playback and script editing), using vb language, winrunner IBM products are similar to qtp, autoit is very good at window positioning;

White box testing tools: jtest java language unit testing framework, JUnit verification java tool, cppunit cross-platform c++ unit testing framework, gtest cross-platform c++ unit testing framework, PhpUnit Php, BoundsChecker C++, Delphi API and OLE error checking, Pointer and leak error checking, memory error checking, TrueTime C++, Java, Visual Basic code running efficiency checking, component performance analysis

Continuous integration tools: jenkins, Hudson

App automation tool: appium This should be regarded as the most popular app-based automated testing framework at present, the automated testing framework under the instruments ios platform, written in java language, uiautomator Android automated testing framework, basically supports all event operations of Android, Monkey Android's built-in testing tool, Monkey Runner Monkey improved version, supports self-written script testing, uses Python language, Robotium is a foreign Android automated testing framework, and its usage is relatively simple;

Web security testing tool: appscan, which is a tool that is used a lot

If you are just getting started, you need to learn the tools and knowledge points, just learn them in order.

Simple network protocols: TCP/UDP, HTTP/HTTPSLinux basic operations and common instructions. Basic operation of MySQL database and common SQL statements. The use of fiddle capture tool. The use of postman interface testing tools. The use of jmeter and loadrunner performance testing tools. 4. Code learning

Regarding the choice of programming language, I recommend Java or python. There is also a database that must be mastered!

Learn a programming language, but you don't have to learn as deeply as development. For example, Java, you only need to learn the JavaSE part is enough for you. The same is true for python, just learn the basics.

The above are the knowledge and skill tools that beginners in software testing need to master. There must be no problem with primary testing.

From the basics of software testing to the actual project

 

Guess you like

Origin blog.csdn.net/m0_37449634/article/details/131581955