google搜索 站内搜索                 软件测试门户 | 软件测试培训 | 文章资料精选 | 软件测试论坛 | 测试解决方案 | 软件测试博客 | 测试招聘求职 
打印

[翻译] bug life cycle

bug life cycle


What happens to a bug from start to finish.
        While attending testing seminars, I noticed that there was a gap in what was being taught. There’s a lot of theory presented, a lot of ‘why test’ classes and a lot of classes on specific techniques but nothing on a couple of practices that will go a long way towards improving the testing process in a company, specifically setting up a defect tracking system and enforcing policies and procedures to resolve those defects. Setting up these two things, more than anything else, will put a company on the road to organizing its testing and QA effort. To fill that gap, I’ve come up with the ‘Bug Life Cycle’ presentation. While I can’t claim it as my own, it is what I’ve learned over the years as a tester; many of you will find it familiar.

What is a bug?
        In computer technology, a bug is a coding error in a computer program. Myers defined it by saying that “A software error is present when the program does not do what its end user reasonably expects it to do.” (Myers, 1976.). I tell my testers if you don’t like it, it’s a bug.
        Over the years, my colleagues and I have decided that there are as many definitions for the term “bug” as there are testers. “There can never be an absolute definition for bugs, nor an absolute determination of their existence. The extent to which a program has bugs is measured by the extent to which it fails to be useful. This is a fundamentally human measure.” (Beizer, 1984.). For a more definitive list of many types of bugs refer to Software Testing by Cem Kaner, et. al., pages 363-432.

Who can report a bug?
        Anyone who can figure out that the software isn’t working properly can report a bug. The more people who critique a product, the better it’s going to be. However, here’s a short list of people expected to report bugs:
Testers / QA personnel
Developers
Technical Support
Beta sites
End users
Sales and marketing staff (especially when interacting with customers).

When do you report a bug?
        When you find it! When in doubt, write it up. Waiting means that you’ll forget to write it altogether or important details about the bug will be forgotten. Writing it now also gives you a ‘scratch pad’ to make notes on as you do more investigation and work on the bug.
        Also, writing the bug when you find it makes that information instantly available to everyone. You don’t have to run around the building telling everyone about the bug; a simple phone call or email will alert everyone that the bug exists. Additionally, the information about the bug doesn’t change or get forgotten with every telling of the story.

Bugs are tracked in a database
        The easiest way to keep track of defect reports is in a database. Paper is an ok way to record defect reports on but pieces of paper can get lost or destroyed; a database is more reliable and can be backed up on a regular basis.
        You can purchase many commercially available defect tracking databases or you can build your own. It’s up to you. I’ve always built my own with something small like Microsoft Access or SQL Server. The decision then was that it was cheaper to build and maintain it on site than it was to purchase it. You’ll have to run the numbers for your situation when you make that decision.
        The rule of thumb is one and only one defect per report (or record) when writing a bug report. If more than one defect is put into a report, the human tendency is to deal with the first problem and forget the rest of them. Also, defects are not always fixed at the same time. With one defect per report, as the defects get fixed, they will be tested individually instead of in a group where the chance that a defect is overlooked or forgotten is greater.
        You may hear the term “bugfile” used by people when referring to a defect database. The name bugfile is a slang term from the old WordPerfect Corporation. “Bugs” were first logged into a flat file database called DataPerfect; a file of bugs, hence the word “bugfile”.

A good bug reports include the following items:
        Put the Reporter’s Name on the bug. If there are questions we need to know who originated this report.
        Specify the Build or Version number of the code being worked on. Is this the shipping version or a build done in-house for testing and development? Some bugs may only occur in the shipping version; if this is the case, the version number is a crucial piece of information.
        Specify the Feature or Specification or part of the code. This facilitates assigning the bug to a developer assigned to that part of the product.
        Include a Brief Description of what the problem is. For example, “Fatal error when printing landscape.” is a good description; short and to the point.
        List Details including how to duplicate the bug and any other relevant data or clues about the bug. Start with how the computer and software is setup. List each and every step (don’t leave any out) to produce the bug. Sometimes a minor detail can make all the difference in duplicating or not duplicating a bug. For example, using the keyboard versus using the mouse may product very different results when duplicating a bug.
        If the status isn’t ‘Submitted’ by default, change it to Submitted. This is a flag to the bug verifier that a new bug has been created and needs to be verified and assigned.

Things to remember…
        Keep the text of the bug impersonal. Bug reports will be read by a variety of people including those outside the department and even the company. Please don’t insult people’s ancestors or the company they work for or the state they live in or make any other impulsive or insensitive comment. Be careful with humorous remarks; one person’s humor is another person’s insult. Keep the writing professional.
        Be as specific as possible in describing the current state of the bug along with the steps to get into that state. Don’t make assumptions that the reader of the bug will be in the same frame of mind as you are. Please don’t make people guess where you are or how you got into that situation. Not everyone is thinking along the same lines as you are.

Rating Bugs
        While it is important to know how many bugs are in a product, it is even more useful to know how many of those bugs are severe, ship stopping bugs compared to the number of inconvenient bugs. To aid in assessing the state of the product and to prioritize bug fixes, bugs are ranked. The easiest way to rank or rate bugs is to assign each bug a severity rating and a likelihood rating. This assignment is done by the bug reporter when the bug is created. The bug’s rating is a combination of the severity and likelihood ratings.

Severity
        The severity tells the reader of the bug how bad the problem is. Or in other words, say what the results of the bug are. Here’s a common list for judging the severity of bugs. There is sometimes disagreement about how bad a bug is. This list takes the guess work out of assigning a severity to bugs.

Rating        Value
Blue screen        1
Loss without a work around        2
Loss with a work around        3
Inconvenient        4
Enhancement        5

Likelihood
        Put yourself in the average user’s place. How likely is a user to encounter this bug? While the tester may encounter this bug every day with every build, if the user isn’t likely to see it, how bad can the bug be?
Rating        Value
Always        1
Usually        2
Sometimes        3
Rarely        4
Never        5

Severity * Likelihood = Rating
        Computing the rating of a bug is done by multiplying the numeric value given to the severity and likelihood status’. Do the math by hand or let your defect tracker do it for you.
        The trick is to remember that the lower the number, the more severe the bug is. The highest rating is a 25 (5 X 5), the lowest is 1 (1 X 1). The bug with a 1 rating should be fixed first while the bug with a 25 rating may never get fixed.
        Looking at a list of these bugs ordered by rating means the most important ones will be at the top of the list to be dealt with first. Sorting bugs this way also lets management know whether the product is ready to ship or not. If the number of severe (1) bugs is zero, the product can ship. If there are any severe bugs, then bug fixing must continue.

Other useful information
         Who’s the bug Assigned to; who’s going to be responsible for the bug and do the work on the bug?
        What Platform was the bug found on – Windows, Linux, etc. Is the bug specific to one platform or does it occur on all platforms?
        What Product was the bug found in? If your company is doing multiple products this is a good way to track those products.
        What Company would be concerned about this bug? If your company is working with multiple companies either as an OEM or as customer this is a good way to track that information.
        Whatever else you want or need to keep track of. Some of these fields will also have value to marketing and sales. It’s a useful way to track information about companies and clients.

An example of a bug report:

