51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4611|回复: 4
打印 上一主题 下一主题

[原创] 不需要测试人员的五大借口

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-9-28 11:45:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
博客堂找到的一个文章。

中文简述:
不需要測試人員的五大藉口 (約耳談軟體)
如果你的團隊沒有專門的測試人員(至少每兩到三個程式人員要配一名), 你要不是推出問題很多的產品, 就是浪費錢叫時薪100美元的程式人員去做測試員(時薪30美元)做的事. 省測試員絕對不是真省, 這實在是再明顯不過了. 我實在很驚訝很多人卻還認不清這一點!

以下是由約耳談軟體列出不需要測試人員的五大藉口:
1. Bug 是由懶散的程式設計人員造成的
2. 我的軟體就放在網路上,所以要修正很容易
3. 我的客戶會替我做測試
4. 好的測試人員都不想當測試人員
5. 我請不起測試人員

英文原文:
Top Five (Wrong) Reasons You Don't Have Testers


By Joel Spolsky
Sunday, April 30, 2000
Printer Friendly Version


In 1992, James Gleick was having a lot of problems with buggy software. A new version of Microsoft Word for Windows had come out, which Gleick, a science writer, considered to be awful. He wrote a lengthy article in the Sunday New York Times Magazine which could only be described as a flame, skewering the Word team for being unresponsive to the requests of customers, and delivering an enormously buggy product.

Later, as a customer of a local Internet provider Panix (which also happens to be my Internet provider), he wanted a way to automatically sort and filter his mail. The UNIX tool for doing this is called procmail, which is really arcane and has the kind of interface that even the most hardcore UNIX groupies will admit is obscure.

Anyway, Mr. Gleick inadvertently made some kind of innocent typo in procmail which deleted all his email. In a rage, he decided that he was going to create his own Internet access company. Hiring Uday Ivatury, a programmer, he created Pipeline, which was really quite a bit ahead of its time: it was the first commercial provider of Internet access with any kind of graphical interface.

Now, Pipeline had its problems, of course. The very first version didn't use any kind of error correction protocol, so it had a tendency to garble things up or crash. Like all software, it had bugs. I applied for a job at Pipeline in 1993. During the interview, I asked Mr. Gleick about the article he wrote. "Now that you're on the other side of the fence," I asked, "do you have a bit more of an appreciation for the difficultly of creating good software?"

Gleick was unrepentant. He denied that Pipeline had any bugs. He denied that it was anything as bad as Word. He told me: "one day, Joel, you too will come to hate Microsoft." I was a little bit shocked that his year of experience as a software creator, not merely a software user, hadn't given him a smidgen of appreciation for how hard it is to really get bug-free, easy to use software. So I fled, turning down the job offer.  (Pipeline was bought out, by PSI, the strangest Internet provider on earth, and then unceremoniously taken out and shot.)

Software has bugs. CPUs are outrageously finicky. They absolutely refuse to deal with things that they weren't taught to deal with explicitly, and they tend to refuse in the most childish of ways. When my laptop is away from home, it tends to crash a lot because it can't find the network printer it's used to finding. What a baby. It probably comes down to a single line of code somewhere with a teensy tiny almost insignificant bug in it.

Which is why you positively, absolutely, need to have a QA department. You are going to need 1 tester for every 2 programmers (more if your software needs to work under a lot of complicated configurations or operating systems). Each programmer should work closely with a single tester, throwing them private builds as often as necessary.  

The QA department should be independent and powerful, it must not report to the development team, in fact, the head of QA should have veto power over releasing any software that doesn't meet muster.

My first real software job was at Microsoft; a company that is not exactly famous for its high quality code, but which does nonetheless hire a large number of software testers. So I had sort of assumed that every software operation had testers.

Many do. But a surprising number do not have testers. In fact, a lot of software teams don't even believe in testing.

You would think that after all the Quality mania of the 80s, with all kinds of meaningless international "quality" certifications like ISO-9000 and buzzwords like "six-sigma", managers today would understand that having high quality products makes good business sense. In fact, they do. Most have managed to get this through their heads. But they still come up with lots of reasons not to have software testers, all of which are wrong.

I hope I can explain to you why these ideas are wrong. If you're in a hurry, skip the rest of this article, and go out and hire one full-time tester for every two full-time programmers on your team.

Here are the most common boo-hoo excuses I've heard for not hiring testers:
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

