软件测试学习(五)

报告发现的问题

设法修复软件缺陷

●没有足够的时间。在任何一个项目中,通常是软件功能太多,而代码编写人员和软件测试人员太少,而且进度中没有留出足够的空间来完成项目。假如你正在制作税务处理程序,4月15日 (赶在应付税务检查之前,译者注)是不可更改的交付期限必须按时完成软件。

●不算真正的软件缺陷。也许有人会说:“ 这不算软件缺陷,而是一项功能。”很多情况下,理解错误、测试错误或者说明书变更会把可能的软件缺陷当做功能来对待。

●修复的风险太大。遗憾的是,这些情形很常见。软件本身是脆弱的、难以理清头绪,有点像一团乱麻,修复一个软件缺陷可能导致其他软件映陷出现。在紧迫的产品发布进度压力下,修改软件将冒很大的风险。不去理睬已知的软件缺陷,以避免造成新的、未知的缺陷的做法也许是安全之道。

●不值得修复。虽然有些不中听,但是事实。不常出现的软件缺陷和在不常用功能中出现的软件缺陷是可以放过的,可以躲过(workarounds)和用户有办法预防或避免的软件缺陷通常不用修复。这些都要归结为商业风险决策。另外应该加入到该清单中的一-项是通常可以理解为上述几项的成因:

●无效的软件缺陷修复报告。测试员没有建立足够强大的用例来使特定软件缺陷得以修复。其结果是软件缺陷被误认为不是软件缺陷,认为软件缺陷不够重要到要推迟软件产品发布,认为修复风险太大,或者仅仅简单地以为不值得修复。

软件测试员不必像律师或者调解争端的组长那样,想方设法说服所有人需要修复已发现的软件缺陷。以平常的心态以及基本交流的技巧就可以应付很多情况了。本章后面将介绍用于软件觖陷记录和跟踪的各种系统,但是眼前先看一下报告软件缺陷的基本原则:

●尽快报告软件缺陷。这虽然在前面多次讨论,但是如何强调都不够。软件缺陷发现得越早,在进度中留下的修复时间就越多。假定在软件发布之前几个月从帮助文件中找出一个令人汗颜的拼写错误,该软件缺陷修复的可能性极高。如果在软件发布之前几个小时发现同样的缺陷,不修复的可能性更大。图19-1在图形上显示了时间和缺陷修复之间的关系。

这似乎很奇怪一不 管今天发现还是3个月之后发现,软件缺陷就是缺陷。理想情况下,何时发现不应该有什么关系,仅仅与软件缺陷的内容有关系。然而,实际上修复觖陷的风险随着时间的推移大大增加,而且在做决定过程中的分量不断加重。

●有效描述软件缺陷。假定你是程序员,接到测试员的下述报告:“无论何时在登录对话框中输入一串随机字符,软件都开始进行-些奇怪的动作”。在不知道随机字符是什么,一串字符有多长,产生什么奇怪现象的前提下,从何着手修复这个软件缺陷呢?

●在报告软件缺陷时不要做评价。测试员和程序员之间很容易形成对立关系。如果忘了原因,可参见第3章。从程序员或者开发小组其他人员的角度看,软件觖陷报告是软件测试员对他们的工作的“成绩报告单”,因此需要不带倾向性、个人观点和煽动性。声称“你控制打印机的代码很糟糕,根本无法工作。我甚至无法相信你在送来测试之前做过一点检查。”的报告是无法让人接受的。软件缺陷报告应该针对产品,而不是具体的人,只陈述事实。避免幸灾乐祸、哗众取宠、个人倾向、自负、责怪。得体和委婉是关键。

●对软件缺陷报告跟踪到底。比没有找到重要软件缺陷更糟糕的是,发现了一一个重要的软件缺陷,做了报告,然后把它忘掉了或者跟丢了。大家知道,测试软件是一个艰苦的工作,因此不要让劳动成果,即找出的软件缺陷被忽视掉。从发现软件缺陷的那一刻起,测试员的责任就是保证它被正确地报告,并且得到应有的重视。一个好的测试员发现并记录许多软件缺陷。一个优秀的测试员发现并记录了大量软件缺陷之后,继续监视其修;复的全过程。本章后面将更详细地讲述这一点。

分离和再现软件缺陷

要想有效报告软件缺陷,就需要以明显、通用和可再现的形式描述它。在许多情况下这

