接口测试平台番外:正交工具过滤功能-1

简介: 不知道榜一大哥在哪看到有人分享一个正交工具,有过滤功能。就是在正交生成的一系列用例之后,人为手动再过滤掉一些不要的,不可能出现的用例。就这么一个过滤功能,被榜一大哥看到了,找我要给接口测试平台番外-正交小工具也加上这个功能(不惜重金)。

其实我一开始是不想加的,过滤功能,我也不是没想过。但是有违测试基本理论,而且会有极大的风险,所以很多年前我就判断不能加这个过滤功能。不过既然榜一大哥作为金主,要求了,那咱就加!反正管加不管埋!有风险就有风险!


   下一节会给大家具体实现这个功能,这一章,就来说说,为什么正交工具不能加最后的过滤功能。


   这个过滤功能,冷不丁的一看,哇塞,太人性化了,真的是个很好的设计。但是如果你精通测试理论就会知道,其实这么做不对,但是也仅仅是理论上的风险,实际使用中,这样过滤的益处会大于弊端,综合考虑还是可以做的,但是我们要明白,要懂里面的原理才能放心。


   首先,我们先要明白正交法,是什么,能用在哪里 这些基础理论!


在处理,多个输入条件的功能时,为了整理出各种各样的用例,诞生了俩种对立的方法:正交表  和 判定表


多个输入条件之间,如果有逻辑关联,那么必须只能用判定表,判定表相当于穷举然后过滤,虽然麻烦,但是可以保证一个不漏。


多个输入条件之间,如果没有逻辑关联,那么可以用正交,当然穷举所有可能的组合是最安全的,但是数量太庞大的时候,可以用正交来进行一定程度的删减,正交删减后的结果,只保证了 任意俩个条件的任意子状态都出现在同一条用例里,来测试 会不会有这种冲突出现。从程度和经验分析,这种其实并不100%安全,但却是性价比最高的手段。


举例子:word文档打印功能


输入有以下几个条件 和 对应的子状态:


纸张大小:A3,A4,A5

颜色:黑白,彩色

面数:单面,双面


在这三个条件中,如果我们穷举所有用例,那么一共是如下:

3*2*2 = 12种情况。


正交的话,只有:

A3- 黑白-单面

A4-彩色-双面

A5-彩色-单面

A5-黑白-双面

A4-黑白-单面

A3-彩色-双面


微信图片_20220706205555.png

(表由工具和专业算法生成,结果放心。)


只有6种,而这6种却包含了任意俩个条件的子状态 都一起出现这个情况。在日常实际中,这个可以覆盖绝大多的bug了,算是比较成功的技术。



不过过滤功能是怎么回事呢。比如榜一大哥的需求中说,A3纸,不能和黑白颜色去匹配,没有这个情况。

然后过滤功能就自动去掉这个情况的用例了,或者压根不去这么匹配。这个风险在哪呢?


这个风险就在于,为什么榜一大哥会有这样奇怪的规定! 因为只要有这种规定,就意味着这些输入条件之间,是有逻辑关系的!而根据正交的定义,这种情况,是不能用正交的!

   为什么呢?因为一旦出现逻辑关系,那么他们的bug发生概率会非常非常高,远高于无关联的。而正交工具本身的存在就是删减了大部分用例,这些被删除的用例中也一定带着逻辑关联的输入组合,这里面大概率会有很多bug,而却全被正交给自动删除掉了,此时的风险是很大的。

   所以这种情况正交不能用也不敢用,只能用判定表也就是穷举。这也是为什么判定表会存在。如果正交那么可靠,能处理有逻辑关联的输入,那么谁还会写判定表穷举呢?


   而且,上面原因只是其一。


   其二是 ,一但过滤掉 比如A3-黑白这个选项,那么第一条用例就没了,也就是说 后面那个“单面” 也没无情删掉了,整个结果中,A3 - 单面  这组合也相当于都没有了,万一 A3和单面配合也会出现bug呢?


   结论:有逻辑关联的输入,用正交风险高。而在正交结果中再次删减过滤,则风险更高。

   真正可以放心的过滤功能应该在判定表上,也就自动穷举后再过滤。


   不过上述的风险,只是存在于理论中,100个bug 也许因为你的正交过滤漏掉了一个。但是你获得的收益却很高,可以让测试用例减少很多个,减轻很多工作量,提高效率。

相关文章
|
26天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
18天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
122 17
Selenium:强大的 Web 自动化测试工具
|
28天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
42 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
51 2
|
10天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
53 11
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
65 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
270 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
287 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
58 5