An article to understand what is testing, what is testing for?

Testing is now generally considered to be under the general term of "guaranteeing product quality", but what is testing itself? Today we will discuss with you about the test itself.

Testing is a follow-up activity during the entire process of product development. It reports to people the status of the current project at each stage, and can urge and prompt the project manager or senior manager to focus on the project.

The definition of domestic testing is generally a series of activities to verify the function of the product in the later stage of product development.

Foreign testing has already taken shape, while domestic testing is still in the exploratory stage. As for the development beyond that direction, I think everyone is still in a rather confused stage.

The main reason is: the domestic software industry started late, and the quality awareness is not strong, resulting in the slow development of the software industry, supporting industries (slow development of testing), I think this is normal, because from the perspective of human historical development, this is a must The stage of experience, from having this concept to exploring, the current domestic testing should be in the contemplation period, mainly because there is no complete set of guiding ideology, and another reason is that the development direction of the industry is not clear.

There is a misunderstanding of testing in China, so testing has now become a springboard for everyone to enter the enterprise, or they feel that their ability is not enough, and they can only engage in testing at present, or they do not have the ability to write programs, but they are familiar with similar products, so do a test.

If we organize the testing method into technology, then it forms a rule or a ruler. We just analyze what kind of product needs to be tested, and what is the knowledge structure that needs to be understood? How to intersperse these knowledge, then the accumulation will not be restricted, but experience cannot be ignored, because experience itself is the basis for designing a good case, but not the only basis.

Let's take a look at the design of the test case. The design of the test case in China is now written by some people who have just entered the industry who can't write programs or who have poor program skills. Then the cases designed by these people only include the entire test process. It is only a part of the case of functional testing, because they do not understand or do not understand the program. They do not analyze the product from the principle or logic, but analyze the product from the perspective of the user. The feasibility and How reliable is it? Everyone can imagine. Therefore, in the whole process of guiding everyone, we track and describe from the technology and method, combined with specific examples and testing methods for different types of products.

First, what is a test? What is the test for?

Testing is an activity in the development process, which is divided into white box testing and black box testing. Different people at different stages take on the role of testing, and we refer to the whole activity as testing.

The work content of the test mainly includes designing the test plan, designing the test case, executing the test and summarizing the test.

Execution testing is carried out during the entire process of product development, including unit testing, system testing, integration testing, system testing and acceptance testing, so the focus of testing in different stages is different.

The focus of unit testing is at the function level, including requirements, algorithms, and interface reservations.

Integration testing refers to the combination of small modules. The focus of the test is input and output data, parameter processing, error preprocessing, interface specification, parameter constraints and other test content.

The focus of the system test is the functional nature, and its test focus is to compare the test according to the requirements, mainly the implementation of the function, including the use logic and operation logic of the function, the operating system, compatibility (software and hardware), etc.

Acceptance testing is mainly in terms of the nature of the contract. There are many software outsourcing situations in foreign countries, so both parties perform their duties according to the contract, and compare the functions according to the form stipulated in the contract. This is the main aspect, so within the enterprise, acceptance testing is not only functional acceptance, but also includes usability, software affinity and other aspects.

Classification of tests

unit test

Unit testing is the smallest granularity in the testing process. It closely follows the program framework to test the functions and modules of the product during the execution process, including storage and export parameters, input and output information, error handling information, and partial boundaries. Numerical test.

This part of the testing work is now carried out by developers in China. I believe that the future development should be test engineers to do this. Then testers need to deeply understand the program, understand the requirements, and understand the design, so that they can find problems.

There is also a method of first operating in China, that is, after a module is given to a certain development engineer, he needs to explain to everyone the overall process and ideas he wants to complete the module or function, and conduct a unified review, so that the problem can be exposed more clearly. More fully, the purpose of doing so is as follows.

First, let everyone have a clear understanding of the designer's thinking, so that they can really put forward requirements or relatively perfect cooperation when calling or cooperating in the future.

Second, during the review process, if you find a problem, you may not have committed it, so you will be more vigilant. If you have committed it, you will recall how you solved it or avoided it at that time, so that everyone can correct it in the wrong process. rapid improvement.

Third, we can accumulate common mistakes. I think this is a vivid textbook, which can make new personnel encounter such problems when they are new, and we can give them a solution or direction to solve the problem.

Looking back, we have introduced two methods to you above. The first is to test in the development process, and the development (test) engineer writes the test code to test the written function or module. The second is to pass The code mutual evaluation finds problems, accumulates the problems, and forms a knowledge accumulation base, so that newcomers will not make mistakes in the same area.

Unit testing is very important, because the scope and width of its influence are relatively large. Perhaps due to a function or parameter problem, many appearance problems will be exposed later. And if the unit test is not done well, it will put a lot of pressure on the integration test or the subsequent system test, and the cost and progress of the project may soar.

For unit testing, many people use CPPUnit now, and there are other corresponding products on the market. They are in different stages of different software units. A correct understanding of the importance of unit testing is awareness, which needs to be continuously summarized and accumulated slowly in the process of improvement, so as to infiltrate quality awareness into all aspects of the entire open process.

To ensure the smooth progress of unit testing, it is necessary to infiltrate many ideas of software engineering, establish CMM and tracking mechanism, and classify and track problems. If the entire activity of software links is infiltrated, then the awareness of product quality will naturally be enhanced.

The idea of ​​COM is now fully reflected in large projects, because if the COM mechanism is not used, the cost of maintenance, upgrades, and modification tests will be very high, so now large-scale projects basically adopt the organizational form of COM.

Having said all that, what does unit testing do? Unit testing mainly does the following things:

First, the design draft of the module or function

No. 2, code specification, which includes code writing specification, alignment

3. Comments on the code. Very important

4th, parameter type, data length, pointer, array length

Fifth, input and output parameters and results

Sixth, whether the object was deleted after creation, if not deleted here, please indicate where to delete

No. 7, whether a variable that has not been initialized is applied, and if so, please indicate where the variable is initialized

No. 8, whether the variable is declared, and whether the declaration is carried out as required

No. 9, the conditions required to call this function need to be specified

No. 10, the system or other third-party plug-in functions are used in this function or module, and the system conditions that need to be met

Above I just listed some problems discovered or hidden during the testing process. I think there may be many other problems that may cause problems. Please add them so that they can be operable in your work.

Integration Testing

Integration testing is an action performed after unit testing is performed. The sign of integration is not that all codes can be integrated even if they are compiled and passed, but that all codes can run normally in this virtual environment.

The general method used in integration testing is data-driven or stub-driven, because integration testing cannot see the appearance of the product, because it is the middle of some data flow, and we are eager to analyze the intermediate data, so we can know or desire Know what is wrong with the process or algorithm.

Integration testing is more suitable for automated testing. Of course, we first analyzed that the conditions suitable for automation are satisfied. I will not talk about the detailed method here. I will mention this aspect in the introduction of automated testing later. Let's unravel the mystery of test automation with you and tell you some concepts about building smoke.

The source of the smoke test is that due to living habits and other reasons, people will do something on a regular basis, just like people will agree that 12:00 is the time for eating and leaving get off work. At that time, everyone will cook, haha, and naturally smoke will come from the chimney.

The agreement in the software industry is that when the product reaches a certain stage, in order to verify the connection degree of each part of the product, to verify the progress of the project, and to verify the overall stability of the product's (completed) functions, the test-led A test method, the main operation is, after the product development plan is customized, specify a complete compilation plan according to the development plan, according to the development plan and compilation plan, each unit completes its own work according to the requirements, and then verifies the completion at the compilation point degree.

Integration testing is also an indispensable part. In order to catch up with the progress, many units will omit this part and leave it to the testing team. If there is no corresponding testing team, it will be the programmers who simply use it and then deliver it to the market, which is dangerous. , it's a ticking time bomb. Because he is always likely to have the amount of market influence on the company, as well as the reputation of the company itself.

Integration test is a test in the test link after the unit test is completed, mainly to test the connection, interaction, input and output conditions between various modules and functions. So integration testing is also very important.

So what method is generally used for integration testing? Integration testing generally adopts a pile-driven method, because we check in relatively detailed unit testing, so the focus of integration testing is actually to ensure logic. I briefly introduce the implementation method of pile driving.

We can define a lot of stubs to improve test efficiency.

Let's briefly summarize the above content: integration testing is to test the cooperation between various components. So integration testing provides some basic guarantees for system testing, but don't rely entirely on it.

The method adopted is introduced to everyone, so that the test can be realized in the form of test or program coding.

System test

System testing is a turning point in the testing process, because in domestic companies, different products face different user groups, so some companies have passed the acceptance test of third-party products, and some companies have not passed the acceptance test, but For some tools or general-purpose products, the acceptance test is done by a large user group, that is to say, the system test of all general-purpose products must be rigorously tested before they can be put on the market. But for products customized for enterprises or other professional units, we must conduct acceptance tests.

System testing is a repetitive and repetitive work, and it is necessary to grasp several key points in the work. System testing is to ensure the normal operation of the system, including functions, ease of use, robustness, pressure, boundary value setting, etc. Content. If you want to find fun in this stage of work, you have to keep exploring, find out all the things that can replace people with machines, and find the pleasure of finding a job.

System testing requires a wide range of knowledge. The requirements for test engineers need to understand and master many aspects of knowledge. They need to understand the possible causes of problems and what may be the cause of this problem, so that we can supplement the test in time. Cases to ensure or reduce the risk of product launch.

At present, the development of the software testing industry is immature. Most of the system testing is done by the testing group, and the testing group will not touch the product until the system testing stage. We also briefly explain the system test.

At present, the system testing basically adopts the black box testing method, and is basically limited to the manual testing.

We don't know how the tested software is implemented or what it does. We only know what we want it to do and what we want. As for how the program is implemented inside, we don't care, we just care about the result. This is a purely black box test.

This stage is the main stage of testing to find problems, at least from the current situation of products on the market. At this stage, 60% of the problems will be exposed. If unit testing and integration testing are not performed, the amount of testing and testing points at this stage are very important.

The core of black box testing is to find the focus of the test? The entry point for the test is there. The repetitive workload of system testing is relatively large, and if it is a large-scale project, the content involved is relatively large, and if the organization is not good, or the focus is not found, it needs to be repeated over and over again. Therefore, the need for automated testing requires a reasonable design, so that our repetitive work can be minimized to improve work efficiency.