Figure 1 The status tells us the state of the bug. The severity tells us how bad the bug is. The likelihood tells us how often the average user will see the bug. The Assigned To field tells us who is responsible for resolving the bug. The Feature tells us what part of the product the bug is in. The Problem Description gives a brief (very brief) summation of the problem. This description is used when compiling reports or lists of bugs. The details tell us the current setup or situation, the steps to duplicate the problem and any other essential information that will allow someone else to duplicate the bug. Once the bug is submitted, this field cannot be changed. Any additional information will go in the notes field.  The notes field contains any discussions about the bug. For example, when and why the status was changed and by whom; additional information about how to duplicate the bug that will aid in resolving the bug; and opinions about the bug. This is a “free-forum” area where people should feel free to express their opinions without censure or criticism. Once comments are placed on a bug, they cannot be changed or deleted by anyone else or even the author. The comments, like the details, stand. Anyone reading the bug after the fact should be able to understand not only what the bug was and how bad a bug it was but also how it was resolved and why it was resolved that way.

Examples of poorly written bugs:
        Please keep in mind that I didn’t make any of these up!
        “My computer crashed.” We are sorry for your loss, can you give us more information?
        “It’s kinda “sucky”.” This one violates all sorts of rules. What’s kind of “sucky”. For that matter, define “sucky.”. Better yet, don’t use the work “sucky” it’s not in the dictionary and most certainly not in good taste.
        “It don’t.” This bug doesn’t provide enough information. What don’t? Don’t what?
        “Product needs a “speel” checker.” It goes without saying that “spelling counts”!

Now we have a bug…
        The first step is Verification. A bug verifier searches the database looking for all ‘Submitted’ bugs assigned to him. He then duplicates the bug by following the steps listed in the details section of the bug. If the bug is reproduced and has all the proper information, the assigned to field is changed to the appropriate person who will be fixing the bug. If the bug is not written clearly, is missing some steps or can’t be reproduced, it will be sent back to the bug reporter for additional work.
        The Assigned To field contains the name of the person responsible for that area of the product or code. It is important to note that from this point onward, the developer’s name stays on the bug. Why? There are usually more developers than there are testers. Developers have a set of features to work on. Developers look at bugs from a stand point of “what is assigned to me?”. Testers have multiple sets of features to test. Testers look at bugs from a stand point of “what needs to be tested?”; testers may also change what features they are assigned to test. Because of the different way testers and developers work, developers sort bugs by the Assigned To field and testers sort bugs by the Status field. Leaving the developer’s name on the bug also makes it easier to send the bug back to the developer for more work. The tester simply changes the status field to Verified and it automatically goes back to the developer.

The Developer works on the bug…
        The first thing the developer does is give the bug a ‘In Progress’ status indicating that he has seen the bug and is aware that it his responsibility to resolve. The developer works on the bug and based on his conclusions assigns a status to the bug indicating what the next step should be.
        Remember, the developer does NOT change the Assigned To field. His name stays on the bug so if the bug has to go back to him, it will make back onto his list. This procedure ensures that bugs don’t fall between the cracks.
        The following is a list of status’ that a developer can assign to a bug.

Fixed
        The Fixed status indicates that a change was made to the code and will be available in the next build. Testers search the database on a daily basis looking for all Fixed status bugs. Then the bug reporter or tester assigned to the feature retests the bug duplicating the original circumstances. If the bug is fixed and it is now working properly, another test with slightly different circumstances is performed to confirm the fix. If the bug passes both tests, it gets a Tested status.
        If the bug doesn’t pass the test, the bug is given a Verified status and sent back to the developer. Notice here that since the bug’s Assigned To field has retained the developer’s name, it’s an easy process for the tester to send the bug back by simply changing the status to Submitted.

Duplicate
        The Duplicate status bug is the same as a previously reported bug. Sometimes only the developer or person looking at the code can tell that the bug is a duplicate. It’s not always obvious from the surface. A note indicating the previous bug number is placed on the duplicate bug. A note is also placed on the original bug indicating that a duplicate bug exists. When the original bug is fixed and tested, the duplicate bug will be tested also. If the bug really is a duplicate of previous bug then the when the previous bug is fixed, the duplicate bug will also be fixed. If this the case then both bugs get a Tested status.
        If the duplicate is still a bug, while the original bug is working properly, the duplicate bug is no longer has a duplicate status. It gets a Submitted status and is sent back to the developer. This is a “fail-safe” built into the bug life cycle. It’s a check and balance that prevents legitimate bugs from being swept under the carpet or falling between the cracks.
        A note of warning. Writing lots of duplicate bugs will get a tester a reputation for being an “airhead”. It pays to set time aside daily to read all the new bugs written the previous day.

Resolved
        Resolved means that the problem has been taken care of but no code has been changed. For example, bugs can be resolved by getting new device drivers or third party software. Resolved bugs are tested to make sure that the problem really has been resolved with the new situation. If the problem no longer occurs, the bug gets a Tested status. If the Resolved bug still occurs, it is sent back to the developer with a Submitted status.

Need More Information
        Need More Information or “NMI” indicates that the bug verifier or developer does not have enough information to duplicate or fix the bug; for example, the steps to duplicate the bug may be unclear or incomplete. The developer changes the status to ‘Need More Information’ and includes a question or comments to the reporter of the bug. This status is a flag to the bug reporter to supply the necessary information or a demonstration of the problem. After updating the bug information (in the Notes field), the status is put back to Verified so the developer can continue working on the bug. If the bug reporter can not duplicate the bug, it is given a Can’t Duplicate status along with a note indicating the circumstances.
        The only person who can put “Can’t Duplicate” on a bug is the person who reported it (or the person testing it). The developer can NOT use this status, he must put Need More Information on it to give the bug reporter a chance to work on the bug.
        This is another example of a “fail-safe” built into the database. It is vital at this stage that the bug be given a second chance. The developer should never give a bug a ‘Can’t Duplicate’ status. The bug reporter needs an opportunity to clarify or add information to the bug or to retire it.

Working as Designed
        The developer has examined the bug, the product requirements and the design documents and determined that the bug is not a bug, it is Working as Designed. What the product or code is doing is intentional as per the design. Or as someone more aptly pointed out it’s “working as coded”! It’s doing exactly what the code said to do.
        This bug can go several directions after being assigned this status. If the tester agrees with the status, then the status stands and the bug is finished. The bug may be sent to documentation for inclusion in help files and the manual. If the tester disagrees with the status then the bug can be appealed by putting a Submitted status on it to send the bug back through the process again. The tester should include in the notes a reason why, although it is Working as Designed, it should be changed now. The bug may also be sent back to the design committee so that the design can be improved.
        This is a dangerous status. It’s an easy way to sweep bugs under the carpet by giving them this status. It’s up to the bug reporter to make sure the bug doesn’t get forgotten in this manner. Product managers may also review lists of bugs recently assigned Working as Designed.

Enhancement
        Enhancement means that while the suggested change is great idea because of technical reasons, time constraints or other factors, it won’t be incorporated into the code until the next version of the product.
This status may also be appealed by changing the status to Submitted and adding a note specifying why it should be fixed now.

Defer
        Defer is almost the same status as Enhancement. This status implies that the cost of fixing the bug is too great given the benefits that it would produce. If the fix is a one liner to one file that doesn’t influence other files, it might be ok to fix the bug. On the other hand, if the fix will force the rebuild of many files which would force the re-testing of the product and there’s no time left to test the fix before shipping the product, then the fix would be unacceptable and the bug would get a Defer status. To appeal the status, send it back through the process again by putting a Submitted status on it and add a note saying why it should be fixed now.

