接口测试平台番外:正交工具过滤功能-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 也许因为你的正交过滤漏掉了一个。但是你获得的收益却很高,可以让测试用例减少很多个,减轻很多工作量,提高效率。

相关文章
|
5天前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
11天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
42 3
|
14天前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
65 1
|
1月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
49 2
|
14天前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
40 0
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
63 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
244 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
253 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
49 5
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0
下一篇
无影云桌面