Acceptance Test

Acceptance testing is similar to customer verification of product quality. In the process of software industry development, various contracting projects similar to foreign outsourcing projects will continue to appear, so the quality of outsourcing projects needs to be discussed by everyone.

The operation process of the outsourcing project is that when the contractor proposes specific requirements, then the contractor will develop the project according to the requirements, including unit testing, system testing, integration testing and other aspects of testing, and the products tested by the contractor will be submitted to For outsourcers, an acceptance test is required. The acceptance test can be that the outsourcer itself provides a set of test plans, and then conducts product verification tests against specific requirements. It can also be that the two parties find a common third party to conduct product verification tests.

The focus of the acceptance test is mainly whether the product is developed according to the requirements, not the test for the function. Therefore, the acceptance test basically does not require much professional level, and it can also be that the contractor finds users who use the product to experience whether the product can meet the use requirements. In this way, both parties can have a common platform to avoid commercial conflicts.

The testing method of acceptance testing is currently still based on user experience. Testing against the requirements of the contract is a requirement for the third party to track and test whether the software can be achieved according to the consensus reached by both parties.

Test Methods

black box testing

As the name suggests, the black box means that the outside does not know what is going on inside the box or how to do it. It only knows that my input needs to respond, whether it is correct or wrong, it needs to have feedback information. Black box testing needs to understand how to use and operate the product, expose as many situations as possible, and test through this method.

The randomness of black-box testing is relatively large. After most cases are executed, about 40% of the functions can be tested. According to an official data in the United States, 20% of the problems are found during the development process, and 80% of the problems are In the process of system testing and integration testing, we still need to subdivide 80% of them, 20% are usage problems, 20% are program problems, 5% are logic problems, and the rest are inexplicable Question, such data is a guide for testing: to discover more problems, more thinking and more combinations are needed. This fearlessly increases a lot of workload, and people are tired of executing test cases, eager to discover new problems from them.

Such a case design idea makes the continuity and reusability of the entire test case poor when we develop a large-scale product or continuous product. So we need to correct a concept here. Black-box testing is not simple to use, and case design is not an unnecessary combination.

So how to design a good test case? How to combine the 2/8 principle well in the development process? At present and in the future, it is impossible to have a positive and perfect product without a single error, but as software engineers, we must hope that the products we participate in the development of are stable, easy to use, and people place unlimited praise. This is a luxury, so we To modify this extravagant hope, we are eager to participate in products that can meet the needs of most people at present. Is stability more reasonable?

white box testing

White box testing is a high-skilled test. It is a test based on source code. This test requires high requirements for the program. It needs to understand the structure of the program, specific requirements, and some skills in writing programs. Check some program specifications, pointers, variables, arrays out of bounds, etc., so that the problems are exposed in the early stage.

Mistakes that are easy to make in general programs, such as undefined variables, invalid references, wild pointers, exceeding array subscripts, not deleting after memory allocation, etc., cannot be called into the loop body, and the function itself is not destructed, resulting in loop failure or infinite loop. Parameters The type does not match, the function of calling the system does not take into account the compatibility of the system, etc.

White box testing is generally based on units or modules. The current approach is to attribute it to the category of development, use transferred or part-time people to look at the code or use some tools, such as the Rational series, Boundchecker and other tools, they can help humans find that variables are not initialized, pointer errors, etc. Greatly reduced manpower.

Let me talk about the most practical things about BoundChecker.

For example: We found a phenomenon: a software can not run under Win98, or there are always inexplicable errors, but it runs normally under Win2000 or higher systems.

The above is a phenomenon that we often encounter in daily testing. We analyze the possible causes of errors: the reason for the error in the operating system itself, which makes the software unable to run under this system. Another reason: the software uses a certain Some functions are not supported by this operating system. Another reason is that the hardware environment where the software runs cannot meet the requirements of this system.

gray box testing

Gray box testing is a test between black box testing and white box testing. The focus of this stage of testing is the logic between components. The focus of this period of testing is whether the parameters and logic of each DLL file are correct. Test The focus is on the DLL itself. Then use the stub driver to string together each DLL or function according to a certain logic, so that you can see the result output in a given situation when the product has no interface.

The requirements of gray box testing are relatively lower than those of white box testing, and the requirements for test cases are also relatively low. It is only required to be able to detect the ability of the DLL to process input and output, and the handling of abnormal conditions.

testing

Case Design Issues

Analysis: Generally speaking, the case design is very detailed, but there are too many repetitive and unnecessary things. I personally think there are three reasons:

1. The design case does not understand the framework of product design (from the perspective of program concept)

2. There is no feedback on the design of the case, and the coverage is unknown

3. The quality awareness of product development is weak, and the test pressure is too high

Fourth, there is no quality analysis of the testers, we can't see where the problem occurs

progress problem

1. Risks are not repeatedly considered in the overall test plan, and time is urgent

2. Regression testing cannot guarantee

Combined with the development model, we will analyze with you the period to be done in each period

How to read the requirements?

When we are testing, we need to read the requirements throughout the text, so how to read the requirements? What do you need to know? Where is the actual actionable one?

Let me explain my understanding in detail. We need to understand what type of product we need, what kind of basic knowledge this product requires, and we should supplement those basic knowledge. Are there similar or similar products on the market? Once there were those problems, etc., enrich yourself first. This is the main purpose and important purpose of looking at the needs.

Test Improvement Program

The existing problems have been analyzed above, and we need to find out where our weaknesses are. From the current point of view, we have not established a testing team and have not formed a corresponding system. Mainly manifested in the following aspects:

Test work requires feedback

Review 1, test case execution tracking and statistics are not clear.

Problem: If the test cases are not tracked, we cannot prove or test whether our case design is good or bad, and we cannot improve our working methods or our thinking. Therefore, we need to see our own problems clearly through this, which is conducive to the development of work.

In our daily life, there is such a phenomenon, because this phenomenon has led to the development of a series of tests. It is generally believed that the gold content of the test is not high, which leads to the fact that the test work is done by those who are unwilling or incapable of doing development. Second, they never seriously review the test cases of test design. matter. The willingness of this kind of problem is because the development has not clearly realized that testing is a service department that serves them. From the perspective of self-interest, we put aside the relationship between the project and the main work of testing is to help the development. The code written by yourself is more practical, more recognized by the market, and gives developers a stronger sense of accomplishment.

If everyone considers the problem from this perspective, it may alleviate or solve the second problem above.

Regarding the statement that the gold content of the test is not high, I do not agree with this statement. In the current domestic environment, the test is like this, but it is developing towards its own expectations. In the development of development, apart from the development of new languages, there is not much room for us to increase or conceive ideas or systems. As for testing, which is a brand new industry, its development first needs support and understanding. I believe that domestic testing After 5~10, the development is more rapid. Because even small software companies have begun to pay attention to testing.

Review 2, testing needs to have a common language with development

When you are happy or excited to find the problem, can you tell me the reason of this problem? When you find the problem, can you tell me where the problem may occur? Can you tell me where similar issues like this might occur.

Therefore, when you are testing, you are eager for the tester to fully understand the structure of the object under test, and then you need to supplement the basic knowledge for this type of software to supplement yourself, so that the developer will not tell you anything that you do not understand, or It's hard to understand, so if that's the case, I'd put a question mark on your personally designed test case.

Rely on your own basic knowledge and read the design manuscript in detail. If you can find problems or risks from the design manuscript, you will make great progress.

Review three, supplementary test cases

I believe that everyone has this experience. In the process of designing the case, everyone thinks about this and that, in short, they think in detail, but when we actually do the test work, we always find some bugs that have nothing to do with the test case we designed.

How could such a thing happen? Because we design cases based on our own experience and understanding of software to design cases, it is bound to cause such a situation. Now I advance a method. When designing test cases, I hope that everyone can draw a flow chart of the modules they are responsible for, including all exits and entrances, including how the information flow flows. If you can draw this graph completely, it will show your If the understanding is deeper, then the gold content of the design case will be high.

The test work needs to be summarized

The summary mechanism for the test does not

i. Execution of test cases

ii. The test case found the problem situation

iii. Redundancy of test cases

iv. Curve project progress during the test cycle

Need communication platform and form

Information Exchange Platform and Accumulation

v. Resource sharing

vi. Information sharing

vii. Improve your confidence in development, don't always cry wolf

viii. There is a need for communication and identification between people, as well as groups

What do testers communicate?

In an organization, everyone should be familiar with the design ideas and testing ideas of each module, and let everyone who designs it tell everyone and preach it, so that when everyone looks at this piece, they will know where problems are easy to go wrong. solved those problems. It is most effective if it is tested, and if the design case gets to the heart of the problem. In the design stage, if the design case is shown to the developer, some design defects can be avoided.

Everyone in the group should have a shared concept. The learning method I personally recommend is to steal. I have learned the essence of ideas from others for many years, accepting and absorbing them in a short period of time, which will improve the quality of the entire team. . If everyone is sharing, then everyone is making progress, so it is necessary to communicate, including ideas, including methods, etc.

method used

Let others speak for the service and know yourself clearly

Let the developers speak, let the corresponding developers give corresponding opinions to our test cases, ensure the coverage of the test cases, and grasp the key points.

Throughout the development process, the complete team of requirements, development, testing, and to be precise, the marketing part, we all attribute it to the search and definition part of the requirements. Then in the whole process of product development, all parts need complete cooperation, otherwise the whole product cannot be launched on time. As a testing part serving development and requirements, we should put ourselves in a correct position. We are part of a team and an indispensable part.

Self-knowledge is valuable, but it is difficult to have self-knowledge. Only on the basis of knowing yourself can you choose your own life path. First of all, we must recognize our own abilities. People's abilities can vary greatly, but as long as they live up to their material, they can have a clear conscience. Know yourself and avoid being arrogant, which will make you set unattainable goals for yourself, and in the end you will not achieve high or low goals. Second, recognize your own nature. Psychologists divide people into six types: economic, theoretical, social, aesthetic, religious, and power. Choose a life goal that suits your nature.

