山海之家

面向大海的家

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  2 随笔 :: 14 文章 :: 2 评论 :: 0 Trackbacks
Cached @ 2025/4/26 4:49:08Control ASP.skins_cogitation_controls_blogstats_ascx
<2025年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

留言簿(0)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/26 4:49:08Control ASP.skins_cogitation_controls_singlecolumn_ascx

Should Developers Test the Product First?

When a programmer builds a product, should he release it to the testers right away? Or should he test it himself to make sure that it is free of obvious bugs?

Many testers would advise the programmer to test the product himself, first. I have a different answer. My answer is: send me the product the moment it exists. I want avoid creating barriers between testing and programming. I worry that anything that may cause the programmers to avoid working with me is toxic to rapid, excellent testing.

Of course, it’s possible to test the product without waiting to send it to the testers. For instance, a good set of automated unit tests as part of the build process would make the whole issue moot. Also, I wouldn’t mind if the programmer tested the product in parallel with me, if he wants to. But I don’t demand either of those things. They are a lot of work.

As a tester I understand that I am providing a service to a customer. One of my customers is the programmer. I try to present a customer service interface that makes the programmers happy I’m on the project.

I didn’t always feel this way. I came to this attitude after experiencing a few projects where I drew sharp lines in sand, made lots of demands, then discovered how difficult it is to do great testing without the enthusiastic cooperation of the people who create the product.

It wasn’t just malicious behavior, though. Some programmers, with the best of intentions, were delaying my test process by trying to test it themselves, and fix every bug, before I even got my first look at it (like those people who hire house cleaners, and then clean their own houses before the professionals arrive).

Sometimes a product is so buggy that I can’t make much progress testing it. Even then, I want to have it. Every look I get at it helps me get better ideas for testing it, later on.

Sometimes the programmer already knows about the bugs that I find. Even then, I want to have it. I just make a deal with the programmers that I will report bugs informally until we reach an agreed upon milestone. Any bugs not fixed by that time get formally reported and tracked.

Sometimes the product is completely inoperable. Even then, I want to have it. Just by looking at its files and structures I might begin to get better ideas for testing it.

My basic heuristic is: if it exists, I want to test it. (The only exception is if I have something more important to do.)

My colleague Doug Hoffman has raised a concern about what management expects from testing. The earlier you get a product, the less likely you can make visible progress testing it– then testing may be blamed for the apparently slow progress. Yes, that is a concern, but that’s a question of managing expectations. Hence, I manage them.

So, send me your huddled masses of code, yearning to be tested. I’ll take it from there.

24 Responses to “Should Developers Test the Product First?”

  1. Pascal Says:

    Nice article, James.

    How do you deal with bug reporting? One thing I’ve noticed is that developers don’t really like to read bug reports on areas they know are not quite yet ready for prime time.

  2. insectivorous Says:

    But, but, but…coders can’t test! Oh, sure, they’re cute and fuzzy and fun to watch when they try, but it’s kinda like watching somebody else’s kid do a finger-painting. It gets hung on the fridge, but nobody mistakes it for Warhol, let alone Van Gogh. “Looky, I made a test!” “That’s sweet, dear, thank you for testing that for me!”

    Umm, is that too cynical? Nah. I’m even more cynical than that. When a coder finds a bug, and the spec isn’t crystal clear (stop laughing!) then it will claim that’s the correct behaviour and anything else would be a spec change, thus your fault, not it’s.

    Coders don’t have the chops. When you get right down to it, a coder is basically demonstrating that something works. They’re trying to make it work. I’m trying to break it. Coders hate it when stuff breaks. I live to break stuff. That’s why coders can’t understand that testing is not boring. They think it’s all about doing what they think is testing, and they don’t know any better, and what they do IS boring, not least because it’s so ineffective.

    But the code is their baby. I can appreciate, in a distant and intellectual sense, that they might (for some strange reason) not appreciate seeing their baby gutted like a trout, mangled, and hung out to dry.

    Alas.

    Alackaday.

    How lamentable.

    We come from utterly different places, with utterly different attitudes and skills and approaches. (And we have fangs). How to explain that to a cute & fuzzy coder?

    Once upon a time, a company built a big, complicated and expensive widget. It broke, and the king despaired. So the company built another BC&EW, and sent it to the Knave of Hearts for testing. The Knave found many defects in many different parts of the BC&EW, so the company had to toss it out. They started to build yet another BC&EW, but their venture capital ran out and they were placed in Ch.11, and everybody’s stock options turned into Kleenex. But at the creditor’s meeting, the Knave said, “If you let me test it while it’s big, but not complicated, I can find a lot of problems early. If you let me test it again when it’s big and complicated but not expensive yet, I can find even more problems. Then you can fix those problems before it gets expensive, and maybe you’ll stay out of Ch.7″ The bigwigs and the midwigs hemmed and hawed while the met and conferred, and they decided to let the Knave test early and often and whenever he wanted to test something. So he tested the big pieces, and the complicated pieces, and even the expensive pieces. Then he tested the big pieces with the complicated pieces, and the expensive pieces with the big pieces, and the complicated pieces with the expensive ones, and then he tested the BC&EW all together, and it worked per spec. The king was pleased.

    (Coders like stories like that just before bedtime, especially if they have happy endings and the company gets discharged so their stock options are actually worth something again.)

    There are two morals to this story.

    The first moral is, “everything’s always ready to test when the Knave wants to test it, especially when it’s not finished yet”.

    The second moral is, “the documentation still sucks.”

分享按钮发布于: 2006-10-17 15:17 SYSSAM 阅读(729) 评论(0)  编辑 收藏

评论

标题
姓名
主页
内容 
  登录  使用高级评论  Top 订阅回复  取消订阅
[使用Ctrl+Enter键可以直接提交]