Not to be Fixed
        You may see the Not to be Fixed status although I don’t recommend making this status available for use. There may be extenuating circumstances where a bug will not be fixed because of technology, time constraints, a risk of destabilizing the code or other factors. A better status to use is Not to be Fixed. To appeal the status, send it back through the process again by putting a Submitted status on it and add a note saying why it should be fixed now.
        This is similar to the Working as Designed status in that its use can be dangerous. Be on the watch for this one. Sometimes developers call this status “You can’t make me”.

Tested
        The Tested status is used only by testers on Fixed, Resolved and Duplicate bugs. This status is a “end of the road” status indicating that the bug has reached the end of its life cycle.

Pending
        The Pending status is used only by testers on Fixed bugs when a bug cannot be immediately tested. The tester may be waiting on hardware, device drivers, a build or additional information necessary to test the bug. When the necessary items have been obtained, the bug status is changed back to Fixed and then it is tested. Make sure the testing part isn’t skipped.

Can’t Duplicate
        This status is used only by the bug reporter; developers or managers cannot use this status. If a bug isn’t reproducible by the assigned developer or bug verifier the bug reporter needs a chance to clarify or add to the bug. There may be a hardware setup or situation or particular way of producing a bug that is peculiar to only this computer or bug reporter and he needs a chance to explain what the circumstances are. Limiting this status to bug reporters only prevents bugs from slipping between the cracks and not getting fixed.

The product has shipped, what happens next?
        First of all, to ship a product the number of bugs rated 5 or less, bugs with a Fixed, Resolved, Pending or Need More Information status must be zero. We’ll assume that the product has shipped and all these bugs have been taken care of. This means the bugfile is full of bugs that have reached the end of their life cycle. Proper database maintenance takes place at this point. Archiving or hiding all these bugs will make the database easier to use and read.
        All bugs with a Tested or Can’t Duplicate bugs are archived. This means that the records are either removed and placed in an archive database or flagged to be hidden from the current view of the database. Never delete any bug records; it may be necessary to do some historical research in the bugfile (‘What did we ship when?’ or ‘Why did we ship with this bug?’).
        Enhancement and Defer bugs are either moved to the new bugfile or retained in the current bugfile. The status of these bugs is then changed back to Verified.

Advanced defect database techniques
        There are things you can do with your database to make it more than just a to-do list for developers and testers. The bugfile is basically raw data, sorting and filtering it makes the data  information that is useful in the decision making process done by management.  A couple of these things to do with the data is to create Reports and Customized views.

Reports
        The data in the defect database is not very useful until it is sorted and presented in a organized fashion, then it becomes information. For example, sorting by developer, the information becomes a ‘to do’ list sorted by rating. Sorting by status lets the reader know how many bugs are submitted or in progress; i.e. how many bugs are currently being worked on? By feature – how many open bugs are there for a particular feature? What feature needs more work and what feature is stable? Sorting by product is useful when more than one product is being worked on simultaneously.
        Be aware that there are certain metrics or reports that should not be used. If you use these reports you will destroy the credibility of your bug file and it will be reduced to a “laundry-list” for developers. One of these reports is “how many bugs did a tester report” and the other is “how many bugs did a developer fix”. Neither one of these has any useful purpose except to beat up people uselessly. See Software Testing by Cem Kaner, et. al.

Examples of Reports
        The Product Manager wants to see a list of bugs to be fixed before shipping that is sorted by rating to determine how ready the product is for shipping. He needs to know what work is left to be done so that an appropriate schedule can be set. The Test Lead needs a list of bugs to be tested before shipping, sorted by tester to make sure all the bugs get tested in the allotted amount of time. The Development Lead has a list of bugs to be resolved before shipping, sorted by developer so that adjustments in work load can be made to ensure that everything is taken care of by the deadline. Technical Support likes a list of bugs that were fixed and not fixed in the product before shipping so they can adequately prepare to support the product. Technical support can resolve customer problems faster by knowing what has been fixed in a product release (the new release or upgrade will fix that problem) and what bugs are still in the product.
        A defect database that has all these fields built into it is able to sort defect data and make it useful information.

Customized views of the database
        If your defect tracking database supports it, you can limit the information seen based on who the person logging in is. For example, the database that I built with SQL Server 7 was web browser based. Each person was assigned a job category such as ‘Tester’, ‘Developer’ or ‘Manager’. The web page that displayed was then the web page designed for that job category. The Developer would see Submitted and In Progress bugs assigned to him while Testers would see all Fixed, NMI, Pending, Resolved, and Duplicate bugs regardless of who is assigned to the bug. The Product Manager view sees all bugs assigned to him, all newly reported bugs, and newly updated bugs.
        The reason for this customized view is that each job views the defect database in a different way based on their needs and the work that has to be accomplished. Testers don’t care who the bug is assigned to, just what the status is. Testers want to see all the bugs, not just bugs written by them, with a ‘Fixed’ status so the bugs can be tested with the latest build. Developers only care about what current and active bugs are assigned to them; developers aren’t concerned about any other person’s bugs.  Product managers are concerned that bugs don’t get ‘swept under the carpet’ with Enhancement or Defer status’ so managers want to see all bugs with that particular status.
References
Software Testing by Cem Kaner, et.al.
Software Testing in the Real World by Edward Kit
Software Test Documentation (IEEE 829-1983)
The Complete Guide to Software Testing by Bill Hetzel
The Art of Software Testing by Glenford J. Myers
Software Testing and Quality Assurance by Boris Beizer
Software Quality: Analysis and Guidelines for Success by Capers Jones
Software Testing Techniques by Boris Beizer
Software Testing by Ron Patton (2000, Sams, ISBN 0672319837). See chapters 18 and 19.
“Organize Your Problem Tracking System Cleaning up your bug database can be as easy as organizing your sock drawer” By Barry Mirrer.

TOP

bug life cycle
bug的生命周期


What happens to a bug from start to finish.
一个bug从产生到消灭,期间都发生了什么事情?

        While attending testing seminars, I noticed that there was a gap in what was being taught. There’s a lot of theory presented, a lot of ‘why test’ classes and a lot of classes on specific techniques but nothing on a couple of practices that will go a long way towards improving the testing process in a company, specifically setting up a defect tracking system and enforcing policies and procedures to resolve those defects. Setting up these two things, more than anything else, will put a company on the road to organizing its testing and QA effort. To fill that gap, I’ve come up with the ‘Bug Life Cycle’ presentation. While I can’t claim it as my own, it is what I’ve learned over the years as a tester; many of you will find it familiar.
我参加过很多有关测试的讨论班,我注意到对于教授一些什么东西,人们有分歧。现在有很多的关于测试的理论,一大堆的“为何测试”论,一大堆的独特的测试技术,却没有一两个实践能长时间地改善公司的测试水平,特别是在建立缺陷跟踪系统和完善开发方略与过程以消除这些缺陷方面。建立这两样东西要胜于建立其他任何东西,它们将使公司的管理测试工作与QA工作步入正轨。为了消除人们的分歧,我要做一个报告,叫作“Bug的生命周期”。尽管我不敢声称里面的内容都是我自己的,但这都是我多年来作为测试员所学到的东西;你们中的许多人都会感到很熟悉。