Once you see yourself clearly, you can improve yourself and do your own things well, and at the same time, you can serve you better.

look back

Let the personnel who execute the test case give us data feedback to explain the redundancy of the case, which will gradually improve their design level.

Because people are used to talking about grades, problems can be downplayed in grades, I don't agree with this point of view.

In fact, in real life, everyone has experienced many things and learned to summarize, but the same mistakes will appear many times in reality, why? It's because I looked back many times, didn't summarize, summed up and didn't implement it, implemented it without changing the method, changed the method but didn't seriously consider it, it was still wrong.

Listing the mistakes you have made, and then finding out the real cause of the problem is your greatest progress. If mistakes are downplayed, achievements may be wiped out in the future, so accumulation and turning back are issues that need to be paid attention to in work.

There is also an argument that says how much the company attaches importance to development and not to testing. I am actively disgusted with this argument. This is just a personal feeling. Why do you say that?

For a company, it's projects and products that make it live, right? From this aspect, development is important, but product quality is not important? Many people asked me this question, and I replied that it is important, very important, so why is the value of testing not reflected? There are mainly two reasons. One is that the company’s guidance is not correct. Colleagues in various departments are responsible for this project, not the development. The second is mainly because we are maintaining, not creating. If you tell Boss, we changed the testing strategy for this product, which can improve work efficiency. This product can be released 2 months in advance, and I guarantee the quality. I believe that your value is also reflected. If not, it means that you still haven't found a suitable method.

Learn about similar products

Let the market personnel feedback the problems of similar products and the market demand for our products. The testing process is to reflect the quality of the current product, why study competitors' products?

First of all, the test includes usability test, what to test? It is to test how easy it is to use, how customers use it, and how we design to be closer to users. If we don't study competitors, how can we gain the upper hand.

Secondly, understanding competitors' products is conducive to capturing the key points of the testing work and making the work beneficial and orderly.

It can be said that knowing yourself and the enemy, you can win a hundred battles, so in the current market competition, only by understanding similar products can you discover the shortcomings of the other party, attack them, discover the advantages of the other party, learn quickly, and fail behind closed doors.

increase self-quality

Understand the product from the concept of the program, so that the test case can be designed more targeted.

As the saying goes, "Knowledge is more important than talent", but knowledge is often created by life experience. For a fledgling person, the guidance of a wise man is crucial and sometimes even decisive. Looking back on my experience in the past ten years, many failures are actually caused by no one giving advice. To find a spiritual mentor, he can be your parents, it can be other teachers. He has a wealth of experience and does not stick to his own old experience; he can give you principled guidance and spiritual support at critical moments. Sometimes just the experience of his failure can benefit you greatly.

How to Improve Program Capability

Obsessed with

Let the developers or designers participate in the discussion of the development plan, so that they can be influenced by what they see and hear. In fact, this is just an auxiliary means.

After the TV series "Fearless" was broadcast, it was appreciated by everyone. The reason is that his father was not allowed to practice martial arts since he was a child because he was physically weak. Growing up in such an environment, he could see his brothers practicing martial arts every day, and the moves were already memorized in his mind. In the process of physical labor, he changed the way of working and took the opportunity to practice kung fu, and later developed into the original "Mi Zong Quan".

Programming and development is a hard work and a long-term thing. It is a process of accumulation and cannot be accomplished overnight. It requires painstaking practice, more understanding, and more thinking.

In the face of program development, don't put too much pressure on it, because program development is just like learning to speak, because the language itself has many commonalities, and there is not much difference between high-level language and low-level language, so learn from the basics. , so that it can be fully accumulated.

The speed of computer development is very fast, and various concepts and languages ​​are developing rapidly. Only by mastering the essence and continuous learning can we grasp it. So you still need to watch more, think more, and practice more.

Practice internal skills by yourself

Start from yourself, understand the program architecture and development model, and strive to improve your understanding and product unit testing or component testing capabilities, so that you can understand many algorithms of the program, so that problems can be found and obtained in time during the product development process. solution.

Secondly, it can improve everyone's sense of honor for participating in the project, because the testing itself is a service industry, and the service industry is characterized by constantly changing ideas, changing service models, and improving service quality. Throughout the research and development, you can find the feeling that you are also one of the molecules.

Third, practice internal skills to provide technical support for improving work efficiency in the future, performing some automatic tests, and designing test cases from the concept of program architecture.

The above is the use of self-practicing internal strength.

In the past society, there were many group arena competitions, the purpose of which was to compare skills and promote Chinese martial arts. The process of direct communication and learning between various sects, in order to achieve good results in the group arena competition, we need to practice hard, and secondly, learn more. Martial arts of sects and other sects, or self-created martial arts, can be brought into full play in the arena, because the highest state of martial arts is that there are no moves. To achieve this state, one needs deep internal strength, avoiding madness, perseverance, and innovation.

A theory is a theory, no matter where you see the theory is a certain foundation, because all theoretical foundations need a platform or conditions to prove the theory, all must be read, thought, and used. Look at how other people use it, under what circumstances, what problem is the purpose of using it, what kind of environment can it be made, what kind of support is needed; What can the environment do, how long will it take to build the other party's environment, what are the deficiencies in this approach, and what needs to be improved; look for it in your own work to see if you are suitable for using this thing , if it is suitable, how to use it, to what extent, if you agree with other people's approach very much, you need to measure how much resources and time you need, and try to find your own combination point.

Don't promote a theory or method when we see it, or try to practice it in a new environment after practicing a certain idea, it is not advisable. A good thing or a good way of doing things needs some conditions to support it, and once it is imposed, problems may arise.

Tested in practice

Try to do some grey-box testing part (currently an idea, but not perfect yet). Gray box testing is a borderline state between white box testing and black box testing.

test development

Testing is still in the exploratory stage in China. In the past development stage, we only initially produced different testing methods for different software, but we still need to continue to explore in terms of operation methods and operating procedures. For embedded software, the industry has always believed that embedded software is the most difficult to test, because it requires a wide range of knowledge and needs to analyze and test the design principles of each point.

At present, the concept of testing in the eyes of domestic development has not yet formed. We need to constantly change the image and deepen their impression of testing so that we can get more help and assistance.

Testing future development requires walking on two legs, so that the quality of products can be guaranteed in all aspects.

The first step is to continue to practice internal skills in system testing and improve the ability of case design

In the second step, gray box testing is required to test the product at the code level

The third step requires partial white box testing or execution by developers

To achieve certain recognition and development, testers need to study hard and lay a solid foundation

Only in this way can we succeed step by step.

how to improve test

To improve the test, you need to start from several aspects. In fact, it is just some of your own feelings. You don’t necessarily need to follow the steps.

Develop a complete test plan

Clearly understand the test plan, the test plan is a document, a guiding document that can ensure the smooth implementation of the entire development process, it describes several aspects of the problem.

1. Describe the purpose of the project

2. Describes the development cycle of the project

Section 3, describes the techniques encountered in the test

Section 4 describes the test case design cycle

Section 5. Describe the execution cycle of the test case

Section 6. Describes the tools or techniques used in the testing process

Chapter 7. Describes the resources used in the test process

Chapter 8. Describes the risks that may be encountered during the test and how to avoid them

Raise the level of case design

Clearly understand the current popular and practical methods of case design, because different products have different design methods for different requirements, we need to continue to learn and summarize, in the field of testing, many new words will appear.

This method is similar to the random extraction statistical analysis method in the industrial field, but the nature of the industry involves damage or human factors, and there are such deviations in the statistics. However, in terms of applications and software, although there are deviations, they cannot be as high as hardware. .

Equivalent method

To clarify the goal of the test, the scope that is generally suitable for use is to formulate all the data that the object to be tested is within the interval that satisfies a certain condition.

Case design method: select any one or two data from the interval data segment, as long as this data is satisfied, then other data are satisfied.

I now give some examples to illustrate how the equivalence method is applied in the testing process.

Example 1: It is necessary to verify the user name when logging in to a certain system. The minimum length is 6 characters and the longest is 14 characters. The name can contain numbers, but it cannot start with a number. It can contain various symbols and cannot contain Chinese.

1. Combine random letters into a 12-digit name, and test whether it can pass the verification.

2. Randomly generate a 12-digit name to test whether it can pass the verification

3. Test the 12-digit name starting with any number, and test whether it can pass the verification

4. Test whether the name length is 12 digits and contains Chinese, and whether the test can pass the verification

5. If the test length does not meet the conditions, whether to pass the verification

6. If the length is not satisfied, it starts with a number, and prompts for information verification

7. If the length is not satisfied, and the name contains Chinese, prompt information verification

………….

(Note:) This may be relatively simple, but it illustrates a problem: why a 12-digit name is randomly generated, in fact, the length of the 8-digit name or the length of the 10-digit name is the same, so in this case, consider using an equivalent method for comparison suitable.

Example 2: There is such a requirement that it is required to select between 1 and 12 for adjustment, and the backlight of the mobile phone will change with the change of the value. In general, the larger the value, the darker it is.

The above requirements are often seen by everyone.

Test case design: clearly remember the situation of 1, and then adjust a value at will, because the requirements have changed. As for what the change looks like and how dark it is, it is correct. There is no clear index value, so you only need to remember the street point 1 situation, then adjust a data at will, and then compare it with the current adjusted data.

(Note:) There is no clear explanation, only vague results, but the overall result is changing, so it is more suitable to use the equivalent method at this time.

causal analysis

It is necessary to have a certain program foundation and understand the structure of the program, that is, when a problem occurs, it can effectively supplement relevant cases or filter relevant cases. The core of causal analysis is to analyze the real cause of the problem from one's own understanding.

Example 1: Failed to delete a file on the disk, analyze the reason: if it is an administrator authority, then it can be deleted at will, no matter whether the attribute of the file is read-only or archived, then if the disk file cannot be deleted, unless it is on a bad track document. After the analysis is completed, the test case design is targeted, instead of blindly trying all file formats once.

Example 2: Suppose we use Excel to make a calculation, and the result is different from the result we calculated with a calculator.

Analysis: There is no error in the calculation function of Excel alone, and then inserting a row, the result is wrong, indicating that inserting a row causes a calculation error, so how can inserting a row cause a function calculation error? The reason is that after the row is inserted, the area passed to the calculation function is not updated, so the calculation result is wrong, so this bug is very clear.

