首页 > 其他分享 >【准则化的思想】如何创立一个新的测试充分准则

【准则化的思想】如何创立一个新的测试充分准则

时间:2024-08-22 11:28:12浏览次数:9  
标签:得分 变异 准则 充分 T1 测试 创立

如果现成的测试充分准则里面找不到可用的,我们可能就需要自己来创立一个新的准则。我们不知道历史上第一个面对深度神经网络系统的测试工程师是谁,但我们知道他在做测试设计的时候,肯定遇到过这个问题:现成的控制流覆盖准则或数据流覆盖准则都不能用,因为深度神经网络系统不同于传统的软件,它的结构要素不再是代码行或者变量的定义使用。这位工程师只能依靠准则化的思想,自己创立一个新的准则,比如我们现在所熟知的“神经元覆盖准则”。

要创立一个准则,我们需要做两件事:

① 建立价值观,也就是识别测试焦点,明确测试目标;

② 将价值观准则化,也就是设计一种具体的形式来约束和评价测试集,以实现测试目标。

准则的具体形式,包括判定型和度量型两种。判定型准则回答的问题是 ,一个测试集充分还是不充分:

度量型准则回答的问题是,一个测试集的充分度是多少:

显然,判定型准则可以看做是度量型准则的一种特殊情况:

比如,“语句覆盖率”是度量型准则,而“要求语句覆盖率达到100%”,就是判定型准则;再比如,“变异得分”是度量型准则,而“要求变异得分达到1”就是判定型准则。

自己创立一个测试充分准则——这件事听起来貌似很高大上,其实离我们并不遥远。在我们的日常测试工作中,我们经常在做这件事——我们经常会想:“好,测了这些用例应该就差不多了”。这种想法,其实就来自我们内心已经建立起的一些模糊的准则。

当然这种准则可能并不严谨,也不能通用。如果我们想提出一些高水平的准则,能够对测试充分性进行比较科学的度量,能在高级别的期刊会议上发表,得到业界的认可和推广,我们就需要在设计准则的时候,尽可能让它具备这样一些优良的性质:

我们用“变异得分”这个准则来解释一下这些性质:

  ① 归一性。意思是,准则给出的测试充分度结果,取值应在[0, 1]之间。同时,空集的测试充分度应为0,穷尽测试集的测试充分度应为1——变异得分是刨除等价变异体之后,被杀死的变异体占变异体总数的比例,所以取值一定在[0, 1]之间。如果测试集为空,肯定不能杀死任何变异体,变异得分是0;如果是穷尽测试集,肯定就能杀死等价变异体之外的所有变异体,变异得分就是1。

  ② 有限适用性。意思是,一定存在一个有限的测试集,能够满足给定的充分度指标——假设给定的变异得分指标是1,那是不是一定存在一个有限的测试集,能杀死所有非等价变异体呢?是的,因为如果一个变异体不是等价变异体,那就一定能找到一个用例杀死这个变异体。变异体的数量是有限的,所以需要的用例数量就是有限的。

  ③ 单调性。意思是,如果在测试集中补充了新的用例,测试集的充分度会提高,至少不会降低——补充用例,就有可能杀死更多的变异体,变异得分只会提高不会降低。

  ④ 次可加性。意思是,多个测试集的并集的充分度,不应该高于其各自充分度的加和——假设一共有5个非等价变异体A/B/C/D/E,测试集T1能杀死A和B,测试集T2能杀死B和C:

那么,T1的变异得分就是0.4,T2的变异得分也是0.4。而T1∪T2的变异得分是0.6,比T1和T2各自变异得分的加和要小。

  ⑤ 贡献递减性。意思是,已经完成的测试越多,接下来补充的测试对充分性的贡献就越小——假设还有一个测试集T3,能杀死C和D:

考虑两种情况。第一种情况是,先执行T1,执行完之后变异得分是0.4,然后执行T3,这时候变异得分会增加0.4;另一种情况是,先执行T1和T2,执行完之后变异得分是0.6,然后执行T3,这时候变异得分只会增加0.2。这就是贡献递减性。

标签:得分,变异,准则,充分,T1,测试,创立
From: https://blog.csdn.net/wkqyxyh/article/details/141423619