(未完待续)
品茗松月下,静以历人生。

TOP

What is a bug?
什么是Bug?

        In computer technology, a bug is a coding error in a computer program. Myers defined it by saying that “A software error is present when the program does not do what its end user reasonably expects it to do.” (Myers, 1976.). I tell my testers if you don’t like it, it’s a bug.
在计算机技术中,一个bug就是计算机程序中的一个代码错误。Myers是这样定义bug的:“当程序没有去做其最终用户合理地期望它做的事情时,一个软件错误就发生了。” (Myers, 1976.)我告诉我的测试员们说,如果你不喜欢软件的某个表现,这就是一个bug。
        Over the years, my colleagues and I have decided that there are as many definitions for the term “bug” as there are testers. “There can never be an absolute definition for bugs, nor an absolute determination of their existence. The extent to which a program has bugs is measured by the extent to which it fails to be useful. This is a fundamentally human measure.” (Beizer, 1984.). For a more definitive list of many types of bugs refer to Software Testing by Cem Kaner, et. al., pages 363-432.
经历了这么多年,我和我的同事们都认为有多少测试人员就有多少对bug的定义。“从来不会有对于bug的一个绝对的定义,亦没有对于bug存在的绝对的确定。程序在多大程度的存在bug,要看它会在多大程度上没有做到应做的事。这在根本上就是人为决定的。” (Beizer, 1984.)若要查看各种类型的bug的定义,可参考Software Testing by Cem Kaner, et. al., pages 363-432.

Who can report a bug?
谁可以报告一个bug?

        Anyone who can figure out that the software isn’t working properly can report a bug. The more people who critique a product, the better it’s going to be. However, here’s a short list of people expected to report bugs:
Testers / QA personnel
Developers
Technical Support
Beta sites
End users
Sales and marketing staff (especially when interacting with customers).
任何能指出软件未在正常工作的人都可以报告bug。对产品挑刺的人越多,产品就会变得越好。虽然这么说,这里有一个简表,列出了可以汇报bug的人员:
测试人员或AQ工作人员
开发人员
技术支持人员
Beta站点人员
最终用户
市场营销人员(尤其是跟客户进行交流的时候)


When do you report a bug?
什么时候报告bug?

        When you find it! When in doubt, write it up. Waiting means that you’ll forget to write it altogether or important details about the bug will be forgotten. Writing it now also gives you a ‘scratch pad’ to make notes on as you do more investigation and work on the bug.
在你发现bug的时候!如果还拿不定主意,先把它记下来。不马上记录下来就意味着你将来会忘了所有的有关它的东西,或者会忘记关于这个bug的重要细节。当时就把它记下来,也等于给你提供了一个记着笔记的“草稿本”,这样当你要进一步处理这个bug的时候就很方便了。
        Also, writing the bug when you find it makes that information instantly available to everyone. You don’t have to run around the building telling everyone about the bug; a simple phone call or email will alert everyone that the bug exists. Additionally, the information about the bug doesn’t change or get forgotten with every telling of the story.
还有,就是在你发现之时就记下bug,也会迅速地让每一个人知道关于这个bug的信息。你就不用满屋子跑去告诉每一个人了;一个电话或是电子邮件就可以通过所有人这个bug存在了。另外,这样做,每一个人在讲这个bug的时候,bug的相关信息也不会发生变化。

(未完待续)
品茗松月下,静以历人生。

TOP

Bugs are tracked in a database
要在数据库中对bug进行跟踪


        The easiest way to keep track of defect reports is in a database. Paper is an ok way to record defect reports on but pieces of paper can get lost or destroyed; a database is more reliable and can be backed up on a regular basis.
跟踪缺陷报告的最容易的方法就是用数据库。用纸张来记录缺陷报告固然是个好方法,但是大量的纸张可能会遗失或是遭毁坏;用数据库会更保险一些,而且一般来说还可以对数据库进行备份。

        You can purchase many commercially available defect tracking databases or you can build your own. It’s up to you. I’ve always built my own with something small like Microsoft Access or SQL Server. The decision then was that it was cheaper to build and maintain it on site than it was to purchase it. You’ll have to run the numbers for your situation when you make that decision.
你可以在市场上买到很多缺陷跟踪数据库,你也可以自己建一个。这全看你的主意了。我经常用一些小型数据库你Microsoft Access或是SQL Server来搭建自己的数据库。自己建库在数据库创建与维护方面的花费当然要比购买数据库的花费便宜。但同时你也必须为你自己的特定情况运行很多次。
        The rule of thumb is one and only one defect per report (or record) when writing a bug report. If more than one defect is put into a report, the human tendency is to deal with the first problem and forget the rest of them. Also, defects are not always fixed at the same time. With one defect per report, as the defects get fixed, they will be tested individually instead of in a group where the chance that a defect is overlooked or forgotten is greater.
在书写bug报告时,大的原则是每份报告只针对一个缺陷。如果一份报告里记载有不止一个缺陷,人的思维趋向于只处理第一个缺陷而不管其他的。还有,这些缺陷不会总是在同一时间得到修复。如果一个报告只记载一个缺陷,当所报告的很多缺陷得到修复后,这些缺陷可以独立测试;如果放在一起,某个缺陷被忽略或被遗漏的可能就就会加大。

        You may hear the term “bugfile” used by people when referring to a defect database. The name bugfile is a slang term from the old WordPerfect Corporation. “Bugs” were first logged into a flat file database called DataPerfect; a file of bugs, hence the word “bugfile”.
你可能听说过bug档案袋这个词,人们用来比喻缺陷数据库。Bug档案袋这个名字是一句行话,来源于老牌的WordPerfect公司;一个装满bug的档案袋,bug档案袋由此得来。


(未完待续)
品茗松月下,静以历人生。

TOP

A good bug reports include the following items:
好的bug报告要包括以下几项:


        Put the Reporter’s Name on the bug. If there are questions we need to know who originated this report.
把与bug有关的报告人的名字写入报告。如果对报告有疑问,我们需要知道写报告的人是谁。

        Specify the Build or Version number of the code being worked on. Is this the shipping version or a build done in-house for testing and development? Some bugs may only occur in the shipping version; if this is the case, the version number is a crucial piece of information.
写明有关的代码的内建版本或发布版本号。被测试的版本是发布版本还是为测试和开发内建的版本?有一些bug可能只在发布版本中出现;如果是这种情况,版本号就是一个很关键的信息了。

        Specify the Feature or Specification or part of the code. This facilitates assigning the bug to a developer assigned to that part of the product.
写明软件的相关的功能或规格说明或部分相关代码。这便于将bug指派给负责该部分的开发人员。

        Include a Brief Description of what the problem is. For example, “Fatal error when printing landscape.” is a good description; short and to the point.
报告要包含对问题的简短描述。比如,“打印图形时出现致命错误”就是一个很好的描述;简明扼要。

        List Details including how to duplicate the bug and any other relevant data or clues about the bug. Start with how the computer and software is setup. List each and every step (don’t leave any out) to produce the bug. Sometimes a minor detail can make all the difference in duplicating or not duplicating a bug. For example, using the keyboard versus using the mouse may product very different results when duplicating a bug.