Example 3: Suppose we usually find that a certain machine will crash when we are giving lectures. This is a phenomenon.

Analysis: Why does it die on this machine but not on other machines. There are two reasons. The first is to find the system reason. Is there a bug in our product under the current system? After verification, there is no problem. So where is the problem?

In fact, what the demo product needs is hardware support, that is, the graphics card. If the memory of the graphics card is not large enough, it may cause some demo files to die.

(Note) Causal analysis requires a wide range of knowledge, so that we can broaden the area and ambiguously locate problems during analysis.

Example 4: The user sends me a file, but when it is printed, it is found to be garbled. Later, I was forced to have no choice but to ask the user to fax this file to me. This is a phenomenon.

Analysis: Why is there garbled characters in printing? The basic positioning of the problem, the system font is not enough, the printing driver problem under the system, the printing virtual memory problem, the operating system problem, the software itself problem? Finally, the problem has been verified, and finally it comes down to the fact that there is a problem with the print driver under this operating system, which makes the file cannot be printed normally.

(Note: The scope of the question needs to be framed first, so as not to mess up the routine.)

logical analysis

In terms of logic analysis, a certain program understanding ability is also required. Judge problems from program logic and common sense. The logical analysis method is actually a list of a bunch of assumptions, inferring the assumptions of a series of results, and then overthrowing the assumptions, the problem can be exposed. No matter which method is used to analyze the essence of the problem through performance.

Example 1: When we are doing MP3 player fast-forward and rewind tests, the synchronization problem to be considered is the progress of the lyrics that appear on our LCD screen, and the time progress is different from the progress that our ears hear. Let's analyze why the out-of-sync phenomenon occurs, why the others can be synchronized, and only one or a few cannot be synchronized.

First of all, we understand the algorithm of synchronization: fast forward and rewind are calculated according to the data flow of the current song. It is based on the data flow of the current song as a coefficient, and then some adjustments are made. The coefficients are different, so considering the synchronization problem, we need to find songs with different formats and different data streams, so that the problem is easily exposed and the real cause of the problem can be easily located.

Example 2

Let's analyze the trading system in online games, that is, two people in the game trade items and money.

How to design the case here?

Boundary Numerical Analysis

In the process of test case execution, all adjusted data need to take into account the test method of boundary value, so I won't go into details here. But it should be noted that the test of the boundary value is not an enumeration, but a sampling method.

To avoid the misunderstanding of testing, market demand guides product quality

Testing is to verify requirements and ensure product quality. In any case, you can't do 100% testing, and it's impossible to make No Errors. Therefore, we determine different testing guidelines for different products and different market positioning.

Because the enterprise is facing the customers and facing the long-term interests of the enterprise, it is impossible for us to launch products hastily in order to cater to the market, but we need to research, investigate the real needs of the market, and provide users with the functions that users care about, so that other More perfect and more stable.

Let's analyze it from the perspective of the enterprise. First of all, any enterprise must need the support of the market space if it wants to survive. The purpose is to make a profit. I believe that many companies will choose market demand, because this is an opportunity to seize the opportunity for the survival of the company, especially for developmental companies. (Business reasons)

We analyze it from development, because in the development process, due to the high flow of software industry and the characteristics of rapid knowledge update, the risk increases, making it difficult to grasp the development cycle, which makes it difficult to control the product testing time. Because it is difficult to grasp the progress of development including the technical risk of market demands. (reason for development)

Let’s analyze it from testing. Testing is not available in many companies, so developers do it themselves. If there are testers, the testing is also very random, resulting in a lot of unpredictable risks reserved after the product goes on the market. The image is veiled (test mode)

Reasonable use of the 2/8 principle

The test is an enumeration, not an enumeration, so it is impossible to design a case comprehensively, so it is necessary to use the 2/8 principle flexibly to make the test focus clear and easy to control.

Based on various risks in the product development process, we use the 2/8 principle reasonably under the condition of limited manpower and resources. How to grasp the 2/8 principle? First of all, we need to understand the characteristics of the product, so that all the personnel involved in the test can understand the characteristics of the product, so that the work can be targeted. As for the gimmick of the product, we can conduct sufficient testing, because it is only the point where our product has a foothold in the market.

In the case of limited time, ensure the commonly used functional tests, do not spread the whole, spread the width, so that the quality concept of the product cannot be summed up in the end.

The above is an overview. In actual work, everyone needs to summarize and weigh the progress, time, and quality to ensure the smooth release of the product.

The concept of regression testing

The number of tests is not reincarnation, and the different times of tests are not reincarnation, but to verify the problem, so when it is appropriate to arrange a round of testing, you need to define standards, otherwise it will be time-consuming and labor-intensive.

Regression testing is an indispensable link. After a product test is completed, it needs to be very careful when it comes directly to the user. It needs to conduct a thorough regression test. This time includes all functions and all corrected problems. Avoid version problems.

In fact, there are different interpretations of regression testing in different materials, so I won't go into details here. I would like to express my point that, according to different development models, the time period of regression testing is also different; the current development model has waterfall and iterative models, for example, in the waterfall development model, all testing activities ( Manual testing, system testing, and partial integration testing) are all carried out at the end, and the retrospective testing that I understand is to ensure that the modified problems are tested in the new version. In fact, this test only guarantees part of the work

concept of testing

Testing is not to verify problems, but to find problems that were not found in the previous design.

Automatic testing is just a means of testing, the purpose is to improve work efficiency

Test tools are only used and cannot be relied on, because the tools themselves have no intelligence to judge whether there will be problems. Automatic testing is not beneficial to testing tools, but needs to be written or beneficial to the testing platform, and the writing of testing work progress that suits you.

How to adjust the combat ability of the team

Suggested nature: Because I have led four teams, and this experience is at least successful for me.

formal analysis

The test team, the test team is slowly getting attention in China. The reason why it was not taken seriously is because the whole industry is in the exploratory period, and the testers do not know what method to use, what technology, what to do, etc. It seems to be a collection of incompetent people (preaching, preaching without listening).

target plan guide

Testing technology and future development planning, because anyone's development needs goals, so if a person's development goals are related to this industry, then he will give everything and work hard, so everyone needs to recognize a goal and let everyone think it is It is feasible, and then we will implement it step by step. Let him or everyone see the development direction of their favorite or engaged in industry.

past teacher addiction

Because when doing anything, everyone has their own ideas or steps, just say it out, which requires us to issue it in the form of tasks at the beginning. I believe that everyone is willing to stand up and speak out later. I tell you why. Because people themselves have a sense of shyness, fear of several aspects, fear of making mistakes, fear of crowds, and fear of asking questions.

So if all these problems are solved, will the sense of shyness disappear?

How to solve the problem of personal fear: Guidance, because if a person cannot express his thoughts and ideas, it is impossible to do things well. Second, if you express your thoughts, others may point out Where you take detours in your thinking, for individuals, you can jump up your work efficiency and make your thinking more perfect.

Third, if everyone speaks out their ideas, wouldn’t you save a lot of study time? In addition, have you ever thought that when others form this idea, they need a certain amount of accumulation, which is his hard work. Didn't I just let you learn it easily? If you stand still, your thinking may be wrong or right, but your knowledge can only be limited to the scope of your consideration, which is not good for personal development.

set learning goals

In the software industry, if we want to develop, we need to keep learning, making progress, and summarizing, so that we can have long-term development. Therefore, it is necessary to define the learning goals of this industry stage, so that people feel that the industry is now Some levels are only maintained, and need to be developed and learned.

The way to learn at work, apart from self-study, is "stealing". The so-called stealing is to learn to ask questions and get to the bottom of what you want to know. When someone answers your question, he must use what he knows Summarize the essence of his summary, then you will give you all the essence of his summary in a short period of time.

In the process of learning, you need to learn to summarize and sort out what can be summarized. The first is the accumulation of experience, and the second is to be able to classify and bypass by category, so that the same or similar mistakes should not be repeated.

interests and hobbies

There are two situations for a person to work. The first is the real work. Even if it is completed, I am constantly learning and summarizing, but lack of passion. The second is to regard work as one's own career, eager to become an authority in this respect or a person who can speak in the industry, and is also constantly learning, constantly summarizing, cultivating professionalism, cultivating and guiding everyone's interests and hobbies, because only Only when you understand your interests and hobbies can you coordinate the atmosphere of the entire working group more harmoniously, which is a challenge for leaders in the testing industry.

distort theoretical reasoning

"Testers do testing because their skills are not strong enough." In response to this point of view, I will talk about my own views. Okay, let me say a few words to the test. The test level is not hard to hold. If the assumption is true, then this is relative, relative to development, and this kind of argument is spread or spread from the development. The test finds problems in the later stage. In the end, the development may be very painful, but he is unwilling to expose his face, which makes some problems more serious and has to be corrected. So what does it mean that so many problems are exposed in the later stage of the product? Such a low-level test can take into account various loopholes in your program design, which shows that the program level development needs to be improved.

In the current IT industry, development processes, models, and various conventions have become customary

There are more and more things, and they are relatively stable, and testing is a brand new industry, which requires everyone to explore and support, and needs everyone to build it together.

In fact, in the original development model, in order to adapt to the market, in order to ensure the maximization of profits, in order to make the products adapt to the market smoothly, various methods were adopted to make the positioning of product quality weak, but now with people's requirements It is getting higher and higher, and the awareness of merchants is getting stronger and stronger. Various companies or organizations are eager to set up testing departments to ensure the quality of products, so that the testing industry has only developed in recent years.

Correct understanding of automatic testing

First of all, automated testing is a technology in the testing industry, but it does not mean that more problems can be found by using automated testing, it just improves work efficiency.

The concept of automation is that in the process of industrial production, in order to improve work efficiency, people continuously improve operation methods or techniques or tools, reduce people's common manual labor, and save time and cost.

Automated testing in the software industry also has the need to save costs and improve efficiency. So all improvements need to take cost into account.

The premise of automated testing

1. The characteristics of the product itself have long-term maintainability

No. 2. The product itself is not an urgent big project

3. The product structure is relatively complex

4. Relatively abundant resources input

