Software testers than software developers

Source: Internet
Author: User
Tags to domain

Is there an article on the knowledge that software testers are less demanding than software developers? http://www.zhihu.com/question/20156659

There is a paragraph of the answer:

Chen Fu 鸼,grow in Fujian, study into the qin, drift suitable Yan, qin people also. chat, Morti, Iamhaha and other people agreeTo be realistic, I have to admit that @pansz's views are representative. Many of the companies I know are thinking the same way. But that's not what I agree with. The level almost can be tested, in fact, the testing department as a garbage shelter. But the people who actually say these words, I believe, do not understand what the test is.

If we do not intend to do in-depth analysis, we actually need an example to refute this so-called theory. Many programmers do not always like to use the architecture to describe the program? The concept of architecture comes from the construction industry. But I believe a lot of people know that building requires a dedicated person responsible for quality management, that is, to ensure the quality of the delivery of the building to meet the needs. We will not allow the construction company to do its own acceptance of the project and then deliver it directly. We all know that the purpose of testing itself is to ensure the quality of the software to meet the needs, then why are willing to use the architecture comparison software developers think software can not need testers? Obviously this is absurd.

Of course, I know this contrast is not the pride of the program staff. We inherit the arrogant nature from the mathematician, naïve to think that the algorithm is everything (of course, many of them in fact, most of the time the algorithm did not exceed the second year of the University of the course coverage of the content), but never really accept the rigor of engineers. So we still need a detailed analysis.

first, what is the test? To ensure the quality of the product, this too vague statement does not explain the problem. The most straightforward way to do this is to test exactly what you need to do with a number of tests:
    1. Monitor product flow. from a time-control standpoint, developing new features and fixing bugs is a balancing act. Developing too quickly could lead to a more problematic version of the next phase, making the later issues more difficult to handle. How do we know how software quality is at each stage? There are many specific methods, regression testing, code coverage, stress testing, and so on. But who collects and analyzes this information, how to analyze it? What kind of conclusions can be drawn? How many programmers will do this by themselves?
    2. build a complex application scenario. who knows how many domain controls are required to test the regression test environment for a full Active Directory server? I set up the record is 11, also does not include the middle possibly dynamically joins and deletes the client. It contains a lot of deliberate destructive actions. After each destruction, the site must be resumed for the next test. How many programmers have constructed this scenario?
    3. simplify the problem report. when user reports occur, the steps they initially give are often too simplistic or too cumbersome to describe the steps that are being directed at the problem. Many times due to unclear steps, there are many detours in the analysis process. This is a time when someone has to deal with the customer and locate the key steps. This step must always be done, then who will dispose of it? How many developers are really responsible for dealing with these?

Of course I know a lot of programmers will be proud to hold their heads up: none of these we need. As long as I guarantee that each function is right, the final software must be right, so as long as the unit test is enough. I have heard this theory more than just one person, and I can't say it clearly. I can only say that this information is a lot of people need, since someone needs to be done.

I admit that in some cases we do not need to have a special test. This typical scenario actually has a very simple premise that the software itself does not contain complex application scenarios. such as standalone software, such as single-server Web site. But this does not include software that requires complex usage scenarios, such as exchange, such as active Directory. This type of software system that includes clustering and distributed requirements is not a person who spends one hours sitting in front of a computer and trying to do it.

Of course, there is another way for open source software, which is to allow users to make mice out of a large number of releases. However, this does not apply to all software companies. For an app, maybe the crash collapsed, anyway, maybe nothing but a micro-Bo did not send out; but for the stock software of the server system, you dare to crash next try? I don't know if there's a lot of people here who can do the test, and they're not really responsible for this kind of complex system for a long time.

Saying so much, summed up is a sentence: the Test and development needs of the skills have intersection, but basically two requirements of different positions. Development technology not to do the test, not to be able to become a good tester.

Of course, I also have to admit a little. The practice of developing and testing separations now encourages a tendency that some programmers in the development sector are less concerned with their own program quality and are not concerned about how their programs are being used. I remember seeing someone say that at the Microsoft Testing Expert forum in Csdn, who said that a product was dead to him at the time of release and he stopped caring. For too long, I don't remember who the man who said this was. But I have to say that this represents a part of what programmers think I know. But this is not a programmer's fault, nor is it a division of labor. The blame is on incompetent leadership, which they set up to test the position in order to throw away the rubbish, without the ability to grasp the relationship of two characters to improve the product. Another tendency to be incompetent is to hire a large number of testers to make good products out of the heap. They've forgotten, testers play a role in monitoring quality changes rather than improving quality. The only way to improve quality is to develop.

Losing baggage can make people move light, but only know that losing the baggage is not a good product.
--I, now.

Finally, a post is recommended as a footnote:http://www. aqee.net/on-testers-and-testing/

= = = Reply response to @ Feng Dong elder brother = = =
From my experience, I admit that testers have a lower requirement for coding and algorithms than development (the reality is that I'm not a majority at Microsoft, even though I'm not a multi-point developer), but I'm stressing that the requirement for coding is low and doesn't mean that developers can automatically become a qualified test. It's like a man who pulls a fighting force to get him to take charge of Chuishiban, he can't do it automatically.

Testing this post has the ability to test, and the main difference between it and development is the ability to analyze and statistics. The basic ability of testing is to be able to strictly follow the steps of the test, this is really easy to get started. But a good test requires absolutely more than that. When a person reaches a certain level of testing, he or she must begin to pay attention to a lot of analytical work on the process. The process I'm talking about is not a lot of people imagine a boss sitting there asking his men to do it before they have to do it, but to grasp the trend of quality change throughout the development cycle and how to support the analysis of this trend with reasonable technical means (such as regression, such as fuzzing, for example, stress testing). In this sense, I admit that the test itself is a relatively easy job to transform into management. But this is understandable in itself, as building quality inspectors must understand architectural knowledge, but don't need to paint blueprints themselves. In turn, they need to strengthen communication and communication skills in case of problems can effectively ask developers to admit the problem, this does not mean that anyone can do these things.