5#
发表于 2006-11-12 20:19:30 | 只看该作者
这篇文章不错的,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-10-15 14:08:03 | 只看该作者
不晓得为什么,测试人员原来如此不值钱,难道3个程序员都不值一个开发人员??
怀疑~~
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2004-9-28 11:53:20 | 只看该作者

以下是博客堂里的一些讨论。

也很精彩
# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 11:31 AM Yu
我对这个问题一直就很迷惑。

我所在团队的现状是没有专门的测试人员。个人的理由是觉得测试应该是软件开发人员的工作。

这里想请教一下,在团队中如果有专门的测试人员,那么“程式“人员和测试人员如何分工呢?换句话说就是“程式“人员做到什么程度后把程序交给测试人员呢。

# 你说的工资可够高的。一名测试员年薪 ≈ 6万美元?



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 12:06 PM oldsidney
其實開發人員當然也是要做測試,不然怎麼知道自己的代碼是 OK 的可以交出去了呢?

一般開發人員做的測試會是在 Unit test 層次上,基本上就是測試 class 的 interface, method 的 input, output 是否正確,是否依照設計文件完成。

而測試人員的測試會是在 system test 以及 intergarade test 的層次上,從系統功能的角度上來執行測試。

開發人員測試的心態,是想證明自己寫的代碼可以運作,所以在做測試時是會有盲點的。

那個工資是美國的水平。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 1:33 PM Yu
哦,那我就有些明白了,只是在细节方面还是有一些想请指教的地方。

首先,按照你的描述,感觉你说的Unit Test是指白盒测试,我的理解对吗?
事实上我觉得Unit Test还有黑盒测试,我觉得这部分是一定要程序员或者设计人员来做的。

你认为这个时候就应该导入测试人员吗?

其次,有关系统测试,我这里也是一样的,会有一个专门的部门(质量管理科(部))来完成。
注:质量管理科(部)测试的是经过了开发部的系统测试后的产品。
事实上,在这方面我觉得测试人员的水准要比开发人员高很多,因为他们是对某些方面业务的专家。
假设我们开发一套系统,这套系统被应用在某类企业的合同管理业务当中。
系统的设计、开发人员很有可能在法律方面没有足够多的知识,从而导致系统虽然按照客户的要求做了但是违反了某国的法律。
# 当然这类错误是非常致命的,应该在设计的时候就全部解决掉
从这个角度看,我觉得测试人员的工资应该比开发人员的工资高。
于是总觉得我理解的和你说明的测试人员似乎有很大出入,不知道我是不是理解错了?

最后,有关开发人员的心态我想是可以左右的,但是绝对无法否认存在测试中的盲点,但是有很多方法可以直接或者间接的减少这类盲点。如设计人员书写测试式样书,测试式样书的review,交叉测试(每名开发者都只测试其他开发成员的程序)等。
当然最后的测试结果也一定需要定量的分析。
所以我还是认为在结合测试前(包括结合测试)是不需要测试人员参加进来的。



# 美国的开发人员工资那么高吗?!不管怎么样还好现在美国的IT工作者面临着失业的危机。。。




# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 2:09 PM rIPPER
ms推荐做daily build,酱紫就可以天天测了 哈哈



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 2:14 PM Ninputer
@YU

我觉得你理解还是有误。首先单元测试采用白箱还是黑箱的问题——我觉得单元测试和白箱/黑箱测试是对测试不同的分类,没法说单元测试一定是白箱还是黑箱测试。

“我还是认为在结合测试前(包括结合测试)是不需要测试人员参加进来的“ 我认为这是完全错误的。当然你可以认为书写测试用例是系统设计人员的工作,纯粹的“测试员”只是像机器一样运行着测试用例。这种模式在日本很常见。但我认为这未必是最佳的方式。测试人员应当从项目一开始就参与近来,在功能规格定义的时候就参与讨论并开始制定测试计划,随着功能定义的完善和开发的进行书写测试用例和自动测试代码,然后在编码完成阶段开始全面的测试。在这个测试过程中,开发人员和测试人员必须有良好的沟通和互动性。Bug管理是必不可少的。

至于你认为经过”左右“开发人员的心态来使开发人员身兼二职我觉得是不能的。开发人员又要开发,又要书写测试用例,又要运行测试用例是不可能的,这还不包括测试用例的设计问题。按这个模式走,很快就会发现你的项目变成完全的无测试开发,开发人员天昏地暗的开发,没人登记Bug,没人知道别人的Bug,没人能够全局把握系统的缺陷……



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 2:31 PM oldsidney
Unit test 階段通常都還沒有 UI,所以做測試需要對編程有相當程度的能力,所以不太會是由測試人員來作。所以由開發人員自行把關應該就可以了。