Then as the cost, we need to consider several aspects, the first is the realization cost, the second is the labor cost, the third is the risk of new technology, the fourth is the cost savings, and the fifth is whether the automated function requires a lot of manual work. labor.

So we understand that automation must be considered from the concept of cost, at least from the beginning of the concept of automated testing should be considered from this aspect. Then the focus of automated testing is that it saves manpower and time, the data obtained is more accurate, and the repeatability of operations and bugs are more reproducible.

Next, I will give a detailed explanation of automated testing and share it with you.

1 Introduction

This article focuses on the main aspects and implications for an organization implementing an automated testing framework. The intent of this article is to provide some guidelines to successfully implement automated testing.

2. Myths of test automation

There are many myths about automated testing. Some of these are true, while others are incorrect assumptions that can seriously threaten the success of implementing automated testing.

2.1. We are pressed for time - the project is behind - let's use automated tests! This situation will not become a reality. In fact, the right thought should be - we are pressed for time - we should never use automated tests.

Automated functional testing is not recommended if the project is already in trouble. The project is likely to be stalled due to the preparation and implementation of a large number of test frameworks. I suggest focusing on the following things:

Optimize the testing process. Investigate and recommend testing methods and procedures based on current work. It is recommended to learn from the relevant ideas and processes of RUP. Introduce or formalize unit/component testing. This is a great way for us to benefit quickly. If formal component testing is used, I suggest using Rational PurifyPlus for unit or component testing. Using Rational PurifyPlus as early as possible in my experience is very worthwhile. In a project that introduces Rational PurifyPlus, it is common to see a 30 percent performance improvement at the component level. Only if the project team can answer "Yes" to the following question: The project can be delayed appropriately. There are precise goals that can be achieved by implementing automated testing. The project has the necessary conditions to establish an appropriate testing framework.

Well, you can properly implement test automation in a time-critical project. But according to experience, this situation is very difficult to happen. All in all, all I can say is "sorry, there is no silver bullet".

2.2. Test automation is capture and playback

In the olden days, automated testing tools were only seen as a capture and playback tool. Currently this myth is still in the minds of many testers. In fact, automated testing is far more than just capture and playback. Automated testing according to maturity can be divided into 5 levels.

2.2.1. Level 1: Capture and Playback

This is the lowest level at which automated testing can be used, and it's not the most useful use of automated testing. Advantages: Automated test scripts can be automatically generated without any programming knowledge. Disadvantage: You will have a large number of test scripts, and the corresponding test scripts must be re-recorded when requirements and applications change. Usage: When the system being tested won't change - small scale automation.

2.2.2. Level 2: Capture, Edit and Playback

At this level, you use automated testing tools to capture the functionality you want to test. Remove any hard-coded test data in the test script, such as name, account number, etc., from the code of the test script and convert them into variables. Advantages: Test scripts become more complete and flexible, and can greatly reduce the number of scripts and maintenance

Work. Disadvantages: Requires some programming knowledge. Frequent changes can lead to "spaghetti code" and make changes and maintenance nearly impossible. Usage: When performing regression testing, the application under test has small changes, such as code changes only for calculations.

, but no changes regarding the GUI interface. You can use this technique to explore your intended test design by quickly writing some test scripts to test your ideas. I've used this technique when I'm working with a product for the first time without any documentation like requirements or design models and when I need to get a first impression of the stability of a series of internal builds. Usually using level 2 techniques is sufficient if proper software configuration management (SCM) is combined with good built-in design.

2.2.3. Level 3: Programming and Playback

This level is the first level for effective use of test automation in the face of multiple builds. You need to ensure that the team and the client feel secure about the project before the actual investment starts to show. Testers will not be able to reach this level without proper training on test automation tools. All testing functions in an automated testing tool must be well understood and knowledge of the test scripting language is required. Bonus: You determine the design of the test script. Proper design is necessary. Coding habits must be appropriate. It is very good to use the same coding habits as in development. This will start to build the bridge between testing and development. Automated testing can start early in the project. You can start designing test scripts early in the project. Talk to the developers and investigate areas they think may be problematic. This ensures that developers focus on getting solutions that can be tested. Cons: Requires testers to have good software skills, including design, development, etc. Usage: Large scale test suites are developed, executed and maintained for professional automated testing. Level 3 enables you to use automated tests and build different regression tests (reuse existing automated tests

Example). In my experience there is a lot of work and project-affecting activity that has to be done in order to get to this level before seeing more tangible returns. Therefore, it is crucial to quickly establish and prove the value of automated testing. Find tedious tests (for example, edge tests and specific functional test cases are good candidates for automated testing first). First create a small number of automated test cases that can test some basic functions (eg, login and create users, etc.).

2.2.4. Level 4: Data-driven testing

This is a professional level of testing for automated testing. You are now going to take advantage of all the testing capabilities provided by the testing tool. You have a powerful test framework based on a library of test functions that enables you to quickly create a test script based on changes to the system under test. The maintenance cost is relatively low. You will use a lot of real data in your tests. Pros: You can maintain and use good test data that effectively simulates real-life data. Cons: Skills in software development are foundational and require access to relevant test data. Usage: Large scale test suites are developed, executed and maintained for professional automated testing. Level 4 requires some very good test data. A tester must spend some time identifying where to collect data and what data to collect. Using real-life data is essential to get the full return from testing. Using the proper data will give you the ability to make bugs that are usually only discovered late in the project or by a customer. Now you can run a lot of tests by using real data.

2.2.5. Level 5: Test automation using action words

This is the highest level of automated testing. The main idea is to separate test cases from test harnesses. This level requires a small team of highly skilled testers who can combine a very deep knowledge of the testing tools with their deep programming abilities.

This team is responsible for generating and maintaining test functionality in the test tool, enabling the test tool to execute test cases from external sources such as excel sheets or databases. This testing concept was originally developed by CMG. In contrast to the CMG scheme, other possible open source schemes are DDE developed by Carl Nagle and SAS Institute.

Using the concept of DDE, the focus is on placing some type of template that includes specific action words to be used when creating test cases in Excel sheets. The process of execution is to read the test case from the Excel sheet, convert the test case into a form that the test tool can understand, and then use different test functions to execute the test.

This concept is becoming more and more fluid as tests are very useful together with use cases. Pros: Design of test cases is separated from test tools - focus on well-designed test cases. Allows fast test case execution and better estimation based on the test cases. Cons: Requires a test team with tools skills and development skills to provide and maintain test engineering (framework).

Usage: Professional test automation combined with optimal use of skills If the tool does not have the possibility to use built-in object mapping, then this solution is excellent for eliminating most of the maintenance costs associated with the GUI. Such scenarios have been created in several organizations, and some of them have achieved a high degree of automation (60%), and they have all achieved great returns.

If the testing framework is appropriate, we can use excel to generate the actual test cases. This level is excellent for organizations or projects that use use cases on a formal basis. Estimates of how many tests are needed, and what needs to be done when the use cases are appropriate are also very simple. You can focus your time on generating the first test cases (main flow) that contain the required "object mapping". Depending on the complexity of the application being tested, this usually takes about half a day to a day.

Each subsequent test case that is required will take about 15 to 20 minutes, because usually most test cases can copy existing test cases and make necessary modifications to them, usually this modification is limited. The action word framework enables the development of tightly parallel test cases by using use cases.

2.3. We don't need training!

All of us have some experience in some way, and we don't have time to spend on training in using new tools. When an organization or project team that is new to automation tools starts to implement automated testing, training and mentoring are crucial. If we allow organizations or project teams to implement automated testing without any knowledge of how it should be done, it will surely fail.

The budget for implementing the automated testing solution will be exceeded, the testing will be delayed and worse the automated testing will be abandoned. Organizations and project teams need to try to avoid some perception gaps, especially the maintenance cost of automated testing and the frustration that arises when testers try and confirm how the tool works.

You need to make sure that your testing process is in place - if the testing process is not in place, introducing automated tests will only create more confusion for the software organization or project team. Therefore, I recommend that organizations or project teams looking to implement an automated testing solution should establish a "boot camp" prior to implementation and focus on training the test team to make good use of a prototype project.

Create an implementation plan for the first prototype project, including a minimal description of the prototype project below: Current state What do we hope to achieve - establish success factors Expected returns (what the first automated test effort is expected to verify) Find a" Simply "testing a pain point and trying to solve it with automated testing can be taken as an example of the resources and time required to have tests run on multiple platforms at the same time...

Start by speaking out loud about your confidence in success - let people know about the progress you're showing. This will attract more attention and resources.

2.4. We must be 100% automated

From a management point of view, the goal of 100% automation is only theoretically possible, but in practice the cost of achieving 100% automation is very expensive. A degree of automation of 40-60% utilization is already very good.

Going above this level will increase the maintenance costs associated with testing. Due to the complexity of changing requirements with each build, you will spend more time changing test cases so that they run correctly.

In this case, it would be wise to establish a reasonable expectation by informing management that the goal of 100% automation is quite expensive. A general rule for deciding to automate a test case is that the test case must be run more than 4 times.

This number is based on the fact that the user has good skills with the testing tool and has a good testing framework. If this is not the case, the overall number can be 10-20 times or higher. As an example, it took testers two weeks to convert a 23-day task of manual testing into an automated test case in one project. At completion, the project was able to run the same number of test cases on multiple platforms in 4 hours.

2.5. Testing Framework

A testing framework is important to produce a proper foundation for successful test automation. A number of considerations must be addressed in order for test automation to be used effectively. The focus must be on: Maintenance cost Maintenance cost is one of the most important issues for the successful use of automated testing. Maintenance costs are directly linked to the maturity of the automated tests already mentioned. An organization or project must be at least at maturity level 3 using a high-level test library to make it easy to maintain and update test functionality.

Test Data

What type of data will be used? Whether to generate test data for each test case or use existing data in the application under test. In many cases a test data is created and it is not possible to delete them.

Testability

Can an automated test solution test effectively? For example, appropriately named objects (not just index Ids). A simple example is that all dialogs have the same #id and the same title, the only difference is the displayed text. Testing dialogs is a challenge when testing scenarios that should cover multiple languages.

tester skills