罗列出bug的详细信息,这包括再现这一bug的方法,以及其他任务与bug相关的数据或线索。首先说明计算机和软件是如何配置安装的。然后列出产生该bug的每一步操作(不要漏掉任何一步)。有时一个小的细节的不同也会决定能否再现这个bug。例如,当重现一个bug时,使用键盘和使用鼠标会得到截然不同的结果。

        If the status isn’t ‘Submitted’ by default, change it to Submitted. This is a flag to the bug verifier that a new bug has been created and needs to be verified and assigned.
如果默认的bug状态不是‘已提交’,应改为‘已提交’。这是一个标志,告诉bug核对人员说已经找到了一个新的bug,需予核对和指派。

Things to remember…
记住这几件事:

        Keep the text of the bug impersonal. Bug reports will be read by a variety of people including those outside the department and even the company. Please don’t insult people’s ancestors or the company they work for or the state they live in or make any other impulsive or insensitive comment. Be careful with humorous remarks; one person’s humor is another person’s insult. Keep the writing professional.
报告bug的文字要客观。Bug报告会由包括本部门之外甚至本公司之外的各类人去阅读的。请不要辱骂别人的祖宗,不要侮辱别人工作的公司,不要污篾别人所在的国家,也不要使用其他任何过激的或敏感的词句。要小心使用幽默语;一个人觉得是幽默的事在别一个人看来就是侮辱。要力保文字的专业性。

        Be as specific as possible in describing the current state of the bug along with the steps to get into that state. Don’t make assumptions that the reader of the bug will be in the same frame of mind as you are. Please don’t make people guess where you are or how you got into that situation. Not everyone is thinking along the same lines as you are.
尽管具体地去描述bug 当前的状态以及出现此状态要经历的步骤。不要假定读你的报告的人会和你有一样的思维方式。请不要让别人去猜测你现在的处境或是你怎样到达那个处境的。不是所有人都和你用同样的方式想问题。



(未完待续)
品茗松月下,静以历人生。

TOP

Rating Bugs
Bug分级


        While it is important to know how many bugs are in a product, it is even more useful to know how many of those bugs are severe, ship stopping bugs compared to the number of inconvenient bugs. To aid in assessing the state of the product and to prioritize bug fixes, bugs are ranked. The easiest way to rank or rate bugs is to assign each bug a severity rating and a likelihood rating. This assignment is done by the bug reporter when the bug is created. The bug’s rating is a combination of the severity and likelihood ratings.
尽管知道一个产品中有多少个bug很重要,但更重要的是知道这些bug里严重的,导致产品中止发布的bug的数量与导致用产品用起来不方便的bug数量的比例。为了帮助评估产品的状态以及确定bug修复的优先级,就要对bug分级。对bug分级的最简单方法就是给每一个bug分配一个严重等级和一个出现频率等级。这个工作是在报告bug时由bug报告者来完成的。Bug的级别是严重等级与出现频率等级的组合。

Severity
严重等级


        The severity tells the reader of the bug how bad the problem is. Or in other words, say what the results of the bug are. Here’s a common list for judging the severity of bugs. There is sometimes disagreement about how bad a bug is. This list takes the guess work out of assigning a severity to bugs.
一个bug的严重等级是让人知道这个问题有多坏。或者这么说,严重级别说明了这个bug导致的后果是什么。下面是用来判断bug的严重等级的常用的表格。有时对于一个bug的严重等级人们是有分歧的,这个表格可以防止臆测地给bug分配严重等级。

Rating        Value
Blue screen        1
Loss without a work around        2
Loss with a work around        3
Inconvenient        4
Enhancement        5
等级           值
蓝屏           1
任务未完成程序就失败   2
任务完成后程序失败    3
用起来不方便       4
需要改进         5


Likelihood
出现频率等级


        Put yourself in the average user’s place. How likely is a user to encounter this bug? While the tester may encounter this bug every day with every build, if the user isn’t likely to see it, how bad can the bug be?
请将自己放到普通用户的角度。一个用户在多大程度上愿意碰到一个bug呢?尽管测试员可以每天每个版本地遇到同一个bug,但如果用户不愿意看到这个bug,那么这个bug会有多坏呢?
Rating        Value
Always        1
Usually        2
Sometimes        3
Rarely        4
Never        5
等级    值
总是    1
经常    2
有时    3
很少    4
从未    5


Severity * Likelihood = Rating
严重等级 * 出现频率等级=bug级别


        Computing the rating of a bug is done by multiplying the numeric value given to the severity and likelihood status’. Do the math by hand or let your defect tracker do it for you.
把严重等级对应的数字与出现频率等级的数字乘起来就得到了一个bug的级别。可以自己动手算,也可能让缺陷跟踪人员帮你算。

        The trick is to remember that the lower the number, the more severe the bug is. The highest rating is a 25 (5 X 5), the lowest is 1 (1 X 1). The bug with a 1 rating should be fixed first while the bug with a 25 rating may never get fixed.
关键是记住值越小,bug就越严重。最大的值是25(5 X 5),最小的是1(1 X 1)。级别是1的bug应该首先进行修复,而级别是25的bug则可能永远不都会得到修复。

        Looking at a list of these bugs ordered by rating means the most important ones will be at the top of the list to be dealt with first. Sorting bugs this way also lets management know whether the product is ready to ship or not. If the number of severe (1) bugs is zero, the product can ship. If there are any severe bugs, then bug fixing must continue.
去查看按级别从小到大排序的bug列表,意味着最重要的几个bug会排在最上面,必须首先得到修复。这样排列bug也可以让管理层知道产品是否已经可以发布了。如果严重的(级别为1)的bug的数量是0,那么该产品可以发布。如果仍然有一些严重的bug,那么bug的修复工作必须继续进行。



(未完待续)
品茗松月下,静以历人生。

TOP

Other useful information
Bug报告里要包含的其他有用的信息


         Who’s the bug Assigned to; who’s going to be responsible for the bug and do the work on the bug?
Bug应该指派给谁?谁将对此bug负责并处理此bug?

        What Platform was the bug found on – Windows, Linux, etc. Is the bug specific to one platform or does it occur on all platforms?
该bug是在哪个平台上发现的——Windows, Linux,等等。该bug只在一个平台上出现还是在所有的平台上出现?

        What Product was the bug found in? If your company is doing multiple products this is a good way to track those products.
该bug是在哪个产品中发现的?如果你的公司正在开发多个产品,这一条是跟踪这些产品的很好的方法。

        What Company would be concerned about this bug? If your company is working with multiple companies either as an OEM or as customer this is a good way to track that information.
哪个公司会关注这个bug?如果你的公司正与多个或作为OEM或作为客户的公司合作,这一条是跟踪该信息的好方法。

        Whatever else you want or need to keep track of. Some of these fields will also have value to marketing and sales. It’s a useful way to track information about companies and clients.
你想要或需要跟踪的其他什么信息。有些也有可能对市场营销人员有用。这是跟踪公司和客户有关信息的很好的方法。



(未完待续)
品茗松月下,静以历人生。

TOP

An example of a bug report:
Bug报告样例


