软件测试学习(五)

news2024/11/19 4:46:50

报告发现的问题

设法修复软件缺陷

●没有足够的时间。在任何一个项目中,通常是软件功能太多,而代码编写人员和软件测试人员太少,而且进度中没有留出足够的空间来完成项目。假如你正在制作税务处理程序,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.coloradmin.cn/o/1089030.html

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

相关文章

计算机毕业设计选什么题目好?springboot 高校学生综合测评管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

枚举探秘:Java中的神奇力量!

在 Java 枚举出现之前,通常会使用常量类来表示一组固定的常量值,直到Java 1.5之后推出了枚举,那么枚举类型有哪些特点,它比常量类又好在哪里呢。 本文将分析一下枚举的特点及用法。 一、什么是枚举 Java 枚举(Enum&a…

leetcode 75. 颜色分类

2023.10.13 题目不让用sort方法&#xff0c;所以先用冒泡排序做了一下&#xff1a; 冒泡排序 class Solution {public void sortColors(int[] nums) {for(int i0; i<nums.length-1; i){for(int j0; j<nums.length-1; j){if(nums[j] > nums[j1]){int temp nums[j];n…

嵌入式实训室建设方案

嵌入式实训室概述 随着物联网和人工智能的快速发展,嵌入式技术迎来了发展机遇的同时,也给高校的嵌入式系统课程带来了挑战。嵌入式系统具有体积小、功能强、可靠性高等特点,已经广泛应用于各个领域,深入人们生活方方面面,对应培养多样化、高端化人才的需求。因此,越来越多高校…

信号弹图像立体匹配算法研究

目录 摘 要............................................. 3 第一章 绪论................................... 6 1.1 研究课题背景.......................... 6 1.2 立体匹配技术国内外发展现状............ 7 1.3 课题研究的目的...............…

代码随想录算法训练营第天十九天丨 二叉树part06

654.最大二叉树 思路 最大二叉树的构建过程如下&#xff1a; 对于这道题&#xff0c;思路整体模仿的是昨天的 根据中后序遍历构造二叉树 的解题思路。 直接看代码&#xff1a; class Solution {//用于快速查找private Map<Integer,Integer> map;public TreeNode cons…

3.6 空值的处理

思维导图&#xff1a; **3.6 空值的处理** 在前面的章节中&#xff0c;我们已经多次接触到了空值&#xff08;NULL&#xff09;的概念及其处理方式。在这一节中&#xff0c;我们将系统性地深入探讨空值的问题。 **定义&#xff1a;** 空值表示“不知道”、“不存在”或“无意…

云计算是什么?学习云计算能做什么工作?

很多人经常会问云计算是什么&#xff1f;云计算能干什么&#xff1f;学习云计算能做什么工作&#xff1f;其实我们有很多人并不知道云计算是什么&#xff0c;小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段&#xff0c;随着互联网和数字化…

介绍使用Photoshop制作ico图标

文章目录 说在前面安装制作插件制作ico 说在前面 Photoshop可以通过ICOFormat.8bi插件生成ico&#xff0c;但需要我们自行安装&#xff0c;安装过程很简单。 安装制作插件 下载地址&#xff1a; http://www.telegraphics.net/sw/ 下载完后解压文件得到下面这样的文件&#…

MySQL数据库的基本操作一

目录 什么是MySQL数据库? 数据库的基本操作 数据库操作 表操作 MySQL的增删改查 插入操作 查找操作 修改操作 删除操作 什么是MySQL数据库? MySQL 是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;目前属于 Oracle 公司。MySQL 是一种关…

Zalo是什么?海外推广怎么做?

zalo是一款海外流行的通讯软件&#xff0c;2012年正式发布&#xff0c;至今已经拥有约2亿的用户&#xff0c;分别在越南、美国、缅甸、日本、台湾、泰国、韩国、马来西亚、沙乌地阿拉伯、安哥拉、斯里兰卡、捷克、俄罗斯地区上架。 zalo的越南用户数量很多&#xff0c;是越南地…

实操指南|如何用 OpenTiny Vue 组件库从 Vue 2 升级到 Vue 3

前言 根据 Vue 官网文档的说明&#xff0c;Vue2 的终止支持时间是 2023 年 12 月 31 日&#xff0c;这意味着从明年开始&#xff1a; Vue2 将不再更新和升级新版本&#xff0c;不再增加新特性&#xff0c;不再修复缺陷 虽然 Vue3 正式版本已经发布快3年了&#xff0c;但据我了…

c++视觉处理---直方图均衡化

直方图均衡化 直方图均衡化是一种用于增强图像对比度的图像处理技术。它通过重新分布图像的像素值&#xff0c;以使图像的直方图变得更均匀&#xff0c;从而提高图像的视觉质量。在OpenCV中&#xff0c;您可以使用 cv::equalizeHist 函数来执行直方图均衡化。以下是 cv::equal…

Xcode 14.3.1build 报错整理

1、Command PhaseScriptExecution failed with a nonzero exit code 2、In /Users/XX/XX/XX/fayuan-mediator-app-rn/ios/Pods/CocoaLibEvent/lib/libevent.a(buffer.o), building for iOS Simulator, but linking in object file built for iOS, file /Users/XX/XX/XX/fayuan…

ASAN入门参考

目录 Asan 是什么&#xff1f; Asan 功能 缓冲区溢出 悬空指针&#xff08;引用&#xff09; 非法释放 内存泄漏 如何使用 实验环境 内存泄露检查 demo1 demo2 堆缓冲区溢出 栈缓冲区溢出 使用悬空指针 使用栈上返回的变量 使用退出作用域的变量/内存 重复释放…

逐字稿 | 对比学习论文综述【论文精读】

对比学习在计算机视觉领域的发展历程&#xff0c;4个阶段&#xff1a; 百花齐放&#xff1a;方法、模型、目标函数、代理任务都还没有统一。CV双雄&#xff1a;MOCOv1、SimCLRv1、MOCOv2、SimCLRv2、CPC和CMC的延伸工作、SwaV&#xff0c;这个阶段发展非常迅速&#xff0c;以上…

好莱坞编剧大罢工终于结束;与OpenAI创始人共进早餐;使用DALL-E 3制作绘本分享;生成式AI的基础设施架构 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 好莱坞编剧大罢工终于结束&#xff1a;简单说就是AI妥协了 https://www.wgacontract2023.org/the-campaign/summary-of-the-2023-wga-…

【Pytorch】深度学习之损失函数

文章目录 二分类交叉熵损失函数交叉熵损失函数L1损失函数MSE损失函数平滑L1(Smooth L1)损失函数目标泊松分布的负对数似然损失KL散度MarginRankingLoss多标签边界损失函数二分类损失函数多分类的折页损失三元组损失HingEmbeddingLoss余弦相似度CTC损失函数参考资料 学习目标&am…

CS配合frp上线

代理使用场景 1、拿下远程web服务器 2、webshell链接不稳定&#xff0c;需要使用稳定的木马程序 3、远程服务器无法直接链接攻击者电脑 4、需要借助公网vps转发来自失陷服务器的木马流量 5、借助frp服务端(vps)和客户端(内网攻击者)建立隧道 6、当vps某一个端口收到流量的…

Jenkins更换主目录

Jenkins储存所有的数据文件在这个目录下. 你可以通过以下几种方式更改&#xff1a; 使用你Web容器的管理工具设置JENKINS_HOME环境参数.在启动Web容器之前设置JENKINS_HOME环境变量.(不推荐)更改Jenkins.war(或者在展开的Web容器)内的web.xml配置文件. 这个值在Jenkins运行时…