What skills should the people involved in the creation of automated tests have? Maturity level 3 is sufficient if they have a good development background. If they have little or no development experience, we are forced to find or train a team of automation testing experts and go directly to Maturity Level 5, where the creation of tests is separated from the actual test execution .

a good build process

The introduction of automated testing puts some constraints on the "build team". In order to achieve high utilization of automated tests (regression testing), a high build frequency is required. Just running automated tests every week is not the usage of good automated tests. Increasing regression testing to once a day will help to quickly discover new problems and make it easier for developers to find the root cause of problems, because the feedback time for testing is relatively short (developers can remember what they did yesterday). The definition of ownership of different test libraries is important. A good scheme divides the organization of the test library into three levels:

Level 1 - Global

This is a normal level. Test functions stored at this level can be accessed by all projects. Generic and usual functions like logging in, creating a user are good candidates for this level.

Level 2 - Project

Test functionality at this level is specific to a test project, but is generally more useful inside a project than outside it. Typically level 2 is a provider of level 1 functionality.

Level 3 - Script

Functions are directly associated to specific test scripts. I At this level, usually the first version of a test function is developed. Reuse of existing test functionality was found during the creation of new test scripts and moved to level 2. Try to minimize the number of features at this level as it will increase the maintenance effort. There are many more questions about testing frameworks, but here are some basic ones to be solved.

3. Where to use automated testing

There are many situations where using automated testing can reduce testing costs. I will try to highlight the different testing techniques used in automated testing. The technical description notes unit testing/component testing. This testing work is usually the developer's responsibility. Many different methods can be used, such as "test first", which is a test Framework, developers write different unit tests before writing code. When the tests pass, the code is complete.

 By using formal unit tests, it can not only help developers to produce more stable code but also improve the overall quality of the software. Smoke Tests Smoke tests are collections of functional test cases that generally verify the functionality of a test system.

The idea behind smoke testing is to make sure the foundation is working so that the "big" testing effort can begin. Smoke tests are usually run automatically when the build process ensures that the build is ready for testing. Functional/Integration Testing The testing work here focuses on verifying the integration between different components.

 These types of tests are often the basis for more complex tests of the system under test, with a large number of edge tests being combined to make different error-handling tests. System Testing - Use Case Testing This type of testing is a test that simulates real users using the system by executing user scenarios to prove that the system has the expected functions. There is no need for automated testing here.

Installation testing and security testing are usually done manually because the system environment is constant. Regression testing Regression testing is essentially duplicating tests that already exist. Usually if it is done manually, this kind of testing is only performed once or twice at the end of the project. There is full potential to apply automated testing here. You can perform automated regression testing after each build to verify that changes to the system under test have not affected other functionality of the system.

Performance testing Performance testing includes the following different test forms:

- load testing

- pressure test

- Concurrency testing

-.....

Without automated testing tools, you won't be able to perform the intensive performance testing that simulates user load.

4. When to use automated testing

I made a high-level summary of when you should use automated testing and when you should use manual testing: Use automated testing Use manual testing projects without strict time pressure Have a well-defined test strategy and test plan You know what to test,

You know when to test You have a test framework and candidates that can be identified for automated testing A build strategy that ensures multiple tests are run Multi-platform environments need to be tested You have the hardware to run the tests You have the resources to focus on the automation process The system under test is automatable without a proper test process without a clear blueprint of what to test and when to test In a project where you are new and do not yet fully understand the functionality of the solution and either design you or The whole project is under time pressure when there are no resources in the team or people with automation testing skills do not have the hardware

First, aim for a 10/90 ratio of automated testing (10% automated testing and 90% manual testing). When these goals are achieved, the utilization rate of automated testing can be increased. Remember that creating test cases for automated tests takes more time than creating test cases for manual tests. Don't spend all your testing time on automated test cases. Also keep in mind that it takes a certain amount of time to deal with every bug that is found during testing.

5. Benefits of automated testing If you are introducing automated testing in your organization, remember that there are many different aspects involved. Today there are many different views on how testing is done. In order to be able to successfully implement automated testing you should ask these questions:

What does the test cover? - What are we not covering?

What is the cost of "bugs" that we don't catch due to missed tests? What is the cost of breaking existing functionality due to bad testing? What does it mean for your project if "trivial" tests are run on a daily basis? How would it impact the project if we could provide developers with daily feedback on their recent code changes? These questions can all be met by automated testing. You have to start at level 1 or 2 of automation testing maturity and start measuring results. Quick feedback to developers and running tests on a daily basis is very beneficial towards level 4 or 5 of automation testing maturity in my experience.

Automated testing has the following contributions:

Reduced risk - you know what you tested and what you didn't test Tests can be started early in the project and scaled over time Fast feedback - automated test cases can be run at any time Tests on multiple platforms can be run concurrently

Better estimates - you get a better idea of ​​test progress and time being used Concentration of good people - you get a team of experts and spread their knowledge to other projects Joy - you and your team being successful

Introduction to test tools

Next, I will introduce the relatively extensive testing software on the market, the specific usage of Robot in Rational and WinRunner in MI Company.

Robot, commonly known as a robot. It has several characteristics. First, Robot’s syntax is relatively simple, a syntax similar to VB, so it’s easy to get started; second, Robot’s script organization structure is similar to that of C, which is relatively easy to understand; third, Robot’s operating environment can be parameterized, so it is easy to maintain; fourth, the required machine configuration is relatively low; fifth, many products integrated by the Rantional system are excellent and suitable for a wide range of applications; sixth, the relative price is relatively low.

Compared with Robot, the function of WinRunner has the following characteristics.

First, the grammatical structure of WinRunner is similar to the syntax of C, which is relatively easy to understand;

Second, the script organization form of WinRunner is organized in the form of a directory, so it is relatively easy to manage;

Third, WinRunner supports many systems currently on the market;

Fourth, the content of the checkpoint can be updated at any time, reducing the maintenance of the script

Fifth, the machine configuration is relatively demanding;

Sixth, many excellent components are integrated.

Next, I will try to write a Robot script.

Topic: Please check whether the various characters we stipulated have been filtered out. If those words are not filtered out, please record them.

Test script:

Function T_OpenTestFile(Filename as string)as integer

{

。。。。。。。。。。。。。

}

Funciton T_FilterWord(getword as string)as integer

{

。。。。。。。。。。。。

}

The above are two SBL files, which are equivalent to function entities in C

Then we need to create an SBH, which is equivalent to a header file in C. The red part is similar to a class library. We define related or similar operations or functions in the same class library.

Declare Function T_OpenTestFile Basiclib T_FileOpertion(filename as string) as integer

Declare Function T_FilterWord Basiclib T_FileOpertion(getword as string) as integer

We now create a script file REC

#include T_FileOpertion.sbh

Main()

{

。。。。。。。

}

In this script, the above two functions can be called. In future tests, we only need to maintain the filter word file library. This improves the work efficiency and ensures the normal progress of the test.

Let me give you an example to try to use WinRunner. In fact, the example is relatively simple. I mainly want to tell you how the scripts of this language are organized.

Application of testing tools in actual work

There are two issues that are most discussed in the testing industry. The first issue is the treatment and status of testing, and the second issue is automation. I am not talking about the status of testing here, only about automated testing.

How to do a good job of automated testing? Here are several analysis methods. First, is the tested product continuous? Second, how often is the product being tested maintained? Third, how difficult is the product under test to automate?

Secondly, how to choose an automation tool, choose one that is easy to use, easy to maintain test scripts and test data, and low in price.

A correct understanding of testing tools requires us to guide. We should clearly know which ones should be automated, then those that can be automated, and those that are more automated.

automation at work

Several methods of testing

data-driven approach

Data-driven is the most commonly used method in testing. It is a method for automatic testing by continuously adding test cases without modifying the test program or slightly modifying the test program.

To give a specific example: For example, we check the login verification (user name),

If we use automated testing, we only need to add or delete the modified configuration file in the test configuration file to achieve the test effect.

To compare the two files, you can get the processing power and results of the program under test.

pile drive

Pile driving is also a common testing method. This testing method is to assume that a certain module is correct, and then use this module as the main core, and then test the parameters and data passed by it to other modules for processing, and check the processing results.

Let me give a realistic example of the data in my EXCEL. Everyone knows that when you enter an equal sign, Excel thinks that you need to calculate, so the processing flow should be to accept keyboard messages and then process them. If we take the input as a pile, then if we look at the calculation results, we can know which information has been processed and which information has not been processed.

The core of the stub driver is actually very simple. It is to first make a hypothesis and a detailed test on the stub module, and think that the stub module is robust enough; secondly, the stub module is a driver, which can call many modules and is a core component.

keyword driven

There are some similarities between keyword-driven and pile-driven, and the core of keyword-driven is

Network Aspects of Testing Methods

Database Testing Essentials

Key Points of Online Game Testing

Now I will discuss with you the testing methods of online games. An online game is a network product with relatively concentrated information, which involves the communication between the client and the server and between the clients. Let's analyze it with specific examples

Let me give you an example of Mmog (Note: mmog is an abbreviation for large-scale online games). Large-scale online games are mainly real-time strategy, so TCP protocol is used to send data packets in communication. The advantage of sending data packets by TCP protocol is to reduce the loss of data packets as much as possible. It is a fine packaging of data packets. Generally, data packets are sent in the form of real-time processing, that is, using a blocking processing mode instead of waiting for a certain space. The data packets are sent together when they are full (non-blocking processing mode).

Above we just briefly talked about the form of sending mmog game data packets. Below we analyze the key points of online game server testing.

The main function of the online game server: sending player information, arbitration victory information, arbitration equipment information, transfer information between servers, status storage, player information storage, etc. Let's analyze one by one. The server has to deal with so many things. What is the most stressful when dealing with it? That must be the most distributed player information, why do you say that? Because when sending player information, the server will combine everyone's information and all the information on the map, and this information will increase when the number of players and elements on the map increases. When there are more people on the map , the amount of information processed by the server is very large. So with so much analysis, what do we mainly test? Test delivery of synchronous messages. That is, in the case of many players, whether the information can be smoothly notified to each player.