很容易。假定有一个画图程序的简单测试用例,检查绘画可以使用的所有颜色。如果每次选择红色,程序都用绿色绘画,这就是明显的、通用的和可再现的软件缺陷。但是如果这个颜色错误的软件缺陷仅在执行一些其他测试用例之后出现,而在重新启动机器之后直接执行专门的错误用例时不出现这些缺陷,该怎么办?假如它随机出现或者只是每月月圆之时出现,该怎么办?最好有一条警犬。分离和再现软件缺陷是充分发挥侦探才干的地方,设法找出收缩问题的具体步骤。好消息是,不存在随机软件缺陷这样的事一如果 建立完全相同的输入和完全相同的环境条件,软件觖陷就会再次出现。坏消息是,验明和建立完全相同的输人和完全相同的环境条件要求技巧性非常高,而且非常耗时。一旦知道了答案,就显得很容易。当不知道答案时,就显得很难。

如果找到的软件映陷似乎要采用繁杂步骤才能再现,或者根本无法再现,如下一些提示

和技巧会打开局面。如果碰到这种情况,尝试用如下清单中的建议作为分离软件的第一 步:

●不要想当然地接受任何假设。记下所做的每一件事一每- 一个步骤、每- ~次停顿、每一件工作。无意间丢掉一个步骤或者增加一个多余步骤会很容易出现的。请一个合作者看着你运行测试用例。利用按键和鼠标记录程序准确记录和回放执行步骤。如果必要,使用录像机记录下测试会话。所有这些的目的是确保导致软件缺陷所需的全部细节可见,并且可以从另一个角度分析。

●查找时间依赖和竞争条件的问题。软件缺陷仅在特定时刻出现吗?也许它取决于输人数据的速度,或者正使用慢速软盘代替快速硬盘保存数据。看到软件缺陷时网络忙吗?在更慢或更快的硬件上运行测试用例。要考虑时序。

●边界条件软件缺陷、内存泄露和数据溢出等白盒问题可能会慢慢自己显露出来。执行某个测试可能导致数据覆盖但是也只有在试图使用这些数据时才会发现一也许在后面的测试中才有可能。重新启动计算后消失,而仅在执行其他测试之后出现的软件缺陷常常属于这一类。如果发生这种现象,就要查看前面执行的测试,也许要利用一些动态白盒技术,看软件缺陷是否在无意间发生了。

●状态缺陷仅在特定软件状态中显露出来。状态觖陷的例子是软件映陷仅在软件第一次运行时出现或者在第一次运行之后出现。软件缺陷也许仅在保存数据之后,或者按任何键之前发生。状态觖陷看起来很像时间依赖和竞争条件的问题,但是你会发现时间并不重要一重 要的是事件发生的次序,而不是发生的时间。

●考虑资源依赖性和内存、网络、硬件共享的相互作用。软件缺陷是否仅在运行其他软件并与其他硬件通信的“繁忙”系统上出现?虽然软件缺陷可能最终会被证实是由于软件的依赖性或者对资源的相互作用进一步恶化的竞争条件、内存泄露或者状态缺陷问题,但是查一查这些影响有利于分离软件缺陷。

●不要忽视硬件。与软件不同,硬件可能降级,不按预定方式工作。板卡松动、内存条损坏或者CPU过热都可能导致像是软件缺陷的失败,但是实际上不是。设法在不同硬件上再现软件缺陷。这在执行配置和兼容性测试中尤其重要。需要知道的是缺陷是在一个系统上还是在多个系统上出现。

并非所有软件缺陷生来就是平等的

在报告软件缺陷时,一般要讲明它们将产生什么后果。测试员要对软件缺陷分类,以简明扼要的方式指出其影响。常用方法是给软件缺陷划分严重性(severity) 和优先级( priority)。当然,具体方法各公司不尽相同,但是通用原则是一样的:

●严重性表示软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程度。

●优先级表示修复缺陷的重要程度和紧迫程度。

下列严重性和优先级的常用划分方法清单有助于更好地理解两者之间的差别。请记住,这只是示例。有些公司最多使用10个等级,而另一些公司只使用3个等级。然而,不论使用多少个等级,目标都是一致的。

严重性:

1)系统崩溃、数据丢失、数据毁坏,安全性被破坏。

2)操作性错误、结果错误、功能遗漏。

3)小问题、拼写错误、UI布局、罕见故障。

4)建议。

优先级:

1)立即修复,阻止了进-一步测试,立竿见影。

2)在产品发布之前必须修复。

3)如果时间允许应该修复。

4)可能会修复,但是即使有产品也能发布。

软件缺陷的生命周期