系統測試就如你所說,測試人員當然要對業務有相當了解才能勝認。

假如你的測試人員真的是業務專家,我想也不會只做測試的工作,可能還會做分析、設計的工作吧。

因為長久以來測試不被重視,而且做的工作又與使用者差不多,感覺不需要具備非常專業的技能,所以測試人員的工資才會比開發人員還低。

假如測試人員越來越被重視,而且還需要具備更專業的技能,如要懂 UML、會用測試工具、會寫代碼,那待遇應該會越來越高才是。就怕這樣的人不見得願意當測試人員,也許就跑去當開發人員囉!

對了這篇文章有點舊,是2000年的文章,對於測試人員的工資不見得能反映事實,您就不要太關注了。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 2:33 PM oldsidney
Ninputer 說得沒錯!



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 3:05 PM Yu
hi,Ninputer

在单元测试方面我完全同意你的说法。
可能我的表现有些问题,我想澄清一点是我觉得单元测试既要有白盒也要有黑盒,因为两者的测试目的是不同的。

在结合测试部分还是有一些分歧,我明白你想说的,测试是从项目开始时就开始的。事实上也许你会发现这种想法不太容易实现。理由是随着平均软件开发周期的不断缩短,一个软件的一个版本的生命周期里面变化的东西太多。测试程序和测试式样书的变化太多激烈,最好等软件稳定的时候才开始也许会节省一点时间。注:在最开始的时候没有测试式样书也没有问题,因为程序式样本身很简单的就可以变换为最简单的测试式样书。
有关你说的书写测试用例和自动测试代码,我想应该是在单元测试的白盒测试时完成的工作,与结合测试无关,这里就不再赘述。

在程序员是否能身兼两职的问题,我想我们的开发理念有太明显的区别,我这里实在无法对你的想法做出足够的肯定或者否定,同时自己也无法否认我的想法,因为从我的经验上看是可行的,只是我需要在新人入行的时候就开始灌输我们小组的理念。

最后让我澄清两点:
1. 我虽然把书写自动测试代码定义为白盒测试阶段的工作,这里单纯只UnitTest Tools(CppUnit,PL/SQLUnit,T-SQLUnit,JUnit,NUnit,CSNuit,VBUnit,VbaUnit,XMLUnit等工具)。没有否定在采用Top-Down Test、Bottom-Up Test时候要书写Test Driver等其他工作。
2. 在纳期过紧的时候,如何定量的分析产品的质量至今仍让我无法找到足够好的解决方案。有些地方也许是按照理想说的。

hi,oldsidney
强烈同意测试不被重视的说法。
测试水平的高低与代码的质量同样都直接决定着产品生产周期的长短及质量。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 3:16 PM Ninputer
@Yu

Sorry对你的话理解有误

可能许多公司都觉得这不太容易实现因此就不去实现。其实有公司已经实现了,而且工作得非常好,没有你说得那么可怕。比如Microsoft。关键可能如你所说,为了节省成本而无力进行这种完善的测试……这真是恶性循环的开始。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 3:21 PM Ninputer
@Yu

此外我不觉得测试用例只是单元测试的概念。事实上我发现你从未提到过“测试用例”这一说法,是否我们所用的概念或术语有分歧?



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 3:46 PM Yu
我是一个做应用软件开发的。不管是软件开发规模还是角度(视点)甚至致命的利益率都与微软有极大的不同,对我来讲如果单纯的照抄微软或者其他大公司的开发模式也许会死人的。微软可以轻易让VS2004换个年号,我却没有办法让我的项目迟交一天。
# 这里没有任何攻击微软的成分,只是想说明不同点。

所谓的完善测试,是一个理想,并且应该有很多种方法可以接近。

想来话题可能有些远了,让我收一下。
测试人员是否真的那么重要依然让我很迷惑。。。
我需要的是比较懂测试技术的开发人员。说极端些就是不太需要不怎么懂测试的开发高手。




# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 3:57 PM Yu
hi,Ninputer

可不是,我真的没有说过测试用例,