How about doing something like this? According to experience (you can think of other ways), it is recommended to write a robot, we can operate the robot, what needs to be done by this robot? It is hoped that the robot can walk freely in the place centered on the player, follow the player across the map, cast skills according to the settings, and be able to chat. Through every action of the robot, we can observe the various performances of the service. Concerned about those performance? You can refer to the official industry indicators provided by LoadRunner for verification.

The testing of the online game server is relatively complicated, and the requirements for testers are relatively high. Testers must understand what protocol is used for communication, how to communicate, and the server has handled those things before they can analyze the key points of the test and how to do the test method.

The client test should be relatively simple. The client test I am talking about here does not include the data balance part. The client is mainly to verify the functional logic. For example, let me give you an example, the task system, now every game has a task system. If we test the mission system, how should we test it? What are the conditions for completing the task first? What props are needed to complete the task? What props can players get? Can props be traded and picked up? Can props be bought and sold? Player disconnected from NPC delivery task? What does the NPC say in different states? Is it a public mission or a sect mission? What happens when the storage box is full during the process of obtaining props? How do you handle a load that exceeds your capacity? Wait, consider the details clearly, so design case execution is enough, there is no need for automation (but it can be automated in component testing, system testing does not need to be automated).

The client also has a test point that is the map, because the map is the facade of the game, so the check points of the map: gorgeousness, brightness of the entire map, map display at different resolutions, map splicing, distribution of NPCs or monsters on the map etc. The test of online games is actively challenging, including ability, stamina, creativity and human struggle.

There is also a rest game, such as Shanda Network's Bubble, where the communication between clients is mainly through UDP. Regarding the inspection and testing of UDP communication, I will not describe it in detail here, and I will add it later.

Key Points of C/S Structure Testing

Online games are now a type of C/S architecture, but what we usually call C/S is similar to banking systems, shopping systems, etc. This type of system requires strong server processing capabilities and timely feedback, but there is a characteristic , this kind of server pressure occurs when the business is busy, so when testing this kind of software, you need to fully understand the business logic. Where is the business point? What aspects of information synchronization need attention? What is the server-side data processing process? If the above problems are clarified, the focus of the test will come out. I will not give specific examples here, because the software of the C/S architecture is interlinked.

Let me give you an example below to show you, about the mmog type game test of the C/S architecture, where is the pressure on the server, and where is the focus of the test?

The structure used by more than 90% of mmog games on the market.

When the client requests to log in to the server, it will verify through the account database, then take out the character corresponding to the account, and then tell the client that you are our user, and then the gateway will connect the player to the corresponding GameSvr.

The client sends a login request to the server. If the non-blocking method is used, so that the requests of each client form a non-queuing method, the pressure on the server will not be great. If the blocking method is used, the client will feel that the processing speed of the server will be very slow. Do not agree, so most of them use non-blocking, fast processing speed. And the player and the account database are not connected for a long time, but just keep a heartbeat. This leads to a conclusion that when the user logs in, it will not cause much pressure on the server .

So when does it cause stress?

Everyone knows that the most important feature of the network is synchronous information. That is to say, when a player walks, the server first needs to calculate whether the current player's coordinates are correct. Secondly, the server sends a message to tell the surrounding The player, where he is now, what kind of posture exists. Because the server will notify players within a certain range of this information, causing increased pressure on the server, because the server (GaemSvr) maintains a long TCP connection with the player, if the current In the case of a server or a screen (or a relatively large number of players within a certain range), the server has to deal with several situations similar to those described above on the current server, resulting in huge pressure on the server.

Besides walking, what else can cause server pressure?

Chatting, why does chatting cause a lot of pressure on the server? Because when A talks to B, the server needs to find that B is currently there, and then notify A that B is there, and you can talk to him. At this time, A can talk to B .If there are relatively many people, it may cause a lot of pressure on the server.

Walking across servers will also cause huge pressure on the server?

Because when you cross from one server to another server, the server needs to copy the data of the player on the first server to another server, then initialize an entity, and then tell the DB to save the data of this person once, and then Try to cross the server again, if the cross is unsuccessful, if it is successful, then initialize the data to the player, if not, then process it separately, which will cause a lot of pressure on the server.

As mentioned above, not all products with C/S structure, let’s simulate the situation of many people, but analyze, the pressure of that part is really high, and the situation of high pressure will affect the game logic And where is the data? It is necessary to analyze these situations calmly, and then it is possible to execute the test effectively.

To sum up, we know that the test focus of the network is the same communication, data synchronization and storage, so when testing, we need to be familiar with whether the communication mode of each part is TCP or UDP mode, then each mode has its own mode. features.

TCP is a communication protocol that packs data packets carefully and then sends them on the network link. It needs three handshakes to determine whether the data packets are sent or not. The probability of packet loss is very small, but it has a compensation mechanism that makes The reliability is greatly enhanced in the process of packet data transmission, but the disadvantage is that the speed is relatively slow.

UDP communication is another data packet transmission mode. This method is characterized by fast transmission speed, but it is easy to cause data packet discarding.

Therefore, in addition to understanding the communication protocol of each part, it is also necessary to understand two methods of compensating the data packet after the packet is lost. The first method is to take the loss from the first packet to the current packet as a whole. This method will make the client see the "stuck" phenomenon that usually occurs in the game, and there is another compensation mechanism, which is to discard the previous data packets and then play the last one. Packet information, so that you will see some inexplicable phenomena on other clients.

Key points of WEB testing

There are actually many points in web testing, but there are not many focus points in web testing, because there are two key points based on the web, one is static based on plane, just updating news, so the test points of this are relatively simple, mainly in each Link correctness, server views, etc. There is another kind of Web-based P-to-P communication, which requires registration and involves user information. Then these tests focus on the smoothness of P-to-P communication and the reliability of data.

Embedded software testing methods

Mobile software testing

Mobile phones are now widely used in society, and at the same time, the functions on mobile phones are also increasing very quickly, for example, Bluetooth, for example, SMS, for example, information downloads, mobile games, etc. This shows that in the future development, mobile phones will bring people in a in a lonely society.

Simply recall, our predecessors started using mobile phones for the ultimate simple purpose: for communication, and it must be within a certain range, and the price is high, etc. These things that only very rich people can get their hands on are now available to everyone in society. Corners are possible. Shepherd. . . .

So how to test mobile phone software? What to test? How to organize it?

Then I will do a simple analysis: First, make sure that the mobile phone software is an embedded software, then let’s put aside the IC test and blind spots, not to mention the durability and crash resistance tests, but the content that needs to be considered in the software itself.

We have said so much, we have sorted out that the core of mobile phone software testing is the timeliness of data, how to understand it? Can't it be said that I sent a text message and the other party couldn't receive it for a day? Or if I call, the other party does not respond, which means there is a problem.

For example, in a computer that can transmit the data in the address book through the infrared rays of the mobile phone, if there is an error during the transmission, or there is a requirement for the operating system, or the data is lost during the transmission, the exported data cannot Recognized formats, etc., will cause this function to be invalid.

Another example is the storage of mobile phone information, because the mobile phone itself has its own system, and has its own way and format of information processing, so the problem involved and the problem of information interaction with the outside world, the outside world needs to understand its format, read its format, It needs to have more trusted communication with the outside world.

Secondly, it is the function of the test itself, for example, it can make calls normally, edit information normally, save friends’ phone calls normally, have historical records, alarm clock and various settings normally, and prompt information normally.

Let me give another example, the test of game software in mobile phones, we first understand the game development language Java in mobile phones, and secondly, because the memory size in mobile phones is the priority, the size of the game and various indicators of operation are very small, so KJava is used . Another feature is that games on mobile phones are turn-based, so similar synchronization requirements are not very high, so the focus of the test has changed.

So where are the test points for mobile games? To understand the test in this aspect, you need to understand several issues, and the operator's requirements for the product:

There are generally several types of requirements that operators place on developers. First, the size of the application; second, the naming rules of the application; third, the version control rules of the application; fourth, clearly state the type of machine supported; fifth, whether the encoding format UTF_8 is adopted or other Sixth, the processing logic of external interrupts; seventh, compare the compressed file with the previous file.

Above I put forward seven key points of mobile phone software testing, and I will gradually add the details of each part in detail below.

First, the size of the application. Since the treasure chest will insert 5K program codes according to the needs when the application is downloaded, the size of the application submitted by the SP is required not to exceed the maximum download size of the mobile phone minus 5K. The following table lists the JAR file downloads for some JAVA mobile phones currently on the market. The limit of the number of bytes (not included in the model, please SP consult the mobile phone manufacturer)

Secondly, because the treasure chest will insert the program code according to the need when the application is downloaded, this code will occupy about 10K heap memory when executed on the mobile phone, so the application submitted by the SP is required to reserve at least 10K heap memory when running Memory.

Second, the naming rules of the application. The character length of the application naming rule cannot exceed 12 characters, and there are certain rules for naming, which need to be negotiated between the SP and the provider, but must be in accordance with industry standards. In addition, when submitting, you need to understand some requirements. Due to the development environment and compilation environment of various SP developers, operators have strict packaging requirements.

SP submit application packaging requirements:

1. JDK version 1.3.1 (international version);

2. The packaging tool uses J2ME Wireless Toolkit (midp1.0 version, 1.0.3 or 1.0.4) provided by SUN;

Since WTK of SUN company only supports the standard midp1.0 and does not support the extended API of each mobile phone, the SP needs to expand the WTK used to support the extended API of the mobile phone. The method is: add the extended API to D:WTK104libmidpapi. zip (assuming WTK is installed in the D:WTK104 directory).

3. Do not scramble or use RetroGuard for scrambling, and do not use other scrambling tools.

Note: 1. The original tools can still be used for SP development, but please use Sun’s WTK for packaging when submitting applications;

2. If the SP is not packaged according to the requirements, and the treasure chest cannot recognize the API, it will be handled as a test failure.

Third, the version control requirement is that the version control format xxx should strictly abide by this rule.

The continuity of office products is relatively long, so some modules are conducive to automated testing. Where is the focus of the testing of office products that I introduce here?

The feature of office products is that people often use them in the office, and the frequency is very high, so simplicity, ease of use, easy operation and easy understanding have become the primary requirements of office products.

Secondly, consider the hardware configuration of the machine for office products, such as graphics cards, printers and other peripherals

Third, office products also need to be tested for compatibility because of their long-lasting characteristics.