从解决状态回到打开状态的附加线涉及软件测试员发现软件缺陷没有被修复的情况。软件缺陷重新打开,重复新的生命周期。从关闭状态和推迟状态绕回打开状态的两条虚线虽然很少发生,但是一定要引起重视。由于软件测试员永远不会放弃,因此原来认为已经修复、测试和关闭的缺陷可能会再次出现。此类软件缺陷一般称为回归缺陷( regressions)。推迟修复的软件缺陷以后也可能被证实很严重,要立即修复。如果发生任意一种情况,软件缺陷就要重新打开,再次启动整个过程。

大多数项目小组都制定规则规定由谁来改变软件缺陷的状态,或者交给其他人来处理软件缺陷。例如,只有项目经理可以决定推迟软件缺陷修复,或者只有测试员允许关闭软件觖陷。重要的是一旦记录了软件缺陷,就要跟踪其生命周期,不要跟丢了,并且提供必要的信息驱使其得到修复和关闭。

软件缺陷跟踪系统

至此,我们清楚了软件缺陷报告的过程是很复杂的,需要大量的信息、详尽的细节和相

当数量的组织纪律才能有所成效。本章到目前为止所讲述的一切表面上看起来很好,但是运

用到实践中还需要某种系统,以便记录发现的软件缺陷,并在其整个生命周期中进行监视。

软件缺陷跟踪系统可以胜任此项工作。

本章以下内容将讨论软件缺陷跟踪系统,并给出使用纸笔方法和使用成熟的数据库跟踪

的示例。当然,使用什么工具可以针对公司或者项目的具体情况定制,但是原则通常在软件

行业中是一致的,因此应该可以在要求使用的任何系统中运用这些技巧。

标准:测试事件报告

我们的好朋友,软件测试文档的IEEE 829标准( 由standard.ee.org提供)定义了一个称为测试事件报告(Test Incident Report)的文档,其目的是“记录在需要调查的测试过程期间发生的任何事件”。简而言之,就是记录软件缺陷。回顾标准对于提炼到目前为止所学的缺陷报告过程,并从总体来看待它是个好的办法。下表列出了标准中定义、采纳和更新了的区域,以反映新近的术语

●标识符。定义软件缺陷报告的惟- -ID, 用于定位和引用。

●总结。用简明扼要的事实陈述总结软件缺陷。要测试的软件及其版本的引用信息,相关

的测试过程、测试用例和测试说明也应该包含在内。

●事件描述。提供下列软件缺陷的详细的描述信息:

日期和时间

测试员的姓名

使用的硬件和软件配置

输入

过程步骤

预期结果

实际结果

试图再现以及尝试的描述

有助于程序员定位软件缺陷和其他现象或者信息

●影响。严重性和优先级,以及测试计划、测试说明、测试程序和测试用例的影响指示。

手工软件缺陷报告和跟踪

IEEE829标准虽然没有定义软件缺陷报告应该采用的格式,但是给出了一个简单文档的例子。图19-5显示 了此类书面软件报告的模样。

注意这个只有一页的表单,可以容纳标识和描述软件缺陷的必要信息。它还包括用于在生命周期中跟踪软件缺陷的域。表单一旦由测试员填好,缺陷就可以交给程序员进行修复了。程序员有填写关于修复的信息的域,包括可能的解决方案的选择。还有一个区域,一旦解决了软件缺陷,软件测试员可以在此提供重新测试和关掉软件缺陷所做工作的信息。表单底端是签名区-- 在许多行业中,当在这一-行签上软件测试员的名字,就表明缺陷被满意地解决了。对于非常小的项目,书面表单足以胜任。在最近的20世纪90年代,即使对于任务严格的大型项目,也使用书面表单对成千上万个软件缺陷进行报告和跟踪。今天仍然存在这样的袖珍本。书面表单的问题是,它是纸。如果走进一家靠书面文件运转的公司,想找点东西,就知道此类系统是多么低效了。

自动化软件缺陷报告和跟踪

正如第18章“ 编写和跟踪测试用例”中所述的测试用例和测试程序文档一样, 没有道理不利用现代化的系统把IEEE 829标准更新并应用到工作中来。毕竟,跟踪软件缺陷的信息,即图19-5所示的表单上的数据只是文字和数字一-这 是个完美的数据库应用程序。图19-6给出了这样的-一个自动化软件缺陷报告和跟踪系统,代表工作中可能碰到的类型。

成效评价