我的理解是在单元测试阶段,测试用例有这样三种
1. 自动测试使用的数据
生成源 :由自动测试程序独立生成。
生命周期位置:一般与程序制作的位置相同
2. 按照测试式样书制作的用例
生成源 :手工制作居多。
生命周期位置:尽量保证在黑盒测试之前制作
3. 实际数据
生成源 :客户
生命周期位置:相对比较任意,尽量保证在测试式样书(黑盒用)的重点
check point通过前导入。




# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 4:26 PM 活靶子正在被新蚊连啵
按照3办事



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 4:42 PM oldsidney
http://www.cnblogs.com/banian/archive/2004/09/23/46034.aspx 看到這段話:

如果一名程序员真的把自己编写的程序视为其自我的延伸,那么他就绝对不会希望在他的程序中发现任何错误。不仅如此,他还会尽力证明,自己的程序都是正确的---甚至于,即使他发现了重大的错误,他也会睁一只眼闭一只眼,对错误视而不见。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 5:14 PM Yu
嗯。我也明白你说的意思,但是也许得不出
因为这个就一定要测试人员的理由。。

总隐隐的觉得让“绝对不会希望在他的程序中发现任何错误“的开发人员了解什么是测试才是更关键的。



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 5:25 PM Ninputer
@Yu

有时你想象不到为什么开发者找不出错误,但实际上就是找不出。我们的科学家们在不断研究这个问题的过程中,发明了系统测试的理论和方法。如果你还觉得不可思议,为什么开发人员连自己代码中的错误都找不到……我只能说,这是客观事实。

不过若开发者也按照系统的测试理论,完善地测试自己的代码并非不可行,但这就是按oldsidney所说的“浪費錢叫時薪100美元的程式人員去做測試員(時薪30美元)做的事”



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 6:15 PM 开心就好
看来大家都关心测试的事情了




# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/24/2004 10:38 PM Yu
hi,Ninputer

不知道你为什么不跟着我们的讨论继续下去,总是跳来跳去。。。

不管怎么说,看样子你是非常信奉你现在掌握的理论,那么让我仔细的向你学习一下,想提一个问题,按照你现在的理论体系,你认为什么样的软件可以交到客户手里?就是按照你说的完善测试理论,依照现在开发的项目也可以,质量基准值都有什么呢。什么情况下是质量合格,什么情况下无法交活?



# re: 不需要測試人員的五大藉口 (約耳談軟體) 9/25/2004 12:15 PM jeric
这个实际上就是国内软件业的悲哀。买单的人不用软件,主要靠关系打单。所以质量差一点,关系实际上也不是太大。
回复 支持 反对

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2004-9-28 11:45:34 | 只看该作者
1. Bugs come from lazy programmers.
"If we hire testers", this fantasy goes, "the programmers will get sloppy and write buggy code. By avoiding testers, we can force the programmers to write correct code in the first place."

Sheesh. If you think that, you either have never written code, or you are remarkably dishonest about what writing code is like. Bugs, by definition, leak out because programmers did not see the bug in their own code. A lot of times it just takes a second set of eyes to see a bug.

When I was writing code at Juno, I tended to exercise my code the same way every time ... I used my own habits, relying on the mouse a lot. Our marvelous, vastly overqualified tester had slightly different habits: she did more things with the keyboard (and actually rigorously tested the interface using every possible combination of inputs). This quickly uncovered a whole slew of bugs. In fact at times she actually told me that the interface flatly didn't work, 100% did not work, even though it always worked for me. When I watched her repro the bug I had one of those whack-your-forehead moments. Alt! You're holding down the Alt Key! Why didn't I test that?

2. My software is on the web. I can fix bugs in a second.
Bwa ha ha ha ha! OK, it's true, web distribution lets you distribute bug fixes much faster than the old days of packaged software. But don't underestimate the cost of fixing a bug, even on a web site, after the project has already frozen. For one thing, you may introduce even more bugs when you fix the first one. But a worse problem is that if you look around at the process you have in place for rolling out new versions, you'll realize that it may be quite an expensive proposition to roll out fixes on the web. Besides the bad impression you will make, which leads to:

3. My customers will test the software for me.
Ah, the dreaded "Netscape Defense". This poor company did an almost supernatural amount of damage to its reputation through their "testing" methodology:

when the programmers are about halfway done, release the software on the web without any testing.
when the programmers say they are done, release the software on the web without any testing.
repeat six or seven times.
call one of those versions the "final version"
release .01, .02, .03 versions every time an embarrassing bug is mentioned on c|net.
This company pioneered the idea of "wide betas". Literally millions of people would download these unfinished, buggy releases. In the first few years, almost everybody using Netscape was using some kind of pre-release or beta version. As a result, most people think that Netscape software is really buggy. Even if the final release was usually reasonably unbuggy, Netscape had so doggone many people using buggy versions that the average impression that most people have of the software was pretty poor.