In fact, the development in this position is the same. At the beginning of the interview, as long as the computer trained University and university for four years is not very impropriety, write a sort of algorithm is not difficult. But a good development is not the only one that will suffice. When the entry time is long, development must begin to pay attention to domain knowledge (such as Brother Tung recently released adaptive Wide angle Filter), architecture, design (such as interoperability, Microsoft has been scolded for many years) and so on. These things have nothing to do with the coding itself, but it must be mastered to be a good developer. These two positions may start with the ability to demand proximity, and as time progresses the difference will be greater. But this is not the reason that the development department can be used to despise the testing department.

On the other hand, it is because there are two different positions, so there will be the difference of interest and hobbies. Some people at first do not understand the test of the position, slowly more and more like, some people try to feel that they do not meet their interests, so choose to leave. It's all normal. Rengeyouzhi, this thing is barely coming.

So again, testing is not a development of a trash bin. It's not that people who do not have coding skills should be tested. If a person wants to develop as their own career but not enough, then he can only do is to improve the development of technology, not by testing bread where eat.

Of course, if you really want to be in a company like Microsoft to do development but found that temporary capacity is not enough, to apply for testing is an opportunity for themselves to win the expedient. But if this is more necessary to correct their own mentality, if the test is wronged himself, then the next thing is not a technical problem, but personnel issues. If you start with a bread where to eat the mentality, and finally where are not to go down.

P.S.: Explanation of some of my state changes.
I admit I've just been transferred from testing to development a while ago. Although it seems to be slapping itself against the test in this context, it really deserves to be said. I have to say that my reason for turning the post is not the same as the reason that Feng Dong man said. I was responsible for server-related, and now I'm going to voice. The difference between these two departments is exactly what I mentioned in my previous analysis, that is, from a department that is very complex about the application scenario and deployment requirements, and that the algorithm requires a relatively low level, it goes to a department that is very simple to deploy and requires high algorithms. To be fair, the new job requirements for testing and the use of space is actually much lower than the original department. For me, I can do both, and of course I would like to find a more challenging position to try. On the other hand, as a five-year test, I would also like to look at what my previous post was like in a different perspective. For this choice, I am also a little regret.

So I changed a position, but I change the premise of the job is that I can do both, and the leadership is willing to give me this opportunity. This has nothing to do with the high or low of two jobs.

------------------------------------------------------------------------------------------------------------

My thoughts.

From the developer's point of view, the developer is responsible for the quality of the code they write and must take responsibility for the quality.

From the tester's point of view, the main purpose of the test is to provide a monitoring software quality capabilities, to a certain extent, reduce the number of bugs introduced in the rapid development, to prevent the existing stable code negatively affected, improve development efficiency.

From the management point of view, the key to improve the quality of software is to improve the technical level and quality of developers, can start from several aspects:

1. Reduce the number of testers.

Can not allow developers to rely on the tester, the proportion to be controlled within a certain range, such as Google's developers and testers ratio of 10:1, how to do it?

After communicating with Mr. Dening, I learned that there were more than 10 test engineers in Google China and outsourced about 20. In absolute terms, the number of test engineers is really few. But, at Google, the test has a 721 principle: 70% of the tests work in the bottom interface and unit tests, 20% of the tests work in the integration test, and 10% of the test work in the interface test. The reason for this choice stems from some of Google's engineers ' perceptions of the test. Google engineers believe that low-level interface testing and unit testing of automation costs, high degree of automation and stability. In Mr Dening's view, the most difficult of the interface-based automated testing (which he repeatedly emphasized to me). I basically agree with this view. The key question, however, is what does this have to do with 1:10?

Judging from the quality control of software products, the higher the quality of the code submitted by the development engineer, the less the test cost will be. First of all, high-quality code testability, low automation costs, the cost of testing will be significantly reduced; second, high-quality code will reduce the absolute number of system bugs, test engineers spend less time on the bug, so the communication cost between development significantly lower; again, the rework rate of high-quality code is reduced, The development process is smoother and more efficient; Finally, automated continuous integration of unit testing and interface testing can also reduce the cost of regression testing effectively. The value of Google engineers is to spend 70% of their work on improving system architecture and code quality. Therefore, 1:10 is not difficult to explain.

"(Excerpt from http://www.taobaotest.com/blogs/show/1171)

2. How to improve the ability and quality of developers?

On the one hand, the threshold to recruit higher, at least there is potential, and the practical and conscientious person responsible;

Second, in the team "punish evil Yang Good", praise good, set an example of learning, punish the most bad, stop slacking psychology, but there are many ways of punishment, deduction of money belongs to the inferior, the best is more interesting punishment.

third, to engage in a number of activities together, to increase the relationship between colleagues outside the work, to trust each other, the strength of the team, to let the team members know that a member do not do well the whole team will be affected, accept the punishment, only everyone help each other, the overall improvement is the goal, Some people disagree that it's okay to leave, find the right person, build a strong team rather than a jagged team member. and so on. Respect and meet the reasonable requirements of employees, caring staff, this is the company's good for employees, "punish evil and promote good", aboveboard, do not let your employees to the company's grievances, employees naturally from the heart more identify with the company, thus to inspire employees from the heart really want to do such a thing of mentality to help.

Software testers than software developers

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.