当前位置:文档之家› 所有类型测试的缺陷等级定义

所有类型测试的缺陷等级定义

所有类型测试的缺陷等级定义
所有类型测试的缺陷等级定义

文档名缺陷等级定义说明文档撰写人方杰

缺陷等级定义

目录

缺陷等级定义 (1)

B/S架构(Web)测试的缺陷等级定义: (1)

C/S架构(Client)测试的缺陷等级定义: (3)

服务器及接口测试的缺陷等级定义: (4)

B/S架构(Web)测试的缺陷等级定义:

A: 致命

1.正常的用户操作导致浏览器崩溃或无响应

2.产品核心功能没有实现或无法使用:例如博客不能发博文、播放器无法播放视频、邮箱

无法登录、不能收发邮件

3.程序实现与需求严重不符:例如一个程序改版只为了按需求增加统计功能,但程序没有

统计功能或有统计输出但并非是要统计的数据

4.其他导致无法测试的错误:例如没有新功能入口

5.严重的数值计算错误:例如算法设计错误,导致计算结果错误

6.存在致命的安全漏洞:例如密码不匹配也可登录、密码暴露在URL串中、复制最高权限

登录后的页面链接在其他进程浏览器中,无需再次验证即可拥有最高权限

7.Bug被重开次数>=3次,如果原来bug定级为A,则无需改变缺陷级别

8.上线前最后一个版本配置管理出现问题

B: 严重

1.正常的用户操作导致浏览器出现偶发类崩溃(偶发概率20%以上)

2.主业务流程对应的功能没有实现或实现不正确,阻碍测试继续进行

3.程序上主要功能实现与需求不符

4.其他导致部分模块无法测试的错误

5.主要数值计算错误:例如需要统计5类数据,但只有3类数据被统计

6.XSS漏洞等安全性问题

7.1

8.上线前进入最后一轮测试时版本配置管理出现问题

文档名缺陷等级定义说明文档撰写人方杰

9.主要页面404、502或其他问题

10.严重的功能逻辑错误

11.严重的操作权限错误,对用户数据造成严重影响,如博客的访客可以做删除博文操作等

12.严重的兼容性问题和页面样式问题,如:页面样式严重错乱,导致页面控件无法正常定

13.页面下载明显缓慢或接口调用明显缓慢并可能导致功能无法使用等性能问题

C: 较严重

1.正常的用户操作导致浏览器出现偶发类崩溃(偶发概率10%以下)

2.用户非常规操作导致浏览器崩溃或影响系统性能的问题

3.次业务流程对应的功能没有实现或实现错误,但不影响测试继续进行:例如不能修改昵

称等非主要问题

4.程序上主要功能的分支或非主要功能与需求不符

5.轻微的数值计算错误:对于取整类、四舍五入类的计算,异常操作的输出未被计算在内

6.Bug被重开次数=1次,如果原来bug定级为A或B,则无需改变缺陷级别

7.上线前进入测试时,提交测试的过程版本配置管理出现问题

8.初始化错误:如统计中的初始值

9.输入域执行SQL、JS等代码的问题

10.系统中用户权限实现有误

11.兼容性导致的主要功能问题

12.CSS错乱等严重的样式问题

13.页面出现JS错误且导致某功能不可用

D: 一般性问题主要为:界面类、容错类缺陷

1.次要功能的分支与需求不符

2.操作界面UI类错误:例如显示折行、溢出等样式问题

3.边界条件下错误、输入域的边界问题

4.输入域对特殊字符处理的相关问题

5.提示信息错误(包括未给出信息、信息提示错误等)

6.界面中操作焦点错误(如按Tab键未顺序操作,弹出其他窗口后主界面焦点位置错误等)

7.输入域的相关问题,如:输入框长度判断错误

8.非主流浏览器出现的一些可替代的功能异常

E:易用性和建议类缺陷

1.界面格式等不规范

2.一些边角的样式问题

3.需求未定义的一些页面展现,如Title显示不正确等

文档名缺陷等级定义说明文档撰写人方杰

4.文案问题,例如ALT值等

5.辅助说明描述不清楚

6.操作时提示信息不完善

7.可输入区域和只读区域没有明显的区分标志

8.个别不影响产品理解的错别字

9.文字排列不整齐等一些小问题

10.建议类型的缺陷:如用户使用习惯等易用性问题、对流程规则和逻辑需求建议问题、对

页面布局和显示方式等UI问题的建议

C/S架构(Client)测试的缺陷等级定义:

A: 致命

1.程序无法运行/模块无法启动/异常退出

2.程序导致操作系统崩溃/死机/蓝屏

3.程序实现与需求严重不符

4.程序实现与技术文档严重不符

5.程序实现与开发规范严重不符

6.导致产品无法继续进行测试的缺陷

7.程序占用资源高(比同类产品高出50%以上)

8.内存、GDI等泄漏

9.Bug被重开次数>=3次,如果原来bug定级为A,则无需改变缺陷级别

10.上线前最后一个版本配置管理出现问题

B: 严重

1.程序可基本运行但主要功能模块运行异常

2.程序出现偶发类崩溃(偶发概率20%以上)

3.程序上主要功能实现与需求不符

4.程序实现与技术文档中定义有差别,造成功能实现不全面

5.程序实现与开发规范不符,导致相关功能实现错误

6.导致部分模块无法继续测试的错误

7.程序占用资源偏高(比同类产品高出20%~50%之间)

8.性能不达标

9.1

10.上线前进入最后一轮测试时版本配置管理出现问题

C: 较严重

1.程序出现偶发类崩溃(偶发概率10%以下)

文档名缺陷等级定义说明文档撰写人方杰

2.程序上主要功能的分支或非主要功能与需求不符

3.功能实现错误但不影响主要流程

4.实现了多余功能

5.程序占用资源略高(比同类产品高出的百分比不超过20%)

6.界面刷新类错误

7.参数未进行输入限制导致严重错误

8.性能需要优化

9.Bug被重开次数=1次,如果原来bug定级为A或B,则无需改变缺陷级别

10.上线前进入测试时,提交测试的过程版本配置管理出现问题

D: 一般性问题主要为:界面类、容错类缺陷

1.操作界面UI存在常规错误

2.边界值限制错误

3.提示信息错误(包括未给出信息、信息提示错误等)

4.界面中操作焦点错误(如按Tab键未顺序操作,弹出其他窗口后主界面焦点位置错误等)