通过使用软件映陷跟踪数据库中的信息,可以进行查询,指出发现的软件缺陷类型,发现软件缺陷的速度,以及多少软件缺陷已经得到了修复。测试经理或者项目经理可以看出数据中是否有趋势显示需要增加测试的区域,或者项目是否脱离计划发布日期的轨道。数据摆在那里,问题就是建立能够显示所需信息的报表。

使用软件跟踪数据库中的信息

因为软件缺陷数据库不断更新新的软件缺陷、软件缺陷登记项和修复日期、项目成员姓名、软件缺陷的指派等,所以把描述项目状态一以及 各测试员或者程序员的状态的各种度量放在一起是很自然的。利用软件缺陷数据库进行度量有一个潜在问题。同一个数据库可以告诉所有人,有多少优先级1软件映陷仍然需要修复; ;也能告诉管理部门,某一个程序员制造了多少个软件缺陷。

它还能告诉老板,与小组中其他测试员相比,某位测试员记录了多少个软件缺陷。公布这些信息是好事吗?也许是,如果测试员和程序员都真正擅长测试工作。但是如果测试优秀程序员的代码呢?没有多少软件缺陷能找出来,软件缺陷发现的度量值突然间降低了,与测试满是软件缺陷的代码的测试员无法相比。

在日常测试中使用的度量

软件缺陷跟踪数据库最常用的特性( 除了输入软件缺陷之外)可能就是执行查询,获得感兴趣的软件缺陷清单。不要忘了,软件缺陷数据库存可能存放了成千上万的软件缺陷。在如此大型的清单中手工选择是不可能的。在数据库中选择软件缺陷的美妙之处是让执行查询成为了简单的任务。图20-1 显示了一个典型的查询构造窗口,有一个查询示例准备输入。

把解决方案字段导出到图表程序中,可以生成如图20-5所示的图表,显示Pat发现的软件缺陷大多数最终得以修复(对测试员的友好表示),只有小部分以不可再现、重复、推迟或者由于某种原因不算问题等方式解决。一旦开始测试,就会找到个人或者小组乐于使用的某种度量来衡量测试过程的进行情况。可以统计自己每天发现了多少个软件缺陷,或者像前面的例子那样,统计“修复率”。重要的是通过从软件缺陷数据库中提取信息,可以构造任何想要的度量。这引出了本章的下一部分,它描述评价整个项目情况的一些常用高级度量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

串的基本操作(数据结构)

串的基本操作 #include <stdlib.h> #include <iostream> #include <stdio.h> #define MaxSize 255typedef struct{char ch[MaxSize];int length; }SString;//初始化 SString InitStr(SString &S){S.length0;return S; } //为了方便计算&#xff0c;串的…

LeetCode【74】搜索二维矩阵

题目&#xff1a; 代码&#xff1a; public static boolean searchMatrix(int[][] matrix, int target) {int rows matrix.length;int columns matrix[0].length;// 先找到行&#xff0c;行为当前行第一列<target&#xff0c;当前行1行&#xff0c;第一列>targetfor…

【TA 工具积累】参考图展示 PureRef | 截图 Snipaste

贴两个平常看图和截图比较方便的工具&#xff1a; PureRef 官网指路&#xff1a;PureRef 油管简单的使用教程视频&#xff1a;Free Download | PureRef 知乎上大佬总结的快捷键&#xff1a; PureRef 快捷键 提炼总结 - 知乎 (zhihu.com) b站大佬总结的快捷键&#xff1a;…

一文告知HTTP GET是否可以有请求体

HTTP GET是否可以有请求体 先说结论&#xff1a; HTTP协议没有规定GET请求不能携带请求体&#xff0c;但是部分浏览器会不支持&#xff0c;因此不建议GET请求携带请求体。 HTTP 协议没有为 GET 请求的 body 赋予语义&#xff0c;也就是即不要求也不禁止 GET 请求带 body。大多数…

Idea集成Docker

1、前言 上一节中&#xff0c;我们介绍了Dockerfile的方式构建自己的镜像。但是在实际开发过程中&#xff0c;一般都会和开发工具直接集成&#xff0c;如Idea。今天就介绍下idea和Docker如何集成。 2、开启docker远程 要集成之前&#xff0c;需要我们本机能够访问docker服务…

基于LoRa的远程气象站:实现远程气象监测与数据传输

随着物联网技术的不断发展&#xff0c;基于无线通信的远程气象监测系统得以广泛应用。本文将介绍一种基于LoRa技术的远程气象站&#xff0c;通过LoRa模块实现气象数据的远程采集和传输&#xff0c;为气象监测提供了一种高效、低功耗的解决方案。 LoRa技术概述 LoRa&#xff08…