相关文章

  • 7年软件测试转行,可做什么工作呢?
    这是网友的一则发帖。笔者有很多成功从测试转行进入网络安全领域,这是一个既具有挑战性又有发展前景的职业方向。以下是几个步骤和建议来帮助你成功转型:了解行业:首先,研究网络安全的基本概念、领域分类(如网络防御、渗透测试、数据安全等),以及当前市场上的热门技术和职业角......
  • SAP Parallel Accounting(平行分类账业务)配置及操作手册【适用于多国家会计准则】
    1.配置准备1.1理解平行账概念平行账,也称为多分类账,是SAP系统中的一项功能,它允许企业按照不同的会计准则来维护各自的财务数据。这种设置特别适用于那些需要符合多种会计准则的跨国公司。通过平行账,企业可以在不同的分类账中记录相同的交易,但按照各自的会计政策进行处理。......
  • 【自动化测试必学语言】python:UnitTest框架
    目录介绍框架什么是UnitTest框架?为什么使用UnitTest框架?UnitTest核心要素(unitest的组成部分)1.TestCase(最核心的模块) 2.TestSuite3.TestRunner4.TestLoader5.FixtureTestCase(测试用例)问题1 代码文件的命名不规范问题2代码运行没有结果 问题3没有找到用例......
  • PostgreSQL的pg_dump中 --inserts参数测试
    PostgreSQL的pg_dump中--inserts参数测试1准备测试数据创建表yewu1.t1,并插入1000000条数据。white=#createtableyewu1.t1(idint,namevarchar(20));CREATETABLEwhite=#DO$$white$#DECLAREaaINTEGER;white$#BEGINwhite$#FORaaIN1..1000000LOO......
  • 2024暑假集训测试30
    前言比赛链接。T1普及了一下异或哈希,T2、T3赛时应该算乱搞题,还搞挂了,T4高级平衡树题,不太可做。原题全部出自:2022牛客OI赛前集训营-提高组(第四场)。T1博弈部分分\(30pts\):\(O(n^2)\)暴力。正解:不难推出必胜策略就是\((x,y)\)路径上每个边权出现的次数不全为......
  • Selenium + Python 自动化测试21(PO+HTML+Mail)
            我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。上一篇我们讨论了PO模式并举例说明了基本的思路,今天我们继续学习。        本篇文章我们综合一下之前学习的内容,如先将PO模式和我们生成HTML报告融合起来,综合的灵活的使用之......
  • RTX 40全系10款显卡《黑神化:悟空》测试:打开DLSS3帧生成 性能直翻4倍
    一、前言:《黑神话:悟空》临近发布RTX40系显卡表现如何?2020年8月20日,游戏科学发布了《黑神话:悟空》的首个实机演示预告,惊艳了整个游戏行业!以往,很多人认为国产开发商做不出优质的3A单机游戏,但是《黑神话:悟空》的出现,直接打破了这一固有观念!《黑神话:悟空》在8月20日10点正式解禁,......
  • 软件测试-web端测试-代码起步
    记录学习笔记第一步、导包web自动化测试常用selenium,这是必要的。fromseleniumimportwebdriver 第二步、确定要使用的浏览器浏览器有很多,常用Chrome,这里看你下载的webdriver是谁的,我用的是edge。用谷歌,那就把Edge改为Chrome,用火狐就改为Firefoxdriver=webdriver.Ed......
  • 软件测试-web自动化测试-前期环境搭建
    记录学习笔记web端自动化测试也就是网页自动化测试。主要在PyCharm软件里编写代码,前期需要准备python+selenium的基础环境搭建。1、下载安装python,下载最新版检查环境:在cmd里python -v和pip -v可以正常出现。√2、PyCharm安装,下载社区免费版直接next安装即可,打开软......
  • SQL手工注入漏洞测试(MongoDB数据库)
    此次靶场地址为:墨者学院⼀.如下给出的源码...可以看到数据库查询的语句如下..构造回显测试... new_list.php?id=1'});return({title:'1',content:'2⼆.成功显示“1”和“2”。可以在此来显示想要查询的数据。接下来开始尝试构造payload查询当前数据库。通过回显观......