Figure 1
图1
The status tells us the state of the bug. The severity tells us how bad the bug is. The likelihood tells us how often the average user will see the bug. The Assigned To field tells us who is responsible for resolving the bug. The Feature tells us what part of the product the bug is in. The Problem Description gives a brief (very brief) summation of the problem. This description is used when compiling reports or lists of bugs. The details tell us the current setup or situation, the steps to duplicate the problem and any other essential information that will allow someone else to duplicate the bug. Once the bug is submitted, this field cannot be changed. Any additional information will go in the notes field.  The notes field contains any discussions about the bug. For example, when and why the status was changed and by whom; additional information about how to duplicate the bug that will aid in resolving the bug; and opinions about the bug. This is a “free-forum” area where people should feel free to express their opinions without censure or criticism. Once comments are placed on a bug, they cannot be changed or deleted by anyone else or even the author. The comments, like the details, stand. Anyone reading the bug after the fact should be able to understand not only what the bug was and how bad a bug it was but also how it was resolved and why it was resolved that way.
其中的状态一栏说明了该bug所处的状态。严重度一栏告诉我们该bug的严重程度。出现频率一栏告诉我们普通用户见到此bug的频率。指派给一栏告诉我们谁将为解决这一bug而负责。功能一栏告诉我们此bug存在于产品的哪一部分。问题描述一栏给出了对问题的简明(非常简明)的概括。这个描述用于编排bug报告或bug列表。细节部分阐明了当前的配置或测试环境,重现这一问题的步骤以及任何其他的让别人能再现这一bug的必须信息。一旦提交了该bug,就不能修改这一部分了,任何附加的信息都会被放到附注部分。附注部分包括有关此bug的任何讨论情况。比如,此bug的状态什么时候可以修改,修改的理由是什么,由谁去修改;有关重现这一bug的方法的额外的信息,这些信息可以帮助解决此bug;以及关于此bug的评论。评注部分是一个“自由讨论”区,在这里大家可以自由地发表自己的看法而不必担心受到责骂和批评。一旦评注被放置到bug报告中,这些评注就不能被任何人甚至写这些话的人修改或删除。和细节部分一样,评注部分也一直维持不变。这样,任何一个读到此bug报告的人不仍可以知道此bug是什么,它有多严重,还可以知道此bug是怎么得以解决的,为什么要那样解决。

Examples of poorly written bugs:
糟糕的bug报告举例


        Please keep in mind that I didn’t make any of these up!
请各位注意,我可从没干过这些事!

        “My computer crashed.” We are sorry for your loss, can you give us more information?
“我的电脑瘫痪了。”对您的损失我们感到很抱歉,但是拜托您能给再说多些吗?
        “It’s kinda “sucky”.” This one violates all sorts of rules. What’s kind of “sucky”. For that matter, define “sucky.”. Better yet, don’t use the work “sucky” it’s not in the dictionary and most certainly not in good taste.
“它有点儿 “sucky”。”这句话简直违反了所有规则。什么叫“sucky”。为了说明问题,请先解释一下“sucky”。不过最好不要用“sucky”这个词。词典里没有这个词,而且很可能不是一个好词儿。

        “It don’t.” This bug doesn’t provide enough information. What don’t? Don’t what?
“它不干了。”这个bug报告没有告诉我们足够的信息。什么不干了?不干了什么?

        “Product needs a “speel” checker.” It goes without saying that “spelling counts”!
“这产品需要一个“speel”检查”。这个报告根本就不想说“拼写计数器”
品茗松月下,静以历人生。

TOP

Now we have a bug…
报告了bug以后…

        The first step is Verification. A bug verifier searches the database looking for all ‘Submitted’ bugs assigned to him. He then duplicates the bug by following the steps listed in the details section of the bug. If the bug is reproduced and has all the proper information, the assigned to field is changed to the appropriate person who will be fixing the bug. If the bug is not written clearly, is missing some steps or can’t be reproduced, it will be sent back to the bug reporter for additional work.
第一步是核对。Bug核对人员从数据库里搜出指派给他的所有标有“已提交”的bug。然后他会根据bug报告的细节部分列出的步骤来重现这个bug。如果能够重现并且可以得到所有正确的信息,报告里的指派给一栏就修改成将要修复这一bug的人的名字。而如果bug报告写得不清楚,或是遗漏了一些步骤,或是不能重现bug,报告就会退回给bug报告者去修改。

        The Assigned To field contains the name of the person responsible for that area of the product or code. It is important to note that from this point onward, the developer’s name stays on the bug. Why? There are usually more developers than there are testers. Developers have a set of features to work on. Developers look at bugs from a stand point of “what is assigned to me?”. Testers have multiple sets of features to test. Testers look at bugs from a stand point of “what needs to be tested?”; testers may also change what features they are assigned to test. Because of the different way testers and developers work, developers sort bugs by the Assigned To field and testers sort bugs by the Status field. Leaving the developer’s name on the bug also makes it easier to send the bug back to the developer for more work. The tester simply changes the status field to Verified and it automatically goes back to the developer.
指派给一栏包括了对该部分产品或代码负责的人员的名字。从这个角度来说,开发人员的名字写到bug报告中很重要。为什么呢?通常开发人员要比测试人员多。开发人员要开发的是软件的一个功能集。开发人员看bug报告的思路是“指派给我的是什么?”而测试人员有很多个软件功能集要测试。测试人员看bug报告的思路是“哪些功能需要测试?”测试人员分配的要测试的软件功能也可能发生变化。由于两类人工作的方式不一样,所以开发人员就按指派给一栏排列bug报告,而测试人员按bug的状态一栏排序。把开发人员的名字放到bug报告中,也更易于把bug发回到相应的开发人员去做更多的工作。测试人员只需简单地把状态一栏修改成“已验证”,报告就会自动地发回给开发人员。
品茗松月下,静以历人生。

TOP

The Developer works on the bug…
开发人员处理bug…


        The first thing the developer does is give the bug a ‘In Progress’ status indicating that he has seen the bug and is aware that it his responsibility to resolve. The developer works on the bug and based on his conclusions assigns a status to the bug indicating what the next step should be.
开发人员做的第一件事就是给该bug赋予“正在处理”状态,表明他已经注意到这个bug并且已经认识到应该由他负责处理。然后开发人员就着手处理这个bug,最后根据他的处理结果给此bug赋予一个新的状态来表明对此bug的下一步工作应该是什么。

        Remember, the developer does NOT change the Assigned To field. His name stays on the bug so if the bug has to go back to him, it will make back onto his list. This procedure ensures that bugs don’t fall between the cracks.
请记住,开发人员不能更改指派给一栏。他的名字会留在bug报告中,所以如果这个bug报告又发回给他,此bug又会回到他的bug列表中。这一过程就保证了bug不会没有人管。

        The following is a list of status’ that a developer can assign to a bug.
下面列出了开发人员可以赋予bug的状态:

Fixed
已修复


        The Fixed status indicates that a change was made to the code and will be available in the next build. Testers search the database on a daily basis looking for all Fixed status bugs. Then the bug reporter or tester assigned to the feature retests the bug duplicating the original circumstances. If the bug is fixed and it is now working properly, another test with slightly different circumstances is performed to confirm the fix. If the bug passes both tests, it gets a Tested status.
该状态表明已经对相应的代码做了修改,并且会在下一版本中加入此修改。测试人员每天都搜索数据库去,找到所有的拥有已修复状态的bug。然后bug报告者或与此功能相应的测试人员会在与以前相同的环境中重新测试此bug。如果该bug已经得到修复并且软件可以正常工作,那么测试环境会稍微改变一下,再测试一遍以确认修复成功。如果该bug通过了这两测试,就被赋予已测试状态。

        If the bug doesn’t pass the test, the bug is given a Verified status and sent back to the developer. Notice here that since the bug’s Assigned To field has retained the developer’s name, it’s an easy process for the tester to send the bug back by simply changing the status to Submitted.