ssm+vue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的课程网络学习平台管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体…

《从程序员到架构师》:从现在开始培养架构思维,一点都不晚

《从程序员到架构师》&#xff1a;从现在开始培养架构思维&#xff0c;一点都不晚 尽管大家都明白软件架构非常重要&#xff0c;但是能够真正理解并应用软件架构的核心思维去解决实战的商业项目&#xff0c;确实大多数程序员所欠缺的。本文将从一个全新的视角&#xff0c;重新带…

【算法练习Day19】二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 二叉搜索树的最近公共祖先叉…

Avalonia常用小控件Svg

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.SVG库&#xff0c;Avalonia.Svg.Skia&#xff0c;项目地址 https://github.com/wieslawsoltes/Svg.Ski…

【数据库——MySQL(实战项目1)】(4)图书借阅系统——触发器

目录 1. 简述2. 功能代码2.1 创建两个触发器&#xff0c;分别在借出或归还图书时&#xff0c;修改借阅人表中的已借数目(附加&#xff1a;借阅人表的总借书数、图书表的借阅次数以及更新图书表的图书状态为(已借出/在架上))字段&#xff1b;2.2 创建触发器&#xff0c;当借阅者…

redis 哨兵 sentinel(一)配置

sentinel巡查监控后台master主机是否故障&#xff0c;如果故障根据投票数自动将某一个从库转换为新主库&#xff0c;继续对外服务 sentinel 哨兵的功能 监控 监控主从redis库运行是否正常消息通知 哨兵可以将故障转移的结果发送给客户端故障转移 如果master异常&#xff0c;则…

IOS17 轻松签全能签还能不能用?多开能否使用?升级后微信底栏消失怎么办?BY:后厂村路灯

从iphone15还没出就有小伙伴们追着问&#xff0c; 到现在也有人一直再问iOS17能不能用&#xff0c;看来换手机的人很多呀。 这里统一回答一下&#xff1a;“iOS17苹果签名可以用&#xff0c;多开也可以用”但是还是有些地方注意。 如果你是16系统直接升级刀17就可以&#xff…

使用 Splashtop 驾驭未来媒体和娱乐

在当今时代&#xff0c;数字转型不再是可选项&#xff0c;而是必选项。如今&#xff0c;媒体与娱乐业处于关键时刻&#xff0c;正在错综复杂的创意、技术和远程协作迷宫之中摸索前进。过去几年发生的全球事件影响了我们的日常生活&#xff0c;不可逆转地改变了行业的运作方式&a…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试&#xff1f; 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的&#xff0c;在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响&#xff0c;过早进入性能测试会出现测试结果不准确、浪费测试资…

【C++STL基础入门】list基本使用

文章目录 前言一、list简介1.1 list是什么1.2 list的头文件 二、list2.1 定义对象2.2 list构造函数2.3 list的属性函数 总结 前言 STL&#xff08;Standard Template Library&#xff09;是C标准库的一个重要组成部分&#xff0c;提供了一套丰富的数据结构和算法&#xff0c;可…

【Lombok的Bug记录】前端传的有值,但是到后端就全为空了

项目场景&#xff1a; 项目背景&#xff1a;使用Data注解标注类 问题描述 前端传的有值&#xff0c;但是到后端就全为空了 原因分析&#xff1a; AName和aName生成的set方法名是一样的&#xff0c;所以换名字就行了&#xff01; 解决方案&#xff1a; 属性不要写成xXxx的形式…

【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

YB4014是可以对单节磷酸铁锂电池进行恒流/恒压充电管理的集成电路。

概述&#xff1a; YB4014是可以对单节磷酸铁锂电池进行恒流/恒 压充电管理的集成电路。该器件内部包括功率晶 体管&#xff0c;不需要外部的电流检测电阻和阻流二极管 YB4014只需要极少的外围元器件&#xff0c;非常适合于 便携式应用的领域。热调制电路可以在器件的功 耗比较大…

flutter开发入门,windows环境安装,耗时一天解决各种bug,终于成功

首先说明要安装的环境&#xff1a;java8必须&#xff0c;android studio&#xff0c;chrome是开发安卓和web是必须的 java8的下载地址&#xff1a;https://www.java.com/en/download/、 java8蓝奏云下载地址&#xff1a;jre-8u381-windows-x64.exe - 蓝奏云 flutter国内环境…