Fourth, office products need to ensure data security

Fifth, the functional logic of office products themselves

So how can we do a good job of testing office software?

First of all, the core of office software is office, and it needs to be used in daily life, so it is good to type it according to various typeset formats. In this process, some conclusions are drawn in detail:

The first is operability; the second is the use logic of each module, such as: inserting an object in a file, whether the object can be displayed, setting the wrapping method of the object, whether the setting can be successful, whether it can be reflected, whether the setting object is printed or not; Third, save the disk, consider data security, check whether the object is saved after saving, whether the various font settings are saved, whether the wrapping method is saved, etc. Fourth, compatibility, because users use a lot of office software, file sharing needs to be compatible. The second is the compatibility of its own high and low versions, which needs to be considered emphatically. Fifth, the file size and save information of different file formats. Sixth, various performance indicators, including startup speed, occupied disk size, and CPU occupation during use; seventh, the setting and checking of shortcut keys, do not conflict with the shortcut keys of the system, and support various functions of the system. One setting supports the system clipboard function; eighth, it supports network transmission, can communicate and share freely, can support collaborative work, and can fully reflect the synchronization information of modified data.

Antivirus product testing

Anti-virus software is a kind of tool software. With the popularization of the Internet, anti-virus software is becoming more and more important. The focus of anti-virus software testing is:

able to detect viruses

OS check

Able to report and kill viruses correctly

Occupied CPU occupancy

Antivirus memory usage

Data Security

software conflict

Virus database upgrade

automatic update

When anti-virus software is used, there is another important thing, that is, the user's data security. When the anti-virus software can remove the virus in the virus-containing files, it must include the reliability of the user files.

ERP software testing method

Verification Test

test management work

I haven't studied management, but just read some books. I have applied it in several teams, and the effect is not bad, so I share it with you.

In fact, whether it is development management or test management, the core should be "reason". If the reason is unreasonable, then management can only be mandatory. Then in the software industry, creative enterprises may not be able to maintain it for a long time, so it is necessary to first " When the rationale is clarified, we will take care of it. At that time, we will not need to take care of it, because it has been straightened out, so everyone knows what to do and when to do it.

So when it comes to "reason", what do we need to understand? To manage things, to clarify the things to be done; to manage goals, to clarify the goals to be achieved; to manage ideas, to clarify the ideas and methods of doing things; to manage resources, to allocate reasonable resources to appropriate positions, so that A combination of interest and ability. I think from a big perspective, these things need to be sorted out first, so that a team can have great combat effectiveness.

Secondly, we also need to communicate kindly and know everything, because in a team, the atmosphere is very important. Maybe one person is in a bad mood today, which makes the work of several people who cooperate with him unable to work smoothly. Maybe it is because of induction. Therefore, you need to be open and honest with everyone, and clearly explain the problems and things that you can talk about, so that everyone feels that you can rely on you, and you can tell you your thoughts, and you try your best to solve problems for everyone, so that they can do things happily and steadily.

In addition, it is necessary to empathize and fully allow everyone to express their opinions, because if a team wants to develop, it needs everyone to work together. This is a truth that everyone is familiar with, but it is difficult to do. Avoid monologues, let everyone fully participate in the design, find a sense of self in it, and find that it is impossible without him, so that everyone can care about every corner of the project, instead of working for work.

Second, we need to help everyone summarize on the basis of "reason" where people are prone to make mistakes, what types of mistakes they make, and whether the reason for making mistakes is because our thinking is aging and we need to improve the way we do things, or because Questions about work ability or experience.

Then it is necessary to count various errors to find the root cause of the problem. Discuss the problem based on the problem, where the essence of the problem lies, and then help everyone improve, and you will also improve at the same time. Let me tell you about my real-life example. In a test group I once led, everyone worked very hard and achieved remarkable results, but problems always occurred during the process of doing things. Where did the problem come from? ? Later, I found out the reason. It was because there were problems in the work process, so he always made mistakes there, because he took the work as work, so he changed this place. I found him later and found the problem. The reason, together to solve the problem. Later I told them that if someone makes the same mistake in the same place, our conclusion is that he does not understand, teach him, and learn together until he tells me that it is ok; if he makes a mistake the second time, then we will give the result Yes, he forgot, so he could learn again until he told me that he could do it; the third time he made the same mistake, we concluded that it was an intentional mistake, so the whole group should drink a Coke.

There are many examples of this in real life, mainly for guidance, because if you treat work as work, you may not use your "heart", because if you work with "heart", he will find tricks, find ways, and he will be bored if he is responsible ; If you regard work as your future career, then you will work hard, which requires our correct guidance.

development analysis

Because we are making MP3 products for the first time, we are still in the groping stage technically. Second, we still have some problems with product quality awareness. Third, there is not enough communication or feedback from all parties.

progress problem

The problem of cooperation between the four parties, because in any company that makes embedded software, there are four organizations in hardware, software development, market development, and test preparation that need to work, so the delay in the progress of that organization will seriously affect the product release cycle. In today's increasingly competitive market, market opportunities must be grasped, so it is necessary to grasp the progress.

It is recommended to use the form of a combat map to gain a favorable grasp of each stage, so as to win more time for each aspect, clarify the scope of responsibilities, and then combine rights and interests to stimulate the enthusiasm of all aspects. Adopting the principle of a community of interests, combining all aspects reasonably, let development care about testing work, and let testing care about development work, so as to form a favorable whole, let the market provide timely feedback information, and make the project progress smoothly.

communication problem

After the SPEC design is completed, all aspects give feedback within a limited time to follow up in time, so as to have a clear positioning for the product, and after all aspects approve the plan, implement it in earnest. If there is a technical problem, notify the relevant person in time, In order to make reasonable revisions and fine-tuning of the schedule and plan. In the product development stage, it is necessary to summarize possible problems and solutions to the problems in a timely manner, and notify relevant people, so that the project team has a sense of belonging.

Development requires a reasonable explanation for each bug, or relevant training for our testers, so that the testers can have a deep understanding of the product and conduct reasonable and rigorous testing of the product.

Here is a suggestion. After the tester raises the bug and knows the performance, he must figure out where the problem occurred and what caused the bug to occur, so that he can effectively analyze the structure and effectively carry out case compensation and testing.

track issue

Tracking problems involves bug tracking and progress tracking. Bug tracking requires a set of processes, and bugs are released in a timely manner, so that finding bugs and solving problems form a complete process.

As a method of progress tracking, it is recommended to use stage-point products, define clear time points, clarify the function points completed at each time point, and ensure that the product can be compiled, spot-checked, and run to complete related functions. In this way, everyone can see that everyone is making progress and the product is making progress in various periods, which is beneficial to the morale of the entire team.

version control issues

Customize a strict product release process to reduce the risk of product release due to time issues and compressed testing time. The recommended method is to customize the compilation plan by the project team, and then discuss it with relevant people. After reaching a consensus in all aspects, it will be resolutely implemented.

Version control and schedule control are closely related.

Strict code management is carried out to ensure the company's confidential information. When the code is checked in and checked out, it is recommended that the code be checked by a special person before it can be stored in the warehouse, so as to avoid code erosion caused by misuse or hostile operation. Versioning has several benefits and advantages.

Benefits of Feedback on Bugs

1. Fast feedback on development

2. Fast resolution

Summary about the test situation

1. Coverage

2. Bug quality problems

Development System Issues

1. Is the analysis of the design done? technical difficulty? Is the design reasonable and the schedule feasible?

2. Has the unit test been done?

3. Is the Check In of CVS under control?

4. Has the schedule risk been estimated?

5. How is progress control carried out?

Products:

Product analysis: In the early stage of product development, the market has found a market entry point, but now that the product is about to be released, it is impossible or difficult for us to use a series of data to explain and tell the high-level that the product can be released or cannot be released , because the analyzed data is too small. Because the data is the basis for explaining the problem, but now the standard for product release is set, it is only an existing data, there is no possibility of forecast analysis, and there may be risks for the product to be put into the market.

suggestion:

1. Case Execution Rate

2. Case discovery bug rate

3. Repeated bug rate

Fourth, KLOC

Fifth, product daily test summary chart (view historical curve)

Overall improvement ideas for product development

The first step is to enhance the awareness of development quality

Practice: This is a long-term task, but we can do specific things, such as: check the development of unit tests or unit test code and other activities

Check the feedback on the designed module case, bind the quality to the development, and don't let the test bear the burden alone.

Activity mode: preaching, system, execution, binding

The second step is to enhance the quality of the test itself

Approach: Because the test is not formed, this is the status quo, so we provide some data to improve the ability of case design or tell the testers where our defects are. This is a long-term thing, because manpower is needed to do it. Provide the following data: repeated report rate, ratio of cases and bugs, etc. Strengthen the training of the program concept or the understanding of the framework, try to understand the product from the program concept, and try to avoid redundant examples.

Mode of activity: training, data, comparison

The third step is to control the version compilation in the product development process

Practice: CVS library permission control, all Check in and Check out need to be controlled, check the code before entering the library. In addition, it is necessary to formulate a complete development plan and compilation plan to make the project tracking more formal.

Activity mode: special person control, flush out the original code by face

The fourth step, progress control

Approach: Customize a complete compilation plan during the product development cycle, and conduct tests or spot checks on phased products. In order to ensure the later testing time and quality assurance.

Activities: Approval, Implementation, Adjustment

The fifth step, control the progress of the problem

Approach: Clarify the development model, enumerate the detailed development progress, propose the function of development in detail, establish a detailed combat schedule or call it a combat card, to boost morale, and let each participant know the progress

Activity mode: commitment, supervision, tracking

1 Method: unified platform, unified process, unified way of doing things, to achieve task order tracking

Activities: guidelines, platforms, optimization.

If my blog is helpful to you, if you like my blog content, please "Like", "Comment", "Favorite" with one click! like

Finally, basic knowledge, Linux essentials, Shell, Internet program principles, Mysql database, packet capture tool topics, interface testing tools, advanced testing-Python programming, Web automated testing, APP automated testing, interface automated testing, testing advanced continuous integration, Test framework development test framework, performance test, security test, etc.

Guess you like

Origin blog.csdn.net/jiangjunsss/article/details/123075975