IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 关于精准测试的一点思考 -> 正文阅读

[开发测试]关于精准测试的一点思考

  精准测试是现代软件测试面临的一个重大挑战。这个挑战来源于两方面的背景。

  一,软件测试资源有限。如何提高资源利用率,减少资源浪费,有针对性而不是漫无目的地进行软件测试?

  二,软件测试复杂度高。如何克服各种不确定因素,让软件测试真正能够发现并且不误报,不漏报软件缺陷(bug)?

  软件测试是一个系统工程。因此,精准测试并不是单一或孤立的,而是贯穿于软件测试全过程全方位的需求。在实践中,根据内容不同,可以将精准测试至少划分为以下几种类型:

  一,精准测试管理。测试管理主要包括对各种资源,包括人员,时间和基础设施的调度,并完成测试计划和测试策略的制定。精准测试管理,要求我们制定合理的测试计划和正确的测试策略,以此指导测试工作执行。

  二,精准测试对象。在开展软件测试之前,明确SUT(system under test,即被测对象)的范围,是首要的事情。SUT划定了测试边界,有利于测试"火力"的集中。另外,在敏捷模式下,由于软件频繁更新,全量测试的成本高,耗时长。这时,只针对新增或修改的代码进行差量测试,是一种更精准更高效的做法。

  三,精准测试过程。测试过程的精准性,主要体现在测试用例的有效性。衡量测试有效性的重要手段是覆盖率,包括代码覆盖率和需求覆盖率。通过度量覆盖率,识别覆盖率不足的地方,并有针对性地进行弥补,是提高用例有效性的推荐做法。另外,当测试发现缺陷时,如何快速准确定位缺陷产生的原因,也是提高测试过程精准性需要考虑的。

  四,精准测试结果。测试是为发现软件缺陷而存在的。测试结果的精准性,衡量的就是测试发现软件缺陷的真实能力。同时,作为硬币的另一面,测试不误报实际上不存在的缺陷,也是要考虑的。

  实现精准测试,应当兼顾以上四方面内容。本文由于篇幅所限,我们重点探讨第四方面,即测试结果的精准性。毕竟,这是一切测试工作的出发点和落脚点。

  要提高测试结果的精准性,首先要有一种度量测试结果精准性的机制。这里,参考算法理论中评价分类算法的惯用手段,我们约定如下术语,并将测试结果划分为四种类型:

  一,True Positive(TP)。当软件存在缺陷时,测试用例失败。这是一种期望结果。

  二,True Negative(TN)。当软件不存在缺陷时,测试用例成功。这也是一种期望结果。

  三,False Positive(FP)。当软件不存在缺陷时,测试用例失败。这不是一种期望结果,因为出现了误报。

  四,False Negative(FN)。当软件存在缺陷时,测试用例成功。这也不是一种期望结果,因为出现了漏报。

  根据这四个术语,可以衍生出一系列度量测试结果精准性的指标,例如:正确率(accuracy, TP+TN / TP+TN+FP+FN),精度(precision,TP / TP+FP),召回率(recall, TP / TP+FN)等。这些指标各有长处和不足,我们暂且不展开讨论。

  这些指标有一个共同点,那就是如果要得到优化,需要从减少False Postive或False Negative两类非期望的测试结果着手。那么,这两类测试结果分别有什么危害,又应该如何减少呢?

  先看False Positve,即误报缺陷的情况。误报的危害主要两个。一是浪费大家的时间和精力,去分析原本并不存在的缺陷;二是降低了测试结果的公信力。这就好比"狼来了"的故事,当测试结果经常出现误报时,大家会对测试失去耐心和信任,而后果可能是真正的缺陷被忽视。

  如何减少False Positive的情况?一方面,我们需要设计好测试的前置条件,只有前置条件全部满足了,我们才开始正式执行测试步骤。另一方面,我们需要提高测试环境,测试依赖库和测试脚本的质量与稳定性,让它们足够健壮和可靠。

  再看False Negative。从某种程度上说,False Negative是比False Positive更严重的结果。漏报缺陷,最好的结果是我们能在后续测试阶段发现它,而最坏的结果是缺陷一直到软件部署后,用户规模使用时才爆发,从而造成巨大的商业损失。

  如何减少False Negative的情况?一种常见做法是借鉴"变异测试"的思想,故意在软件中插入错误代码,然后观察测试用例是否发生期望之中的失败。在测试驱动开发(TDD)和探索性测试中,这种做法经常被使用。另外,为了提高测试覆盖面,还可以随机化数据或参数,以验证软件是否能够在无数的输入组合下工作。

  这里,针对False Positve和False Negative两种异常结果,简要介绍了各自的应对方法。从根本上说,要提高测试结果精准性,要做好以下两项长期性工作。

  一,在设计和实现测试用例时,提高思维的严谨性。多思考和反问一个基本问题,那就是如果软件失败,测试用例是否能够检测得到?是否应该添加更多的检验条件和规则?

  二,在项目实施过程中,做好测试监控工作。基于大量测试用例历史执行数据,我们可能发现许多改进测试的机会。例如,对那些永远都不失败的测试用例,需要考虑其存在的合理性;对于在同一个软件版本上时而成功时而失败的测试用例,需要分析其背后的原因。

  以上就是我对精准测试,尤其是如何提高测试结果的精准性的一点思考。总的来说,精准测试挑战大,问题多,这篇文章只是开了一个头而已。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:49:55  更:2022-05-05 11:51:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:42:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码