5.窗口模态/非模态属性错误

E:易用性和建议类缺陷

1.界面格式等不规范

2.界面UI存在微小瑕疵,诸如按钮多边角、多像素等

3.辅助说明描述不清楚

4.操作时提示信息不完善

5.文字说明中存在的错别字、错误标点符号

6.控件、文字排列不整齐等一些小问题

7.建议类型的缺陷

服务器及接口测试的缺陷等级定义:

A: 致命

1.程序无法运行/模块无法启动/异常退出

2.程序出现可重现类崩溃/死机/冻结

3.程序实现与需求严重不符

4.程序实现与技术文档严重不符(服务器架构等)

5.程序实现与开发规范严重不符(如日志输出)

6.其他导致无法测试的错误

7.严重的数值计算错误:例如主从服务器存活的计算

8.丢包率超过40%

文档名缺陷等级定义说明文档撰写人方杰

9.程序占用资源高(比同类产品高出50%以上)

10.内存泄漏

11.Bug被重开次数>=3次,如果原来bug定级为A,则无需改变缺陷级别

12.上线前最后一个版本配置管理出现问题

13.性能很差无法提供正常服务

B: 严重

1.程序可基本运行但主要功能模块运行异常

2.程序出现偶发类崩溃(偶发概率20%以上)

3.程序上主要功能实现与需求不符

4.程序实现与技术文档中定义有差别,造成功能实现不全面

5.程序实现与开发规范不符,导致相关功能实现错误(如有日志输出但日志格式非标准化)

6.其他导致部门模块无法测试的错误

7.主要数值计算错误:例如客户端与服务器间汇报的存活状态数值计算不正确,导致服务

器误判断客户端已异常退出

8.丢包率在10%~40%之间

9.程序占用资源偏高(比同类产品高出20%~50%之间)

10.1

11.上线前进入最后一轮测试时版本配置管理出现问题

12.不同类型窗口调用出现逻辑错误

13.性能不达标

C: 较严重

1.程序出现偶发类崩溃(偶发概率10%以下)

2.程序上主要功能的分支或非主要功能与需求不符

3.功能实现错误

4.轻微的数值计算错误:例如服务器在线人数对于客户端的频繁退出未及时统计,有延迟

5.丢包率在10%以下

6.程序占用资源略高(比同类产品高出的百分比不超过20%)

7.Bug被重开次数=1次,如果原来bug定级为A或B,则无需改变缺陷级别

8.上线前进入测试时,提交测试的过程版本配置管理出现问题

9.刷新类错误

10.有影响的参数未进行输入限制

11.性能不优化

D: 一般性问题主要为:界面类、容错类缺陷

1.接口参数检查已实现,但不全面

文档名缺陷等级定义说明文档撰写人方杰

2.操作界面UI类错误

3.边界条件下错误

4.提示信息错误(包括未给出信息、信息提示错误等)

5.界面中操作焦点错误(如按Tab键未顺序操作,弹出其他窗口后主界面焦点位置错误等)E:易用性和建议类缺陷

1.界面格式等不规范

2.辅助说明描述不清楚

3.操作时未给用户提示

4.可输入区域和只读区域没有明显的区分标志

5.个别不影响产品理解的错别字

6.文字排列不整齐等一些小问题

7.建议类型的缺陷

缺陷等级划分

缺陷严重级别定义: o 最高级--导致运行中断(应用程序崩溃),预期的功能没有得到实现,测试工作无法继续进行等. o 紧急---事件非常重要,并且需要马上给予关注. o 高级---事件是重要的,并且应该在紧急的事件处理之后尽快得到解决. o 中级---事件是重要的,但是由于解决问题需要花费一定的时间,所以可以用较长的时间解决. o 低级---事件不重要,可以在时间和资源允许的情况下再解决. o 建议性缺陷. 更为详细的划分如下: A类——严重错误,包括: o 由于程序所引起的死机,非法退出 o 死循环 o 导致数据库发生死锁 o 数据通讯错误 o 严重的数值计算错误 B类——较严重错误,包括: o 功能不符 o 数据流错误 o 程序接口错误 o 轻微的数值计算错误 C类——一般性错误,包括: o 界面错误(详细文档) o 打印内容、格式错误 o 简单的输入限制未放在前台进行控制 o 删除操作未给出提示 D类——较小错误,包括: o 辅助说明描述不清楚 o 显示格式不规范 o 长时间操作未给用户进度提示 o 提示窗口文字未采用行业术语 o 可输入区域和只读区域没有明显的区分标志 o 系统处理未优化 E类——测试建议(非缺陷)

软件公司对软件缺陷级别的定义不尽相同,一般可以分为4种: 1. 致命(fatal):致命的错误,造成系统或应用程序崩溃(crash)、死机、系统悬挂、或造成数据丢 失、主要功能组完全丧失 2. 严重(critical):严重错误,指功能或者特性(feature)没有实现,主要功能丧失,导致严重的问 题,或致命的错误声明 3. 一般的(major):不太严重的错误,这样的缺陷虽然不影响系统的基本使用,但没有很好的实现 功能,没有达到预期的效果。如次要功能丧失,提示信息不太正确,或用户界面太差,操作时间长等 4. 微小的(minor):一些小问题,对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、 文字排列不整齐等 Bug严重程度定义: 致命(Critical)BUG : 测试执行直接导致系统死机、蓝屏、挂起或是程序非法退出;系统的主要功能或需求没有实现。 严重(Serious) BUG: 系统的次要功能点或需求点没有实现;数据丢失或损坏。执行软件主要功能的测试用例导致系统出错,程序无法正常继续执行;程序执行过于缓慢或是占用过大的系统资源。 一般(Minor) BUG: 软件的实际执行过程与需求有较大的差异;系统运行过程中偶尔(<10%)有出错提示或导致系统运行不正常。 微小(Information) BUG: 软件的实际执行过程与需求有较小的差异;程序的提示信息描述容易使用户产生混淆。

浅谈验收测试驱动开发