Besides, the whole point of letting "your customers" do the testing is that they find the bugs, and you fix them. Unfortunately, neither Netscape, nor any other company on earth, has the manpower to sift through bug reports from 2,000,000 customers and decide what's really important. When I reported bugs in Netscape 2.0, the bug reporting website repeatedly crashed and simply did not let me report a bug (which, of course, would have gone into a black hole anyway). But Netscape doesn't learn. Testers of the current "preview" version, 6.0, have complained in newsgroups that the bug reporting website still just doesn't allow submissions. Years later! Same problem!

Of those zillions of bug reports, I would bet that almost all of them were about the same set of 5 or 10 really obvious bugs, anyway. Buried in that haystack will be one or two interesting, difficult-to-find bugs that somebody has gone to the trouble of submitting, but nobody is looking at all these reports anyway, so it is lost.

The worst thing about this form of testing is the remarkably bad impression you will make of your company. When Userland released the first Windows version of their flagship Frontier product, I downloaded it and started working through the tutorial. Unfortunately, Frontier crashed several times. I was literally following the instructions exactly as they were printed in the tutorial, and I just could not get more than 2 minutes into the program. I felt like nobody at Userland had even done the minimum amount of testing, making sure that the tutorial works. The low perceived quality of the product turned me off of Frontier for an awfully long time.

4. Anybody qualified to be a good tester doesn't want to work as a tester.
This one is painful. It's very hard to hire good testers.

With testers, like programmers, the best ones are an order of magnitude better than the average ones. At Juno, we had one tester, Jill McFarlane, who found three times as many bugs as all four other testers, combined. I'm not exaggerating, I actually measured this. She was more than twelve times more productive than the average tester. When she quit, I sent an email to the CEO saying "I'd rather have Jill on Mondays and Tuesdays than the rest of the QA team put together".

Unfortunately, most people who are that smart will tend to get bored with day-to-day testing, so the best testers tend to last for about 3 or 4 months and then move on.

The only thing to do about this problem is to recognize that it exists, and deal with it. Here are some suggestions:

Use testing as a career move up from technical support. Tedious as testing may be, it sure beats dealing with irate users on the phone, and this may be a way to eliminate some of the churn from the technical support side.
Allow testers to develop their careers by taking programming classes, and encourage the smarter ones to develop automated test suites using programming tools and scripting languages. This is a heck of a lot more interesting than testing the same dialog again and again and again.
Recognize that you will have a lot of turnover among your top testers. Hire aggressively to keep a steady inflow of people. Don't stop hiring just because you temporarily have a full manifest, 'cause da golden age ain't gonna last.
Look for "nontraditional" workers: smart teenagers, college kids, and retirees, working part time. You could create a stunningly good testing department with two or three top notch full timers and an army of kids from Bronx Science (a top-ranked high school in New York) working summers in exchange for college money.
Hire temps. If you hire about 10 temps to come in and bang on your software for a few days, you'll find a tremendous number of bugs. Two or three of those temps are likely to have good testing skills, in which case it's worth buying out their contracts to get them full time. Recognize in advance that some of the temps are likely to be worthless as testers; send them home and move on. That's what temp agencies are for.
Here's one way not to deal with it:

Don't even think of trying to tell college CS graduates that they can come work for you, but "everyone has to do a stint in QA for a while before moving on to code". I've seen a lot of this. Programmers do not make good testers, and you'll lose a good programmer, who is a lot harder to replace.
And finally. The number one stupid reason people don't hire testers:

5. I can't afford testers!
This is the stupidest, and it's the easiest to debunk.

No matter how hard it is to find testers, they are still cheaper than programmers. A lot cheaper.  And if you don't hire testers, you're going to have programmers doing testing. And if you think it's bad when you have testers churning out, just wait till you see how expensive it is to replace that star programmer, at $100,000 a year, who got sick of being told to "spend a few weeks on testing before we release" and moved on to a more professional company. You could hire three testers for a year just to cover the recruiter's fee on the replacement programmer.

Skimping on testers is such an outrageous false economy that I'm simply blown away that more people don't recognize it.
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-17 07:00 , Processed in 0.071593 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表