软件测试中缺陷的分类(全程软件测试三十四)
软件测试中缺陷的分类(全程软件测试三十四)在实际软件测试中还需要用到软件缺陷跟踪管理系统,以便描述报告所发现的缺陷、处理软件缺陷、跟踪软件缺陷和生成软件缺陷跟踪图表等。建立一套软件缺陷跟踪系统的意义如下:上述的第(1)条容易受到重视,第(2)(3)(4)条目标却很容易被忽视。其实,在一个运行良好的组织中,缺陷数据的收集和分析是很重要的,从缺陷数据中可以得到很多与软件质量改进相关的数据。(2)收集缺陷数据并根据缺陷趋势曲线识别测试所处阶段。(3)决定测试过程是否可以结束。通过缺陷趋势曲线来确定测试过程是否可以结束是常用并且较为有效的一种方式。(4)收集缺陷数据并对其进行数据分析,作为组织过程改进的财富。
在软件缺陷的处理过程中,测试人员需要进行软件缺陷跟踪,这就要求测试人员掌握软件缺陷跟踪系统的使用和软件缺陷跟踪的方法,以及图表的制作方法。
软件缺陷跟踪管理是测试工作的一个重要部分。测试的目的是尽早发现软件系统中所存在的缺陷,而对软件缺陷进行跟踪管理的目的是确保每个被发现的缺陷都及时得到处理。软件测试是围绕缺陷进行的,对缺陷的跟踪管理一般需要达到以下目标。
(1)确保每个被发现的缺陷都能够被解决。“解决”的意思不一定是修正,也可能是其他处理方式(如延迟到下一个版本中修正或者由于技术原因不能被修正)。总之,对每个被发现的缺陷的处理方式必须能够在开发组织中达成一致。
(2)收集缺陷数据并根据缺陷趋势曲线识别测试所处阶段。
(3)决定测试过程是否可以结束。通过缺陷趋势曲线来确定测试过程是否可以结束是常用并且较为有效的一种方式。
(4)收集缺陷数据并对其进行数据分析,作为组织过程改进的财富。
上述的第(1)条容易受到重视,第(2)(3)(4)条目标却很容易被忽视。其实,在一个运行良好的组织中,缺陷数据的收集和分析是很重要的,从缺陷数据中可以得到很多与软件质量改进相关的数据。
软件缺陷跟踪系统在实际软件测试中还需要用到软件缺陷跟踪管理系统,以便描述报告所发现的缺陷、处理软件缺陷、跟踪软件缺陷和生成软件缺陷跟踪图表等。建立一套软件缺陷跟踪系统的意义如下:
(1)软件缺陷跟踪系统中的软件缺陷跟踪数据库,不仅可以清楚地描述软件缺陷,还能提供统一的、标准化的软件缺陷报告,这样就可以使所有人员对软件缺陷的理解保持一致。
(2)缺陷跟踪数据库可以自动生成软件缺陷的编号,还有分析和统计的选项,这是手工方法无法实现的。
(3)在缺陷跟踪数据库的基础上,可快速生成必要的、满足查询条件的缺陷报表、曲线图等,测试小组、开发小组甚至公司的高层都可以随时掌握软件产品质量的整体状况或软件测试/开发的进度。
(4)缺陷跟踪数据库还提供了软件缺陷属性并允许开发小组的成员根据缺陷对项目的相对和绝对重要性来进行软件缺陷的修复。
(5)在软件缺陷生命周期中利用缺陷跟踪系统来管理软件缺陷,从最初的报告到最后的解决,确保了每一个缺陷都不会被忽视。同时,它还可以使测试人员的注意力集中在那些务必尽快修复的严重缺陷上。
(6)当软件缺陷在其生命周期中发生变化时,开发人员、测试人员以及管理人员必须迅速熟悉新的软件缺陷信息。一个良好的软件缺陷跟踪系统可以很快地获取历史记录,并在检查缺陷的状态时参考历史记录。
(7)在软件缺陷跟踪数据库中关闭任何一份软件缺陷报告,都可以被记录下来。当产品送出去时,每一份未关闭的软件缺陷报告都提供了有效的技术支持,并且证明测试人员找到了特殊领域突然出现的事件中的软件缺陷。
对于项目管理,缺陷跟踪是很重要的一个环节,它除了可以对需求的完成度进行控制,还可以对软件本身的质量进行控制,从而保证软件开发迭代的顺利进行。
以前软件项目开发中的缺陷跟踪都是通过Excel 表格的形式来完成的,利用这种表格虽然也可以进行项目管理和项目执行度的交互,但效率与实时性不高,也不好维护和统计,因此就出现了缺陷跟踪系统,通过软件技术来解决软件项目的管理问题。
目前缺陷跟踪系统比较多,比较有名的如 Mercury的 TestDirector/Quality Center、IBM的ClearQuest、Atlassian的Jira、易软开源小组的BugFree、Seapine的TestTrack以及本文将要重点介绍的Bugzilla和Mantis,如下图所示。
软件缺陷管理工具
1.Bugzilla缺陷跟踪系统
Bugzilla是Mozilla公司提供的一个开源软件测试缺陷管理工具,其主界面如下图所示。它具有完善的缺陷跟踪体系,包括报告缺陷、查询缺陷记录并产生报表、处理解决、管理员系统初始化和设置四部分。
Bugzilla系统主界面
(1)Bugzilla的特点
Bugzilla具有以下几个特点。
① 基于Web方式,安装简单,运行方便快捷,管理安全。
② 有利于缺陷的清楚传达。
③ 系统灵活,强大的可配置能力。
④ 自动发送E-mail,通知相关人员。
(2)Bugzilla新建账号
下面介绍如何新建一个Bugzilla账号。
① 单击“New Account”链接,输入E-mail地址(如:×××@office)然后单击“Create Account”按钮。
② 稍后,该邮箱会收到一封邮件。邮件包含登录账号(与 E-mail 地址相同)和口令,这个口令是Bugzilla系统随机生成的,可以根据需要进行更改。
③ 在页面中单击“Log In”链接,然后输入账号和口令。最后单击“Login”按钮。
(3)缺陷报告状态分类和缺陷处理意见
缺陷报告状态分类:待确认的(Unconfirmed)、新提交的(New)、未解决的(Reopened)、已解决的(Resolved)、已验证的(Verified)、已关闭的(Closed)。
缺陷处理意见:已修改(Fixed)、不是问题(Invalid)、不修改(Wontfix)、以后版本解决(Later)、保留(Remind)、重复(Duplicate)、需要更多信息(Worksforme)。缺陷的状态和处理意见如下表所示。
状态和处理意见
(4)填写项目
指定处理人(Assigned To):可以指定一个人处理,如不指定处理人,系统就会默认管理员为处理人。
超链接(URL):输入超链接地址,引导处理人找到与软件缺陷报告相关联的信息。
概述(Summarize):应该保证处理人在阅读时能够明白提交者在进行何种操作时发现了什么样的问题。如果是通用组件部分的测试,则必须将这一通用组件对应的功能名称写入概述,从而方便日后的查询。
硬件平台和操作系统(Platform and OS):测试所需要的硬件平台(一般会选择PC)和测试应用的操作系统。
版本(Version):产生缺陷的软件版本。
缺陷报告优先级(Priority):分四个等级,即P1—P4 P1的优先级别最高,然后逐级递减。
缺陷状态(Severity):Blocker,阻碍开发和/或测试工作;Critical,死机,丢失数据,内存溢出;Major,较大的功能缺陷;Normal,普通的功能缺陷;Minor,较轻的功能缺陷;Trivial,产品外观上的问题或一些不影响使用的小毛病,如菜单或对话框中的文字拼写或字体问题等;Enhancement,建议或意见。
报告人(Reporter):缺陷报告提交者的账号。
邮件抄送列表(CC List):缺陷报告抄送对象。此项可以不填写,如果需抄送多位收件人,可将收件人地址用“ ”隔开。
从属关系(Affiliation):Bug“ID”depends on,如果某缺陷必须在其他缺陷修改之后才能进行修改,则在此项目后填写该缺陷的编号;Bug“ID”blocks,如果该缺陷的存在影响了其他缺陷的修改,则在此项目后填写被影响的缺陷的编号。
附加描述(Additional Comments):在缺陷跟踪的过程中测试人员与开发人员通过附加描述进行沟通,开发人员可以在这里填写缺陷处理记录和缺陷处理意见,测试人员可以在此处填写返测意见以及对在返测的过程中发现的新问题的描述。
缺陷查找:可以通过页脚中的“Query”链接进入查找界面,根据查找的需求在界面中输入关键字或选择对象。查找功能可以进行字符、字符串的匹配查找,并且具有布尔逻辑的检索功能。
在一定的权限下,还可以通过在查找页面中选择“Remember this as my default query”对当前检索页面中设定的项目进行保存,以后就可以直接从页脚中的“My bugs”中调用这个项目来进行检索。
还可以在“Remember this query and name it:”后面输入字符,为当前检索页面中所设定的项目命名,同时选中“and put it in my page footer”,则以后这个被命名的检索就会出现在页脚中。
缺陷列表:如果运行了缺陷检索功能,系统则会根据需要列出相关的项目。可以通过列表页脚处的“Change Columns”设定在列表中显示的缺陷记录中的字段名称。如果拥有一定的权限,还可以通过“Change several bugs”对列表中所列出的缺陷记录进行修改,例如,修改缺陷的所有者。
通过“Send mail to bug owners”可以向列表中列出的缺陷记录的所有者发送信息。如果对查找出的结果并不满意,希望更改检索设定,可以通过“Edit this query”完成。一般情况下,检索出的结果仅显示基本信息,可以通过“Long Format”来查看更为详细的内容。
(5)用户属性设置
① 账号设置(Account Settings):可以变更自己账号的基本信息,如真实姓名、口令、E-mail地址。但为安全起见,在此页进行任何信息更改之前都必须输入当前的口令。当更改了E-mail地址,系统会给新旧E-mail地址分别发送一封E-mail地址更改确认邮件,用户必须到邮件中指定的地址对更改进行确认。
② E-mail设置(E-mail Settings):可以在此选择希望在什么条件下收到哪些与自己相关的邮件。
③ 页脚(Page Footer):设定“Preset Queries”是否在页脚中显示。
④ 用户权限(User Permissions):可以查看自己账号当前所拥有的权限种类。
2.Mantis缺陷跟踪系统
mantis缺陷跟踪系统是一个基于PHP技术的轻量级开源缺陷跟踪系统,在功能、实用性上可以满足中小型项目的管理及跟踪需求。
(1)Mantis的基本特性
Mantis具有以下基本特性。
① 个人可定制 E-mail 通知功能。每个用户可依据自身的特点只订阅与自己相关的缺陷状态邮件。
② 支持多项目、多语言。
③ 不同角色有不同权限,权限设置十分灵活。每个项目以及缺陷都可将权限设置为公开或私有,每个缺陷也可以在不同的项目之间进行移动。
④ 方便信息的传播。在主页可以发布与项目相关的新闻。
⑤ 具备缺陷关联功能。除重复缺陷外,每个缺陷都可以链接到与其相关的缺陷。
⑥ 缺陷报告可打印或输出为CSV格式,支持可定制的报表输出、用户输入域。
⑦ 提供各种缺陷的趋势图和柱状图,为项目状态分析提供重要依据。如果还是不能满足需求,还可以把数据输出到Excel中进行进一步的分析。
⑧ 流程定制十分方便并且符合标准,满足一般的缺陷跟踪需求。
(2)Mantis的安装步骤
安装之前需要下载安装包mantis0.19.2、mysql3.1.8、PHP5.0.3、apache2.0.52。Mantis系统主界面如下图所示。
Mantis系统主界面
安装下载的软件,假设各软件的安装目录为C:\mantis-0.19.2、C:\mysql-3.1.8、C:\php-5.0.3、C:\apache-2.0.52。
下载ZIP版的程序,直接解压到一个目录。如果没有ZIP版,下载Windows Installer版本。
① 安装apache。
运行安装程序,安装时选择安装给当前用户,采用8080端口,不必安装成服务。
假设在 Windows 下安装,运行 C:\apache-2.0.52\bin\apache.exe,在 IE 地址栏输入http://localhost:8080/,可以看到安装成功。如果安装成80端口的服务,则输入http://localhost/。
其他软件直接解压到自己想要的目录。如果下载的是Installer版本,也直接运行安装程序,只是安装后多几个启动的快捷菜单,外加一些默认设置。
② 为Apache配置PHP。
打开C:\apache-2.0.52 \conf\httpd.conf文件,添加如下内容到文件尾。
#PHP 5
Load File "c:/php-5.0.3/php5ts.dll"
Load Module php5_module "c:/php-5.0.3/php5apache2.dll"
Add Type application/x-httpd-php .php
#PHP.ini path
PHP IniDir "c:/php-5.0.3"
③ PHP配置。
将C:\php-5.0.3下的php.ini-dist复制一份,并改名为php.ini。
查找include_path,改为include_path=".;c:\php-5.0.3\pear"。
查找extension_dir,改为extension_dir="c:\php-5.0.3\ext"。
查找php_mysql.dll,将这一行前面的“;”号去掉。
保存文件。
④ 为Apache安装Mantis系统。
打开C:\apache-2.0.52 \conf\httpd.conf文件,添加如下内容到文件尾。
Alias /mantis "c:/mantis-0.19.2/"
<Directory "c:/mantis-0.19.2/">
Options Indexes
AllowOverride None
Order allow deny
Allow from all
</Directory>
查找 Directory Index,在其后添加 index.php。添加后为:Directory Index index.html index.html.var index.php。
⑤ 创建数据库。
运行C:\mysql-3.1.8\bin\mysqld,启动数据库。
mysql -uroot -p
create database bugtracker;
use bugtracker;
source c:\mantis-0.19.2\sql\db_generate.sql;
当然也可以用其他GUI工具创建数据库。
⑥ Mantis配置。
将C:\mantis-0.19.2下的config_inc.php.sample复制一份,并改名为config_inc.php。
如果改了root的密码,打开这个文件,设置$g_db_password='yourpassword'。
⑦ Windows环境。
将C:\php-5.0.3添加到path中。
⑧ 启动缺陷跟踪系统。
首先启动 Apache和 MySQL,在地址栏输入 http://localhost:8080/mantis/index.php或者http://localhost/mantis/index.php。看到初始页面。用 administrator/root 登录,Mantis 开始工作。
⑨ 邮件服务器配置。
在 C:\php-5.0.3\php.ini 文件中查找 smtp,将 localhost 改为发件服务器,如 SMTP=smtp.162.com。
在php.ini文件中查找sendmail_from,将前面的分号去掉,并在后面填上邮件地址。在 C:\mantis-0.19.2\config_inc.php 文件中添加$g_smtp_host='smtp.162.com';$g_smtp_username='yourusername';$g_smtp_password='yourpassword';$g_phpMailer_method =2;。
查找$g_return_path_email,将后面的邮件地址改为有效的地址,这一点非常重要,否则将无法正常发送激活注册的邮件。
config_inc.php其他邮件地址也改为有效的地址。
$g_smtp_username和$g_smtp_password在服务器需要验证时用,不需验证时不用加,或设为$g_smtp_username=' $g_smtp_password='。
现在可以注册新用户,并使用发送邮件功能了。
⑩ 中文显示。
在Apache的httpd.conf配置文件中将AddDefaultCharset ISO-8859-1改为Add Default Charset OFF。
在C:\mantis-0.19.2\config_inc.php中添加$g_default_language='auto';。
[11] 文件上传。
将如下内容添加到config_inc.php中。
$g_allow_file_upload=ON;
$g_file_upload_method=DISK;
在C:\mantis-0.19.2下面新建一个upload目录。
当以管理员身份登录、新建项目时,上传文件路径填upload即可。如果要为每一个项目指定不同的目录,可以先在 upload 下建一个 projectname,在上传文件路径那一项填写upload\projectname,注意不要用中文目录名,目录名也不要带空格。
软件缺陷跟踪的方法和图表软件缺陷数据是生成各种各样测试分析、质量控制图表的基础,相关人员可以从这些缺陷分析图表中看到缺陷修复的详细过程,分析缺陷发生的根本原因,提高跟踪管理软件缺陷的效率。
1.软件项目如何发展
软件缺陷打开/关闭图表是最基本的缺陷分析图表,它可以提供大量有关软件缺陷状态、项目进度、产品质量、开发人员和测试人员工作情况的信息。
(1)项目当前的质量情况体现在打开软件缺陷总数曲线和关闭软件缺陷总数曲线的走势。
(2)项目当前的开展进度体现在关闭软件缺陷总数曲线和打开软件缺陷总数曲线的时间差。
(3)软件缺陷是否及时被开发人员修复,体现在关闭软件缺陷总数曲线是否快速上升。
(4)测试人员是否迅速地去验证软件缺陷,体现在关闭软件缺陷总数曲线是否紧跟在打开软件缺陷总数曲线的后面。
管理人员可以了解项目具体在哪个时间节点出现问题,协调开发人员与测试人员两者之间的关系,积极推动项目的开展,提高项目发布时的质量。下面通过软件缺陷打开/关闭图分析项目的进展情况,如下图所示。
当打开软件缺陷总数曲线(图的顶部曲线)的走势趋于水平,一般就可以认为测试接近尾声。
关闭日期在打开日期之后,这种滞后情况源于将修复的软件缺陷引入产品并将该产品发送至测试组进行配置测试和回归测试所引起的延迟。
软件缺陷打开/关闭图
找到软件缺陷的速度逐渐减慢。发现软件缺陷的极限在2015年6月16日左右。接下来在系统测试的第二周期发现少数几个软件缺陷,在最后的周期中没有发现软件缺陷。
在测试和修复的过程中,两条曲线不断趋近,当这两条曲线汇聚到一个点时,开发人员基本上已经完成修复软件缺陷的任务。关闭软件缺陷总数曲线紧跟在打开软件缺陷总数曲线之后,这体现出项目成员正在快速地推进问题的解决。
2.软件缺陷为何发生
分析软件缺陷的根本原因有助于测试人员决定哪部分的功能需要增强测试,还可以使开发人员把注意力集中到那些引起最严重、最频繁问题的方向。软件缺陷主要出现在三个区域——用户界面、逻辑以及规格说明书。
如下图所示,这三方面的问题占据发现软件缺陷总数的74%。从测试风险角度来看,这些区域很可能是隐藏缺陷比较多的地方,需要进行更加细致、深入的测试。站在开发的角度来看,这些就是需要提高代码质量的主要区域。如果某个产品前后共发现10000个缺陷,代码在这三个区域减少10个百分点,则总缺陷数就能减少740个(7.4%),这样一来代码的质量改善效果就非常显著。
根本原因图表
3.开发人员如何响应
关闭软件缺陷周期图表将开发人员对软件缺陷的响应量化到软件缺陷报告中,如下图所示。
关闭软件缺陷周期图表
一个稳定的关闭软件缺陷周期图表上,一天到另一天的变化相对较小。上图中的关闭软件缺陷周期曲线较为稳定,可以接受。软件缺陷修复的时间最好控制在一周半之内。