浅谈验收测试驱动开发 【摘要】软件行业已经发展了很多年,尽管新技术不断涌现,但是软件质量问题依然存在,最突出的两点就是较高的缺陷率和较差的可维护性。为了应对此类问题,驱动测试开发技术(ADD)应运而生,但是随着ADD技术的普及,它所隐藏的问题也浮出水面,最为人诟病的就是“不能满足客户需求”,因为测试人员只注重代码缺陷率而忽视了系统具体功能。本文阐述如何在ADD开发模式的基础上,结合验收测试驱动开发(ATDD)探讨如何开发适应于用户的系统。 【关键词】敏捷开发;验收测试驱动开发;软件工程 一、引言 极限编程方法理论中“测试驱动开发”是其一个重要组成部分,最早是由Kent Beck提出,并积极推广的一种软件开发方法。Kent Beck在他所著的《测试驱动开发》一书中指出“测试驱动开发”遵循“为明天编码,为今天设计”的观点。相比传统遵循“需求-设计-开发-测试”的软件开发流程而言,更强调测试优先,再通过编码和重构反复迭代最终构筑一个完整的软件系统。“测试驱动开发”在相当程度上了的确提高了开发人员的代码质量,而且在应对系统的可靠性也教之传统软件开发有着更大的优势,主要体现在客户需求变更时能灵活应对。然而软件问题中另一项“是否满足客户需求”确没有很好地解决。验收测试驱动开发(ATDD)针对这个问题,提出让客户参与到测试标准的制定,让软件满足客户需求。用ATDD 方法开发软件,开发人员更注重的是系统行为测试,而不是软件中每个模块,甚至每行代码的测试。构筑一个满足客户需求的软件系统,不仅仅是软件设计开发人员和测试人员靠个人能力能解决的,在此过程中需要客户参与进来,为打造可靠的软件提供有力的保障。 二、什么是ATDD 测试驱动开发(ADD)能够帮助开发人员开发出高质量的代码,保证开发人员所开发出的代码执行正确,但是这些执行正确的代码在很大程度上是针对的具体模块而不是整体的系统功能。在一定程度上不一定能够满足客户的需求。验收测试驱动开发(ATDD)是建立在TDD的基础上,TDD和ATDD既可以分开使用也可以配合使用,在帮助开发人员在提高软件质量的同时,也帮助开发人员开发出用户真正需要的软件系统。软件测试是软件工程的重要组成部分,在传统的软件开发当中,软件测试大概包括软件执行过程中是否存在BUG、系统中是否还存在其它缺陷以及系统是否与系统设计书保持一致几项内容,ATDD则在此基础上赋予了软件软件测试新的任务,即利用验收测试从系统功能的角度上驱动软件开发,解决软件不能满足客户需求或者是与客户设想相背离的问题。 总体而言验收测试驱动开发是包括客户在内的一个团体组织的活动,围绕着客户需求引入“用户故事”(user story)这种灵活的客户需求管理方式。客户和技术人员(包括设计、开发和测试)通过紧密的写作、有效的交流和沟通构筑可靠

软件测试质量分析报告

软件测试质量分析报告1编写目的 为了发现程序的错误和缺陷,通过测试,检查该程序是否达到了预期的结果,发现其中的缺陷,确保程序可以正确执行。质量控制是为了保证每一件工作产品都满足对它的需求而应用于整个开发周期中的一系列审查、评审和测试,质量控制在创建工作产品的过程中包含一个反馈循环,通过对质量的反馈,使得我们能够在得到的工作产品不能满足其规约时调整开发过程。所有工作产品都应该具有定义好的和可度量的规约,这样就可以将每个过程的产品与这一规约进行比较。质量保证由管理层的审计和报告构成,目标是为管理层提供获知产品质量信息所需的数据,从而获得产品质量是否符合预定目标的认识和信心。 2 测试项目及说明 测试对象为一段计算基本运算加减乘除的代码,通过单元测试、集成测试、系统测试等方法来检测该程序的缺陷。软件质量保证是为了保证软件系统或软件产品满足用户要求的质量而进行的有计划、有组织的活动,其目的是生产高质量的软件。在软件质量方面必须强调三个要点:?软件必须满足用户规定的要求,与用户需求不一致的软件,就无质量可言。软件应遵循软件标准所定义的一系列开发标准,不遵循这些标准的软件,其质量难以得到保证。软件还应满足某些隐含的要求,例如希望有良好的可理解性、可维护性等,而这些隐含的要求可能未被写在用户规定的需求中,满足它的显性需求而不满足其

隐含需求,那么该软件的质量是令人怀疑的。 4:测试工具及方法 (1)单元测试 测试工具:Eclipse Eclipse简介: Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。 虽然大多数用户很乐于将Eclipse 当作Java 集成开发环境(IDE)来使用,但Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展Eclipse 的软件开发人员,因为它允许他们构建与Eclipse 环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于给Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于Java 开发工具。尽管Eclipse 是使用Java 语言开发的,但它的用途并不限于Java 语言;例如,支持诸如C/C++ 和COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。 测试方法:白盒测试

软件测试缺陷报告

测软件名称XX测试缺陷报告书

目录 1引言 (3) 1.1编写目的 (3) 1.2背景 (3) 1.3定义 (3) 1.4参考资料 (3) 2测试环境 (4) 2.1硬件环境 (4) 2.2软件环境 (4) 3冒烟测试 (4) 3.1被测软件 (4) 3.2测试策略 (4) 3.3执行步骤 (4) 3.4测试用例执行情况 (4) 3.4.1 管理员 (4) 3.4.2 匿名用户...................................... 错误!未定义书签。 3.4.3 教师用户...................................... 错误!未定义书签。 3.4.4 学生用户(待补充)............................ 错误!未定义书签。 3.4.5 交叉功能测试.................................. 错误!未定义书签。 3.5结果分析和结论 (9) 4功能测试................................................... 错误!未定义书签。 4.1被测软件............................................. 错误!未定义书签。 4.2测试策略............................................. 错误!未定义书签。 4.3执行步骤............................................. 错误!未定义书签。 4.4测试用例执行情况(自行补充)......................... 错误!未定义书签。 4.4.1 管理员........................................ 错误!未定义书签。 4.4.2 匿名用户...................................... 错误!未定义书签。 4.4.3 教师用户...................................... 错误!未定义书签。 4.4.4 学生用户...................................... 错误!未定义书签。 4.4.5 交叉功能测试.................................. 错误!未定义书签。 4.5结果分析和结论....................................... 错误!未定义书签。

缺陷级别定义和优先级定义

附件一:缺陷级别定义和优先级定义1、缺陷级别定义

2、缺陷优先级定义