而如果此bug未能通过测试,就被赋予已验证状态并发回给相应的开发人员。这里请注意,因为bug报告中的指派给一栏保留了开发人员的名字,所以测试人员把bug发回的过程是很容易的,只要把状态一栏改为已提交就行了。

Duplicate
重复报告


        The Duplicate status bug is the same as a previously reported bug. Sometimes only the developer or person looking at the code can tell that the bug is a duplicate. It’s not always obvious from the surface. A note indicating the previous bug number is placed on the duplicate bug. A note is also placed on the original bug indicating that a duplicate bug exists. When the original bug is fixed and tested, the duplicate bug will be tested also. If the bug really is a duplicate of previous bug then the when the previous bug is fixed, the duplicate bug will also be fixed. If this the case then both bugs get a Tested status.
“重复报告”状态表明此bug与以前报告过的某个bug相同。有时只有开发人员或走读代码的人会认出某个bug是重复报告的bug。表面上并不容易看出来。然后开发人员会在重复报告的bug的报告中放入一个附注,指明前一个bug的编号。同样,指明出现了一个重复报告的bug的附注也会放到最先的bug的报告中。当最先的那个bug被修复并且测试后,这个重复报告的bug也要一起被测试。如果该bug确实是前一个bug的重复报告,那么当前一个bug被修复了,这个重复报告的bug也就得到了修复。此时,这两个bug都会被赋予已测试状态。

        If the duplicate is still a bug, while the original bug is working properly, the duplicate bug is no longer has a duplicate status. It gets a Submitted status and is sent back to the developer. This is a “fail-safe” built into the bug life cycle. It’s a check and balance that prevents legitimate bugs from being swept under the carpet or falling between the cracks.
如果最开始的bug已经工作正常了而此重复报告的bug仍旧是一个bug,那到这个重复报告的bug就取消重复报告状态。此bug将得到一个“已提交”状态并发回给开发人员。这种做法是在bug生命周期中建立的一种安全防范措施。它检查并保证了一些合格的bug不会被扫地出门或无人理睬。

        A note of warning. Writing lots of duplicate bugs will get a tester a reputation for being an “airhead”. It pays to set time aside daily to read all the new bugs written the previous day.
重要警告。测试人员如果写太多的重复bug,他会声誉扫地,而成为众矢之的。所以应该每天花时间去看一下前一天写好的所有的新的bug。

Resolved
已解决

        Resolved means that the problem has been taken care of but no code has been changed. For example, bugs can be resolved by getting new device drivers or third party software. Resolved bugs are tested to make sure that the problem really has been resolved with the new situation. If the problem no longer occurs, the bug gets a Tested status. If the Resolved bug still occurs, it is sent back to the developer with a Submitted status.
该状态的意思是相关问题已经得到关注但尚未修改代码。例如,一些bug可以通过安装新的设备驱动程序或第三方软件得以解决。要测试带有“已解决”状态的bug,以确保相关问题确实在新的运行环境下得到了解决。如果此问题不再发生,该bug就被赋予“已测试”状态。如果带有“已解决”状态的bug仍然发生,将被赋予“已提交”状态并发回给开发人员。

Need More Information
尚需更多信息


        Need More Information or “NMI” indicates that the bug verifier or developer does not have enough information to duplicate or fix the bug; for example, the steps to duplicate the bug may be unclear or incomplete. The developer changes the status to ‘Need More Information’ and includes a question or comments to the reporter of the bug. This status is a flag to the bug reporter to supply the necessary information or a demonstration of the problem. After updating the bug information (in the Notes field), the status is put back to Verified so the developer can continue working on the bug. If the bug reporter can not duplicate the bug, it is given a Can’t Duplicate status along with a note indicating the circumstances.
尚需更多信息或“NMI”表明bug核对人员或开发人员缺乏足够的信息来重现或者修复该bug;比如重现该bug的步骤可能写得不清楚或不完成。开发人员将bug的状态更改为“尚需更多信息”并且给bug的报告者留下一个问题或一条评注。这一状态标志着bug的报告者要提供这个问题的必要的信息或是一个说明。在修复了bug的信息(在附注部分)后,bug的状态改回到“已核对”,这样开发人员可以继续处理这个bug。如果bug的报告者不能重现这个bug,其状态就被赋予“无法重现”,同时注上运行环境。

        The only person who can put “Can’t Duplicate” on a bug is the person who reported it (or the person testing it). The developer can NOT use this status, he must put Need More Information on it to give the bug reporter a chance to work on the bug.
可以将“无法重现”赋予一个bug的人只能是报告此bug的人(可测试该bug的人)。开发人员不能使用这个状态,他必须将“尚需更多信息”的状态赋予此bug,给bug的报告者机会来处理这个bug。

        This is another example of a “fail-safe” built into the database. It is vital at this stage that the bug be given a second chance. The developer should never give a bug a ‘Can’t Duplicate’ status. The bug reporter needs an opportunity to clarify or add information to the bug or to retire it.
这是缺陷跟踪数据库内建的又一个“安全防范”的例子。此时,非常重要的是所报告的bug获得第二次提交的机会。开发人员应该从不将“无法重现”状态赋予一个bug。而bug的报告者需要一次机会来澄清这个bug或向bug报告中添加一些信息或撤销这个报告。
品茗松月下,静以历人生。

TOP

Working as Designed
符合设计

        The developer has examined the bug, the product requirements and the design documents and determined that the bug is not a bug, it is Working as Designed. What the product or code is doing is intentional as per the design. Or as someone more aptly pointed out it’s “working as coded”! It’s doing exactly what the code said to do.
开发者在检查过所报告的bug,产品需求说明书以及设计文档后认为该bug不是bug,而是“符合设计”。该产品或代码所执行的功能是与每一步设计相一致的。或者就像有个人更合适地指出来的那样,此bug“符合代码要求”!所报告的问题完全照着代码去执行的。

        This bug can go several directions after being assigned this status. If the tester agrees with the status, then the status stands and the bug is finished. The bug may be sent to documentation for inclusion in help files and the manual. If the tester disagrees with the status then the bug can be appealed by putting a Submitted status on it to send the bug back through the process again. The tester should include in the notes a reason why, although it is Working as Designed, it should be changed now. The bug may also be sent back to the design committee so that the design can be improved.
在被赋予这个状态后,这个bug可能在各方之间传来传去。如果测试人员同意开发人员赋予的这个状态,那么bug的这个状态会被保留,同时bug被撤销。此bug可能被发送到帮助文件或用户手册所包含的文档中去。但如果测试人员不同意这个状态,那么该bug可以通过赋予“已提交”状态来获得关注,并又一次发回给开发人员。测试人员应该加一个附注,说明为什么尽管被赋予“符合设计”,现在仍应修改。该bug也可能被发回到项目的设计委员会以便对设计进行改进。

        This is a dangerous status. It’s an easy way to sweep bugs under the carpet by giving them this status. It’s up to the bug reporter to make sure the bug doesn’t get forgotten in this manner. Product managers may also review lists of bugs recently assigned Working as Designed.