注:当缺陷被Reopen时,建议通过有效途径通知相关人员,特别是严重级别为high和view high。 3、缺陷报告规范 ?在项目执行阶段,发现的所有问题都需要提交缺陷管理库-CQ中相应的Project库中,主要包括软件需求、开发程序缺陷、各种需要审核的文档等方 面的内容; ?缺陷报告的填写,需要将问题的重现步骤写清晰,建议安1、2、3...形式提交,且缺陷的相关外部测试条件需要说明详细,缺陷标题要简明、扼要,不要用过 于笼统和模糊的语言加以描述,根据需要适当的将出现的场景、日志等信息以 附件形式提交; ?对于缺陷的回归,应在CQ中的Comments中注明回归的版本号,并依据问题的严重级别对回归的结果做相应的描述。 ●具体的缺陷提交流程如下(针对测试人员)

在缺陷的管理中,对于新增的Rejected和Suspend的缺陷,需要定期时常整理确认,对于未经项目经理、开发组长、测试组长和产品经理确认的缺陷,开发人员无权Rejected/Suspend,同时对于达成共识的Rejected缺陷一定要将意见写入CQ 库中的comments,对于Suspend状态的缺陷,建议要注明由于什么原因被刮起,在什么时间和条件下在处理等信息。 在测试任务完成以后,缺陷库中的缺陷状态应只以三种状态存在:Closed、经过确认并达成共识的Rejected/Suspend。 4、缺陷跟踪 测试人员对其发现的缺陷有义务和责任进行全程的跟踪。从缺陷的提交一直到缺陷的关闭,在这一整套的过程中,测试人员应该一丝不苟的进行把关,不要让错 误轻易的从手边遛走。要定期的向开发组通报缺陷状态,同时及时的更新缺陷库中 缺陷的状态。在一定的条件和时间内,还要对以关闭的缺陷做回归测试。制定有效 而可行的回归测试时间表,尽可能的减少由回归测试间隙产生的测试逃逸。5、缺陷分析 对于缺陷数据库,测试人员应该经常维护更新,并对缺陷的状态,数量,分布

软件测试Bug之“缺陷分析“篇

软件测试Bug之“缺陷分析“篇 提到Bug,软件缺陷,除了记录一个问题出现的现象和原因以外,对于一个或者多个Bug的分析也非常重要,本文讲述了Bug分析的目的,介绍了IBM的ODC缺陷分析法,已提供给需要进行缺陷分析的测试小伙伴们参考。 Bug记录平台介绍 Bug记录平台,用比较文绉绉的话说是软件缺陷跟踪系统(DefectTrackingSystem,DTS)是软件测试管理系统的核心部分。这里拿华为的缺陷管理系统来举例,网易以及其他互联网公司大部分会使用比较轻量级的开源平台比如Jira平台等。共同之处是对软件缺陷处理过程有一些最基本的要求,大概包括以下几个方面: 1)整个处理过程应该是闭合的,即确保每一个被发现的问题在过程中都能得到解决,在整个过程中追踪缺陷的状态,问题记录在整个周期内都得到维护简单来说可以理解为Bug的状态流转,例如创建、进行中、已解决、关闭等2)每一个被发现的软件缺陷都应该按类别和优先级进行分类 3)对软件缺陷的改正应该进行验证,以确保问题确实被解决、不利的影响已经被消除,并且解决该问题所引起的变化不会带来新的问题 软件项目团队的全体成员就以软件缺陷跟踪系统(DTS)为工作的参照物,形成良好的工作流程和运行机制,构建如下所示的软件测试管理体系:1)测试人员向缺陷跟踪系统报告新bug,在新版本上执行回归测试验证bug 是否正确修改

2)开发人员每天浏览属于自己需要修改的bug,修正bug后及时更新bug 的状态 3)项目经理及部门经理根据缺陷跟踪系统的bug分布信息,跟踪和控制软件开发过程 4)技术支持人员根据缺陷跟踪系统的bug状况,估计软件的发布期限 BUG生命周期全流程: 测试人员提交BUG->开发人员处理->测试回归->关闭 问题单提交必填属性有:Bug主题、描述、重要性、测试类型、是否线上bug、影响的版本、经办人、回归人等 Bug分析目的 一、对测试执行过程进行度量和评估,给出版本质量评估及开发测试改进建议。 1)通过分析特定模块的缺陷发展趋势来给出模块的质量情况。包括缺陷数量增长趋势和关闭缺陷数量的增长趋势。原则上同一个模块的缺陷数量增长趋势是下降的,即缺陷收敛 2)通过分析缺陷所在的模块分布、缺陷引入的阶段点对开发活动及后续的测试活动加以调整和改进,例如模块缺陷多、且大多数是因为设计原因导致的需要考虑该模块是否需要重构,并且测试活动需要加大投入,缺陷少的模块需要综合评估测试覆盖情况,如果覆盖度高说明质量较好,如果覆盖度低需要加大测试投入力度 二、漏测分析及改进措施

测试缺陷等级定义

缺陷等级定义 目录 缺陷等级定义 (1) B/S架构(Web)测试的缺陷等级定义: (1) C/S架构(Client)测试的缺陷等级定义: (2) 服务器及接口测试的缺陷等级定义: (4) B/S架构(Web)测试的缺陷等级定义: A: 致命 1.正常的用户操作导致浏览器崩溃或无响应 2.产品核心功能没有实现或无法使用 3.程序实现与需求严重不符 4.其他导致无法测试的错误 5.严重的数值计算错误 6.存在致命的安全漏洞 7.Bug被重开3次以上含3次 8.上线前最后一个版本配置管理出现问题 B: 严重 1.产品功能实现不正确 2.主业务流程对应的功能未实现,阻碍测试继续进行 3.严重的兼容性问题和页面样式问题,如:页面样式严重错乱,导致页面控件无法正常定 位; 4.正常的用户操作导致浏览器出现偶发类崩溃(偶发概率20%以上) 5.程序实现与需求功能上不符 6.其他导致部分模块无法测试的错误 7.主要数值计算错误 8.严重的功能逻辑错误 9.Bug被重开2次 10.上线前进入最后一轮测试时版本配置管理出现问题 C: 较严重 1.正常的用户操作导致浏览器出现偶发类崩溃(偶发概率10%以下) 2.用户非常规操作导致浏览器崩溃或影响系统性能的问题

3.程序上非主要功能与需求上功能描述不符 4.功能实现错误但不影响主要流程 5.轻微的数值计算错误 6.页面出现JS错误且导致某功能不可用 7.兼容性导致的主要功能问题 8.系统中用户权限实现有误 9.初始化错误 10.Bug被重开1次 11.上线前进入测试时,提交测试的过程版本配置管理出现问题 12.操作界面UI类的严重错误,易造成大量投诉,产生较坏影响力 D: 一般性问题主要为:界面类、容错类缺陷 1.操作界面UI类的一般性错误 2.边界条件下错误 3.提示信息错误(包括未给出信息、信息提示错误等) 4.界面中操作焦点错误(如按Tab键未顺序操作,弹出其他窗口后主界面焦点位置错误等) 5.输入域的相关问题,如:输入框长度判断错误; E:易用性和建议类缺陷 1.界面格式等不规范 2.辅助说明描述不清楚 3.操作时未给用户提示 4.可输入区域和只读区域没有明显的区分标志 5.个别不影响产品理解的错别字 6.文字排列不整齐等一些小问题 7.建议类型的缺陷 C/S架构(Client)测试的缺陷等级定义: A: 致命 1.程序无法运行/模块无法启动/异常退出 2.程序导致操作系统崩溃/死机/蓝屏 3.程序实现与需求严重不符 4.程序实现与技术文档严重不符 5.程序实现与开发规范严重不符 6.导致产品无法继续进行测试的缺陷 7.程序占用资源高(比同类产品高出50%以上) 8.内存、GDI等泄漏 9.Bug被重开3次以上含3次 10.上线前最后一个版本配置管理出现问题

软件测试质量分析分析报告

软件测试质量分析报告 1编写目的 为了发现程序的错误和缺陷,通过测试,检查该程序是否达到了预期的结果, 2 这些标准的软件,其质量难以得到保证。软件还应满足某些隐含的要求,例如希望有良好的可理解性、可维护性等,而这些隐含的要求可能未被写在用户规定的需求中,满足它的显性需求而不满足其隐含需求,那么该软件的质量是令人怀疑的。4:测试工具及方法 (1)单元测试 测试工具:Eclipse