这是一个很危险的状态。通过对bug赋予这个状态会很容易就把它们抛弃到角落里。Bug的报告着应该确保所报告的bug不要以这种方式被抛弃。项目经理或许也应该经常检查那些被赋予“符合设计”状态的bug。

Enhancement
增进

        Enhancement means that while the suggested change is great idea because of technical reasons, time constraints or other factors, it won’t be incorporated into the code until the next version of the product.
“增进”状态意味着尽管由于技术时间或其他因素,所建议的修改是个好主意,但在此修改要到下一个版本才能加入代码。

This status may also be appealed by changing the status to Submitted and adding a note specifying why it should be fixed now.
获得此状态的bug也可以通过把状态改为“已提交”而重新得到关注,报告者要同时加一个附注说明为什么此bug必须现在修改。

Defer
“推迟”


        Defer is almost the same status as Enhancement. This status implies that the cost of fixing the bug is too great given the benefits that it would produce. If the fix is a one liner to one file that doesn’t influence other files, it might be ok to fix the bug. On the other hand, if the fix will force the rebuild of many files which would force the re-testing of the product and there’s no time left to test the fix before shipping the product, then the fix would be unacceptable and the bug would get a Defer status. To appeal the status, send it back through the process again by putting a Submitted status on it and add a note saying why it should be fixed now.
“推迟”与“增进”几乎一样。它的意思是与修复此bug带来的好外相比,修复过程所需的花费太大了。如果需做的修复只是一个文件中的一行代码,并且不影响其他的文件,那么修复这个bug是可以的。但如果修复过程需要重新编写其他的许多文件,从而可能会导致重新测试整个产品,而且发布日近,没有时间去测试此修复,那么此修复就无法让人接受,因此该bug就得到一个“推迟”状态。要反对这个状态,可以把状态改成“已提交”把bug发回到处理流程并且在附注里写明为什么这个bug应该现在予以修复。



(未完待续)
品茗松月下,静以历人生。

TOP

Not to be Fixed
不予修复


        You may see the Not to be Fixed status although I don’t recommend making this status available for use. There may be extenuating circumstances where a bug will not be fixed because of technology, time constraints, a risk of destabilizing the code or other factors. A better status to use is Not to be Fixed. To appeal the status, send it back through the process again by putting a Submitted status on it and add a note saying why it should be fixed now.
尽管我不推荐使用,但你仍可能看到了“不予修复”的状态。可能在一些情况下,由于技术,时间,使代码不稳定或其他一些原因,某个bug不会得到修复。在这种情况下,赋予该bug的状态更好的选择就是“不予修复”。要反对这个状态,可以把状态改成“已提交”把bug发回到处理流程并且在附注里写明为什么这个bug应该现在予以修复。

        This is similar to the Working as Designed status in that its use can be dangerous. Be on the watch for this one. Sometimes developers call this status “You can’t make me”.
这一状态同“符合设计”状态相似,使用它会是很危险的。一定要时刻注意这一状态。有时开发人员戏称此状态为“你不能碰我”。

Tested
已测试


       The Tested status is used only by testers on Fixed, Resolved and Duplicate bugs. This status is a “end of the road” status indicating that the bug has reached the end of its life cycle.

这个状态只能被测试人员用于已赋“已修复”,“已解决”和“重复报告”状态的bug。这个状态是“路的终点”,表示此bug已经到了生命周期的终点。

Pending
挂起


        The Pending status is used only by testers on Fixed bugs when a bug cannot be immediately tested. The tester may be waiting on hardware, device drivers, a build or additional information necessary to test the bug. When the necessary items have been obtained, the bug status is changed back to Fixed and then it is tested. Make sure the testing part isn’t skipped.
此状态只能被测试人员用于赋予“已修复”的bug,说明该bug不能立即测试。测试人员可能需要等待硬件,设备驱动,一个新的版本或必需的其他的信息满足条件才测试这个bug。当所需条件得到满足,bug的状态会改回到“已修复”,然后进行测试。这个状态用来确定测试环节不会被跳过。

Can’t Duplicate
无法重现


        This status is used only by the bug reporter; developers or managers cannot use this status. If a bug isn’t reproducible by the assigned developer or bug verifier the bug reporter needs a chance to clarify or add to the bug. There may be a hardware setup or situation or particular way of producing a bug that is peculiar to only this computer or bug reporter and he needs a chance to explain what the circumstances are. Limiting this status to bug reporters only prevents bugs from slipping between the cracks and not getting fixed.
此状态只能被bug的报告者使用。开发人员或管理人员不能使用这个状态。如果被指派的开发人员或bug核对人员不能重现某个bug,该bug的报告者需要机会对把bug报告写清楚或是在报告中加入另外的信息。有可能是bug报告才的电脑产生这个bug时的硬件配置或运行环境或产生的方法很特殊,报告者需要把运行环境解释清楚。把这一状态只限制给bug报告者使用只是为了防止bug被遗漏而得不到修复。
品茗松月下,静以历人生。

TOP

The product has shipped, what happens next?
产品既已发布,接下来会发生什么?


        First of all, to ship a product the number of bugs rated 5 or less, bugs with a Fixed, Resolved, Pending or Need More Information status must be zero. We’ll assume that the product has shipped and all these bugs have been taken care of. This means the bugfile is full of bugs that have reached the end of their life cycle. Proper database maintenance takes place at this point. Archiving or hiding all these bugs will make the database easier to use and read.
首先,要发布一个产品,级别数小于等于5,以及标以“已修复”,“已解决”,“挂起”,或“尚需更多信息”状态的bug的数量必须是0。我们假定产品已经发布出去,并且所以上述bug均已得到妥善处理。这就意味着“bug文件”里充满了已经走到生命尽头的bug。适当的数据库维护从这时开始了。将这些bug存档或隐藏会使数据库更便于使用和读取。
        All bugs with a Tested or Can’t Duplicate bugs are archived. This means that the records are either removed and placed in an archive database or flagged to be hidden from the current view of the database. Never delete any bug records; it may be necessary to do some historical research in the bugfile (‘What did we ship when?’ or ‘Why did we ship with this bug?’).
所有标以“已测试”或“不能重现”状态的bug应被存档。这意味着这些记录或者要被转移到存档数据库,或者把做上标记从数库到当前视图隐藏起来。千万不要删除任何bug记录;在bugfile里做一些历史研究可能是必要的。(“那时我们发布了什么产品”,或“我们为什么要发布带这个bug的产品?”)

        Enhancement and Defer bugs are either moved to the new bugfile or retained in the current bugfile. The status of these bugs is then changed back to Verified.
标有“增进”和“推迟”状态的bug可以转移到新的bugfile中,也可以保留到现在的bugfile中。这些bug的状态要改回到“已核对”。

Advanced defect database techniques
高级的缺陷数据库技术


        There are things you can do with your database to make it more than just a to-do list for developers and testers. The bugfile is basically raw data, sorting and filtering it makes the data  information that is useful in the decision making process done by management.  A couple of these things to do with the data is to create Reports and Customized views.
你可以让你的数据库做更多的事,而不只是成为开发人员和测试人员的工作记录表。基本上Bugfile里都是原始数据,可以对这些数据进行排序和过滤,从而获得新的信息,这有助于管理层对一些事情做出决定。使用数据所能做的其中两件事就是创建报表和自定义视图。
品茗松月下,静以历人生。

TOP