Eclipse简介: Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。 虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但 ( Eclipse 于 (structuraltesting)等,软件测试的主要方法之一,也称结构测试、逻辑驱动测试或基于程序本身的测试。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。优点和缺点 1.优点

·昂贵 ·迫使测试人员去仔细思考软件的实现 ·可以检测代码中的每条分支和路径 ·揭示隐藏在代码中的错误 ·对代码的测试比较彻底 2. 划分了等价类后,就可以说,如果对该集合中某个元素所进行的测试没有发现错误的话,那么对该集合中其他元素所进行的测试也不大可能会发现错误。 使用等价类划分方法设计测试用例主要有两个步骤:(1)确定等价类;(2)生成测试用例 黑盒测试的优缺点 优点:

Jbehave 学习

Jbehave 学习 JBehave行为驱动开发(BDD)是一个框架。 BDD是测试驱动开发(TDD)和验收测试驱动开发(ATDD)的一种演进,目的是使新手和专家开发实践起来更加方便和直观。它改变了从被测试为基础到以行为为基础的词汇,将自己定位为一个设计理念。 一、BDD课题研究之测试思想和方法总结 此次研究的课题是BDD,主要涉及两个方面:测试的思想和方法、技术框架。这里做测试思想和方法的总结。 BDD是什么 全称: Behaviour Driven Development(行为驱动开发)。 BDD改变了我们对软件测试的认识。先前我对测试的认识是:从大的角度来讲,软件测试就是对一个软件系统从功能上进行确认测试和验证测试,从性能上进行压力测试和负载测试,以及对系统的配置测试和兼容性测试等,从类别上又有单元测试,集成测试,回归测试,所有的这些测试工作都有一个目的:交付一套高质量的软件系统。我们软件测试人员的工作就是:尽可能早的找出软件缺陷,并确保其得以修复。顺理成章的,在我们的思维中是:我们先拿到系统的既成品,然后开展测试工作,而BDD恰好颠覆了我们的思维。 回到BDD正题,BDD中有两个大的概念:测试先行和系统设计。 测试先行:BDD提倡我们在开发者的编码工作开展之前,先写测试用例,然后由测试来推动着开发的工作,具体解释为:在设计如何实现一个功能前,先考虑如何测试这个功能,测试的代码完成后,再编写功能实现代码,并且使得该测试用例通过,即完成了系统的一个功能模块。 系统设计:在系统功能实现代码编写之前,我们需要先编写测试代码,在我们的测试代码中实现对系统行为的描述,这个描述其实就是用一种接近自然语言的方式对系统进行详细的设计,并且使项目相关人员,即使是非技术人员也能很容易看懂。关于系统行为,举例说明:用户在一个特定的条件下对系统做请求,系统在该条件下做什么样的处理,这就是系统的一个行为。 总结一下BDD的概念:在项目之初,由客户、开发人员、测试人员一起通过充分的沟通对系统的行为进行设计,由测试人员以接近自然语言的方式编写可以描述系统行为的测试用例,然后由开发人员编写相关的实现代码,并确保该测试用例通过。循环这个过程实现整个系统的功能。

基于测试驱动开发的高校突发事件辅助决策系统.doc

基于测试驱动开发的高校突发事件辅助决策系统 基于测试驱动开发的高校突发事件辅助决策系统 摘耍:由于高校的特殊性,导致突发事件的机会更多、危害更大,因此如何利用历史数据对高校突发事件进行预警和辅助决策显得十分重要。在探讨高校突发事件辅助决策系统的基础上,将测试驱动开发的方法应用于系统开发,实验证明可以明确高校突发事件辅助决策系统的开发需求,加速开发进程,改进软件的质量。 关键词:高校突发事件;辅助决策系统;测试驱动开发 目前,对于高校突发事件危机管理方面的应用研究比较欠缺,很多研究只是基于初步调查的经验总结和感性判断。因此将相关的前沿理论应用到突发事件管理的研究中,建立完善的突发事件辅助决策系统,为高校的管理者提供理论和实践依据是众多专家探讨的关键问题。将测试驱动开发TDD (Test-Dri VenDevel opment)的方法应用于系统开发,实验证明可以明确高校突发事件辅助决策系统的开发需求,加速幵发进程,改进软件的质量。 一、系统功能分析 高校突发事件辅助决策系统主耍具有突发事件预警和突发事件辅助处理两大功能。突发事件预警是指从根本上防止突发事件的形成、爆发,是一种超前的管理。预警系统是对预警对象、预警指标进行分析,从而获取预警信息,以便评佔信息、评价突发事件严重程度、决定是否发出突发事件警报。突发事件辅助处理是根据预警系统对突发事件的早期预测结果作决策,实施处理计划,把已经发生和未发生而将耍发生的事件的影响,控制在最小范围。 二、系统模块设计

根据上述分析,高校突发事件辅助决策系统可以划分为以下模块: 1、预警指标体系设定子模块。由于传统的事件跟踪的预警方法有着诸多弊端,高校突发事件辅助决策系统采用预警指标的方法。预警指标是依据对预警对象(事件、个人)的情况建立一套有监测功能的预警指标体系,通过预警指标收集信息,分析判断突发事件的成因、规模、类型、发生频率、强度、影响后果及发展和变化规律,进行突发事件的预测。 2、预警信息分析子模块。突发事件预警分析子模块主要工作是收集预警征兆信息,进行分析,根据分析结果,发布警报信息和对策信息。通过对学生所在的外部环境的分析研究,掌握客观环境的发展趋势和动态,了解与突发事件发纶有关的微观动向,从而敏锐地察觉环境的各种变化,保证当环境出现不利的因素时,能及吋有效地采取措施,趋利避害。 3、突发事件辅助处理子模块。突发事件管理既强调突发事件出现和发生之后的及时干预,乂重视对突发事件的处理,突发事件管理的偶然和突发性使得处理突发事件的应急计划的制定显得十分重要。在突发事件的应急计划屮,包括应对突发事件的策略、干预突发事件的规则、解决突发事件的程度和方法等。 4、数据查询功能子模块。系统具备全面简便的查询功能,可以按照所填的信息进行查询,快速生成处理报告。系统自带统计分析功能,可以为部分大量表的结果提供描述性统计量,能够实现对不同年份、性质、程度等基本统计量进行比较,大大方便了辅助决策及报告工作。 5、数据导出功能。系统具备全面轻松的数据导出功能,方便深入的科学研究。可以将全部量表的数据导出,从而很方便地实现深入的研究及完成辅助决策功能。 三、TDD在高校突发事件辅助决策系统的应用 1、TDD的概念 测试驱动开发TDD是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码。测试代码确定要编写产品的具体需求。TDD的基本思想是通过测试来推动整个开发的进行,但是测试驭动开发不是单纯的测试工作,而是把需求分析、设计、质量控制量化的过程。

软件质量BUG等级定义

有限公司 软件质量BUG等级定义 版本<1.1>

修订历史记录

1、对Bug严重程度的分级 缺陷级别定义 A类――致命BUG 包括以下各种错误: 1.由于程序所引起的死机,非法退出。 2.程序死循环。 3.数据库发生死锁。 4.与数据库连接错误。 5.主要功能没有实现。 6.因错误操作导致的程序中断。 B类――严重BUG 包括以下各种错误: 1.程序错误但不影响系统和其它程序运行的。 2.程序接口错误。 3.数据库的表、业务规则、缺省值未加完整性等约束条件。 4.次要功能没有实现或间接发生的(经过几步不相关操作后发生的)导致主要需求不 能实现。 5.主要界面的文字错误等。 6.功能错误。 C类—一般性错误 包括以下各种错误: 1.非主要操作界面错误(包括数据窗口内列名定义、含义是否一致) 2.间接发生的(经过几步不相关操作后发生的)导致次要需求不能正常实现。 3.打印内容、格式错误 4.简单的输入限制未放在前台进行控制 D类—较小错误 包括以下各种错误:不影响软件的功能,但影响软件的品质。 1.界面不规范 2.辅助说明描述不清楚 3.输入输出不规范 4.长操作未给用户提示 5.提示窗口文字未采用行业术语 6.可输入区域和只读区域没有明显的区分标志 E类—测试建议 测试人员从测试角度对软件提出的合理化的改进建议,由项目经理决定是否采纳。 2、对Bug现在程度的分级

每次出现:出现概率100%; 经常出现:出现概率大于20%; 很少出现:出现概率小于20%; 出现一次:在整个测试工作中只出现一次。 3、测试人员对软件的评估 测试人员对软件的评估主要依据测试计划中所制定的输出准则和最后遗留的Bug状况。 A类--致命Bug,一般认为发布的软件中不允许存在。 B类--严重Bug,每一万行代码中允许遗留2-3条。 C类-一般性Bug,每一万行代码中允许遗留3-6条。 D类-一较小Bug,由项目经理决定注销或遗留。 E类-一测试建议,由项目经理决定注销或遗留。

浅谈测试驱动开发(TDD)

浅谈测试驱动开发(TDD) 李群https://www.doczj.com/doc/716613906.html, 测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了 代码,又保证了软件质量。本文从开发人员使用的角度,介绍了TDD 优势、原理、过程、 原则、测试技术、Tips 等方面。 背景 一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。 1. 优势 TDD的基本思路就是通过测试来推动整个开发的进行。而测试驱动开发技术并不只是单纯的测试工作。 需求向来就是软件开发过程中感觉最不好明确描述、易变的东西。这里说的需求不只是指用户的需求,还包括对代码的使用需求。很多开发人员最害怕的就是后期还要修改某个类或者函数的接口进行修改或者扩展,为什么会发生这样的事情就是因为这部分代码的使用需求没有很好的描述。测试驱动开发就是通过编写测试用例,先考虑代码的使用需求(包括功能、过程、接口等),而且这个描述是无二义的,可执行验证的。 通过编写这部分代码的测试用例,对其功能的分解、使用过程、接口都进行了设计。而且这种从使用角度对代码的设计通常更符合后期开发的需求。可测试的要求,对代码的内聚性的提高和复用都非常有益。因此测试驱动开发也是一种代码设计的过程。 开发人员通常对编写文档非常厌烦,但要使用、理解别人的代码时通常又希望能有文档进行指导。而测试驱动开发过程中产生的测试用例代码就是对代码的最好的解释。 快乐工作的基础就是对自己有信心,对自己的工作成果有信心。当前很多开发人员却经常在担心:“代码是否正确?”“辛苦编写的代码还有没有严重bug?”“修改的新代码对其他部分有没有影响?”。这种担心甚至导致某些代码应该修改却不敢修改的地步。测试驱动开发提供的测试集就可以作为你信心的来源。 当然测试驱动开发最重要的功能还在于保障代码的正确性,能够迅速发现、定位bug。而迅速发现、定位bug是很多开发人员的梦想。针对关键代码的测试集,以及不断完善的测试用例,为迅速发现、定位bug提供了条件。 我的一段功能非常复杂的代码使用TDD开发完成,真实环境应用中只发现几个bug,而且很

软件测试之缺陷管理

软件测试之缺陷管理 也许你觉得作为测试提一个缺陷很简单,但是要提一个好的缺陷其实是非常难的。在 这里其实还有个隐藏的属性,叫做缺陷的概念,也就是说什么是缺陷? 一般来说缺陷有两种情况,一个是违反了所谓的规则,还有一种是我们无法接受这样 的情况。比如对于美来说,每一个人心目中都有一种对美的定义,你会觉得她很美,但是 换个人来看待就未必。所谓的情人眼里出西施应该是指个人需求下的狭义定义。而大众情 人就是那种所谓的约定俗成的广义规则。 我们做一个软件面向的对象是不同的,甚至我们需要超出用户需求来做一点东西的, 所以对于缺陷的判断成为了一个非常困难的事情,这里只能说对于缺陷这种东西,不要用 肉眼去看要用心眼去看。 缺陷管理 缺陷管理是最开始也是最基础的测试必备技能。在工作了很多年后仍然会发现大量的 测试人员没有办法合理的做好缺陷管理。 在我眼中的缺陷管理包含以下几层概念: 1:缺陷的描述 2:缺陷的定义 3:缺陷的跟踪 4:缺陷的度量分析 缺陷的描述 关于缺陷的描述,无非就是当别人看到你写了一堆关于这个缺陷的巴拉巴拉后,是不 是明白了5w1h,然后能够根据你的建议开始进行缺陷的修改。本质上有一点就是缺陷的 描述就像议论文,一定要有说服力。如果你写出来的东西都不能让别人觉得有道理,你又 怎么让别人愿意按照你的逻辑去修改这个缺陷呢。 为了方便把缺陷写的更容易理解,所以现在无论是Excel的记录方式还是使用系统的 记录方式,我们都会将一个缺陷分割为很多个属性,来便于管理和理解,常见的属性包括:标题,详细说明,版本,环境,发现人,发现时间,修复人,修复时间,修复说明, 状态,严重级别,优先级别等。 本着不浪费笔墨和浪费阅读者理解的前提下,缺陷应该是写的越简单越说明问题是最 好的。但是在我遇到的大多数情况下,作为小白写出来的缺陷往往是无法阅读和理解的, 因为小白总会觉得自己写出来的东西别人肯定看得懂,而忽略了很多背景或者参考的说明,常见的问题无非是: 我的xx功能出错了;点击某个按钮无效果;无法启动软件等。 包括在各个QQ群的提问,也经常会出现这样的无头无脑,毫无内涵的提问,让别人完全无法回答。甚至常常让我想当你在工作几年后开始学习自动化或者性能测试的时候, 连一个问题或者缺陷都无法合理明确的描述出来,你做自动化和性能测试能靠谱么?能解 决问题么?

软件测试练习题

练习题 1.软件调试的目的是? A A. 找出错误所在并改正之 B. 排除存在错误的可能性 C. 对错误性质进行分类 D. 统计出错的次数 2.下列叙述中,哪一项是正确的 ...? D A.用黑盒法测试时,测试用例是根据程序内部逻辑设计的; B.测试是为了验证该软件已正确地实现了用户的要求; C.对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序; D.发现错误多的程序模块,残留在模块中的错误也多。 3.创建一个基于JUNIT的单元测试类,该类必须扩展? C A.TestSuite B. Assert C. TestCase D. JFCTestCase 4.以下对单元测试,不正确 ...的说法是? C A.单元测试的主要目的是针对编码过程中可能存在的各种错误; B.单元测试一般是由程序开发人员完成的 C.单元测试是一种不需要关注程序结构的测试; D.单元测试属于白盒测试的一种。 5.测试驱动开发的含义是? B A.先写程序后写测试的开发方法 B. 先写测试后写程序,即“测试先行” C. 用单元测试的方法写测试 D. 不需要测试的开发 6.用JUNIT断言一个方法输出的是指定字符串,应当用的断言方法是? C A.assertNotNull( ) B. assertSame() C. assertEquals() D. assertNotEquals() 7.TestCase是junit.framework中的一个? C A.方法 B. 接口 C. 类 D. 抽象类

8.TestSuite是JUNIT中用来? A A.集成多个测试用例 B. 做系统测试用的 C. 做自动化测试用的 D. 方法断言 9.对于测试程序的一些命名规则,以下说法正确 ..的一项是? C A.测试类的命名只要符合Java类的命名规则就可以了; B.测试类的命名一般要求以Test打头,后接类名称,如:TestPerson; C.测试类的命名一般要求以Test结尾,前接类名称,如:PersonTest; D.测试类中的方法都是以testXxx()形式出现。 10.以下不属于单元测试优点的一项是? D A.它是一种验证行为 B. 它是一种设计行为 C.它是一种编写文档的行为 D. 它是一种评估行为 数据驱动测试也称? C A.单元测试 B. 白盒测试 C. 黑盒测试 D. 确认测试 11.逻辑驱动测试也称? C A.单元测试 B. 灰盒测试 C. 白盒测试 D. 用户测试 12.以下不属于白盒测试的优点是? B A.增大代码的覆盖率 B.与软件的内部实现无关 C.提高代码的质量 D.发现代码中隐藏的问题 13.组装测试又称为? A A.集成测试 B. 系统测试 C. 回归测试 D. 确认测试 14.对于单元测试框架,除了用于Java的JUnit还有CppUnit、NUnit等,它们是? A A.C++单元测试框架、.NET单元测试框架 B. C语言单元测试框架、通用单元测试框架 C.C++单元测试框架、自动化单元测试框架 D. 自动化单元测试框架、.NET单元测试框架 15.对于JFCUnit,以下说法不正确 ...的是? D A. 它是JAVA GUI的测试框架 B. 它是JUnit的扩展,用于GUI的测试 C.编写JFCUnit的测试用例需要扩展JFCTestCase

软件测试的目的是尽可能多的找出软件的缺陷

判断题: 1、软件测试得目得就是尽可能多得找出软件得缺陷。(Y) 2.Beta 测试就是验收测试得一种。(Y) 3.验收测试就是由最终用户来实施得。(N) 4.项目立项前测试人员不需要提交任何工件。(Y) 5.单元测试能发现约80%得软件缺陷。(Y) 6.代码评审就是检查源代码就是否达到模块设计得要求。(N) 7.自底向上集成需要测试员编写驱动程序。(Y) 8.负载测试就是验证要检验得系统得能力最高能达到什么程度。(N) 9.测试人员要坚持原则,缺陷未修复完坚决不予通过。(N) 10.代码评审员一般由测试员担任。(N) 11.我们可以人为得使得软件不存在配置问题。(N) 12.集成测试计划在需求分析阶段末提交。(N) 二、选折 1.软件验收测试得合格通过准则就是:(ABCD) A. 软件需求分析说明书中定义得所有功能已全部实现,性能指标全部达到要求。 B.所有测试项没有残余一级、二级与三级错误。 C.立项审批表、需求分析文档、设计文档与编码实现一致。 D.验收测试工件齐全。 2.软件测试计划评审会需要哪些人员参加?(ABCD) A.项目经理 B.SQA 负责人C.配置负责人D.测试组 3.下列关于alpha测试得描述中正确得就是:(AD) A.alpha测试需要用户代表参加 B.alpha测试不需要用户代表参加 C.alpha测试就是系统测试得一种D.alpha 测试就是验收测试得一种 4.测试设计员得职责有:(BC) A.制定测试计划 B.设计测试用例C.设计测试过程、脚本D.评估测试活动 5.软件实施活动得进入准则就是:(ABC) A.需求工件已经被基线化 B.详细设计工件已经被基线化 C.构架工件已经被基线化 D.项目阶段成果已经被基线化 三、添空 1、软件验收测试包括:正式验收测试,alpha测试,beta测试。 2、系统测试得策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试,(有得可以合在一起,分开写只要写出15就满分哦) 3、设计系统测试计划需要参考得项目文挡有:软件测试计划,软件需求工件与迭代计划。 4、对面向过程得系统采用得集成策略有:自顶向下,自底向上两种。 5、(这题出得有问题哦,详细得5步骤为~~)通过画因果图来写测试用例得步骤为: (1)分析软件规格说明描述中,哪些就是原因(即输入条件或输入条件得等价类),哪些就是结果(即输出条件),并给每个原因与结果赋予一个标识符。 (2)分析软件规格说明描述中得语义,找出原因与结果之间,原因与原因之间对应得就是什么关系? 根据这些关系,画出因果图。 (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间得组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。 (4)把因果图转换成判定表。(5)把判定表得每一列拿出来作为依据,设计测试用例。

帮你做到零bug的编程方法 - ATDD

ATDD的原则 传统的软件需求(Specification)存在一个问题:需要特别的努力才能做得好。然而一旦它们编写完成,很快就会因为各种原因(你能控制的,或无法控制的)而迅速过时。举个例子,如果一个竞争对手发布了一个新特性,你的需求要立刻响应以保持你的市场份额。由于这显然是一个非技术决策,所以至少需要一些有业务背景的人参与需求决策过程。 在确定需求过程中获得的意见越是多样化,你就越能看清楚整个应用的全景。通常来说,你至少需要从三个不同的视角考虑。首先,需要考虑业务视角。在敏捷团队中,这方面需求通常由客户代表、客户代理人或是Scrum中的产品负责人(Product Owner)来提出。 其次需要考虑技术视角。在传统的团队中,资深开发人员或技术负责人通常会站在这个视角。在敏捷团队中,你会希望讨论会中有一个参与实际开发工作并熟悉源代码的团队成员参加。 最后,需要有人在这两种视角中充当中间人。在传统项目中,你会发现业务分析人员会提供这种视角。一个富有经验的软件测试人员会带来同样的价值。 1 见识“三的力量” 可是为什么这三种不同的视角可以帮助我们确定产品的需求呢?设计软件系统包含很多对这两个方面的权衡:业务功能与技术限制。我们的软件代码中充满了对功能和限制所做的折衷。另一方面,我们的缺陷数据库中则充满了由明显决策失误而导致的问题。 这些决策中,有些在软件开发过程中很难改变,有些则很容易改正。通过尽早让业务功能和技术限制这两种不同的视角接触,我们可以尽早找到正确的决策平衡点。因而,可以将引入难以改正的bug和容易改正的bug 的概率降到最低。顺便我们也可以避免这两种极端情况中间的那些bug。 软件系统的功能分布在一个解决方案空间中[GW89]。这个解决方案空间中存在很多可以实现所需功能的可行设计方案。这就解释了为什么你可以带着性能或负载等特性的需要去探索解决方案空间。这些特性限制了解决方案空间中能满足用户期望的方案的数量。 另一方面,软件实现还存在技术方面的制约。这些制约同样限制了实现所有功能以及特性的设计方案数目。 将业务功能和特性与技术的制约尽早放在一起考虑,可以帮助参与者在解决方案空间中探索可能的设计。这是验收测试驱动开发方法可以成功的重要因素之一。并且,它证明了测试人员在这个探索过程中也能发挥作用,他们可以对软件在功能、特性以及制约方面提出问题和建议。 但是,怎么看待独立的测试团队能带来独特的视角这一观点呢?在过去数十年的测试培训中,我们学到的观点是:开发人员和测试人员应当基于需求文档这一共同的基础而完全独立的工作。这避免了在现代心理学中被称为共识偏见(confirmation bias)的现象。测试人员必须避免受到开发人员观点的影响,并且在应当在适当的时候对产品作出评价。一些团队将这条规则发挥到这样一种极致:开发人员与测试人员被完全禁止与对方交谈。 与开发人员一起描述软件需求并不会给测试人员带来先入为主的偏见。相反,开发人员、测试人员与业务专家应该一起捕捉软件需求。如果你认为这也会使测试人员产生偏见,那么你是不是该开始怀疑阅读需求文档也同样会使测试人员产生偏见?对于测试人员,与开发人员以及业务专家一起描述需求实例和参加需求讨论会的功用是一样的,这也是大多数测试人员在他们的职业生涯中都梦想能做到的。 事实上,在Gojko Adzic的书《实例化需求》(Specification by Example)[Adz11]中采访到的团队反映,由至少一个开发人员和一个测试人员提供的综合观点,会让我们在项目初期就更好地理解需求。就像我们在机场的实例中看到的一样,这种讨论通常会达到以下的效果,开发人员通过提出技术性的问题来澄清业务流程,同时测试人员提出的问题则增加了需求的可理解性,并且用表格这一更加可视化的方式记录了需求。 1

相关主题
文本预览
相关文档 最新文档