热饭的测开成果盘点第九期:白盒自动化平台热饭的测开成果盘点第九期:白盒自动化平台

简介: 本期介绍的是一个技术含量很变态的工具-白盒自动化测试。何为白盒测试?其实就是测试具体代码,有五种方式叫做五种逻辑覆盖率,比如路径覆盖/语句覆盖等。

平台背景:白盒测试手段可存在于最早期介入的测试阶段,所以发现bug后修复的成本最低,也是能找到代码层面上的bug的不二手段。有些同学会说,那不就是开发自测么?这个说法可完全错误,完整的白盒测试,先不要说自动化测试了,也不说执行,也别说设计用例。就单单理解测试的具体方法就让人觉得非常困难了。

我可以肯定,对于我们绝大多数人,拿出一段简单的代码,让其设计白盒用例,100个人应该一个最终完全正确的都没有。它难就难在,你好不容易理解并运用了 5种逻辑覆盖率的算法,但是最终的用例规程却更难,也就是说,你要用更少的用例去覆盖更多的场景。所以仅掌握5种是不够的,最难的是把5种融会贯通,合一。

比如我随手写的这个简单代码:

def abc(a,b):
  if a<b or a==0:
    print a
  else:
    print b

看似及其简单的一段代码,设计用例。我这里不专讲白盒,所以就给大家说一点,你设计的用例中,不能只保证路径法 满足if 和 满足else俩种。因为满足if 的情况 有多个。按照不同覆盖率的用例也是不同的。


语句覆盖 来举例子:

比如:【a=1 ,b=2】 ,满足if。

但是a==0这段代码并没有运行,所以不完整。

然后增加 【a=2,b=1】,这样a==0这个判断才会运行一次,但是它为假了,也不完整。

然后继续增加 【a=0,b=-1】,这样又是满足if,而且还运行了a==0这段判断。


但是 【a=0,b=1】 这条用例呢?很显然没用,a<b成立了,a==0就干脆没运行,那这个a=0失去了意义。有人说,但是【a=0 b=1】 走了print a这个场景啊。但是别忘了,在我们前面用例,可以用 【a=0,b=-1】 来代替。【a=0,b=-1】这条用例,即可走a<b 又可走 a==0 还可走 print a。这一条就可以 走完这三段语句,所以a=0,b=1就没用。


怎么样 是不是非常绕,别忘了,这还只是语句覆盖,还有其他四种逻辑覆盖,一个比一个难,而且能融汇到一起,用更少的用例 覆盖其他逻辑的场景,这个就更难了。就这么一个简单的if else ,就麻烦成这样,别说那么多复杂到看不下去的一大段一段,一层套一层的高复杂度算法了。就算博主敢拍着胸脯说精通多个测试领域技术,但是也不敢在白盒测试领域装大。可以说白盒测试精通的人的算法水平代码水平是远超一般开发和算法工程师的,全国范围内可能都找不到几个甚至根本不存在。


正是因为白盒难度如此之高,而且大部分时间收效甚微(比如这个一眼就看出没什么问题的if else判断 启动白盒5种覆盖率测试 性价比太低了) 所以我们很少看到公司搞白盒测试,甚至大厂都没有,就算有,也远达不到我上面说的 教科书一样的 程度,大部分都是代码走查,肉眼看一下没问题就行了,这种只是测试对象是代码,手段其实顶多和开发自测差不多,距离白盒测试差的很远。


所以博主在思考这种情况后,决定开发首次的真正白盒自动化测试算法,一开始就拿最擅长的python开刀了。


输入一段代码函数,可以自动生成五种覆盖率的用例。进行了长期的可行性分析和设计后,正式开始打造,最终终于打通了 语句覆盖率的最终技术,这证明博主的幻想成真了,这一切是可以实现的,全世界可能都是头一份,但是巨大的精力消耗和成本,加之公司后台用的并不是python,所以这个实现并没有实际产生收益,最终上层决定封存这套技术,留着以后继续搞。


平台如下:

微信图片_20220706160848.png微信图片_20220706160857.png微信图片_20220706160903.png微信图片_20220706160908.png微信图片_20220706160913.png平台目前已经雪藏,希望以后可以抽出时间重启。毕竟支撑评委csdn测试领域 为数不多的社区专家,就是靠这半套平台的核心设计。


相关文章
|
7月前
|
资源调度 测试技术 Linux
一款接口自动化神器—开源接口测试平台Lim(Less is More)
一款接口自动化神器—开源接口测试平台Lim(Less is More)
358 2
|
7月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
183 0
|
4月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
137 1
|
6月前
|
消息中间件 Kubernetes Kafka
AutoMQ 自动化持续测试平台技术内幕
Marathon 是一个针对流系统 AutoMQ 的自动化持续测试平台,旨在在模拟生产环境和各种故障场景中验证 SLA 的可靠性。设计原则包括易拓展、可观测和低成本。平台采用分布式架构,Controller 负责资源管理和任务编排,动态调整 Worker 数量和配置,而 Worker 是无状态的,用于生成负载和上报数据。系统基于 K8S,利用服务发现、事件总线和 Spot 实例降低成本并提高弹性。测试场景以代码形式描述,支持不同流量模型和断言,提供丰富的可观测性和告警功能。未来,Marathon 有望泛化为适用于各种分布式系统的测试平台。
60 0
AutoMQ 自动化持续测试平台技术内幕
|
7月前
|
弹性计算 运维 监控
【阿里云云原生专栏】自动化运维的艺术:阿里云云原生平台的自动化运维工具集
【5月更文挑战第28天】阿里云云原生平台提供全面的自动化运维工具,涵盖监控告警、资源管理、部署更新、故障自愈、安全管理和数据备份等方面,简化运维工作,增强系统稳定性。通过智能工具集,运维人员能专注于业务优化,实现高效运维,为企业数字化转型提供有力支持。
257 3
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
|
7月前
|
JSON 运维 监控
运维界的新宠!9.7K星认证的轻量级自动化平台等你体验
运维界的新宠!9.7K星认证的轻量级自动化平台等你体验
118 0
|
7月前
|
SQL 安全 BI
钉钉连接平台集成自动化让企业降本增效
钉钉连接平台(iPaas)具备强大的产品能力、丰富的解决方案、客户案例和权威认证
|
人工智能 自然语言处理 API
万媒易发:以RPA自动化和AIGC为基础实现多平台分发
在当今数字化时代,信息传播的速度越来越快,多平台分发成为了内容创作者们必须面对的重要挑战之一。为了解决这一难题,我们可以借助RPA(Robotic Process Automation)自动化和AIGC(Artificial Intelligence Generated Content)技术,实现高效的多平台内容发布。本文将介绍如何利用“万媒易发”工具来简化这一过程,提高内容分发的效率。
|
Web App开发 JavaScript 前端开发
如何使用浏览器自动化框架Playwright开发“万媒易发”实现多平台自动发布文章?
作为一名程序员和开发者,我深知在多个媒体平台手动发布和管理文章的痛苦。因此,我决定使用Playwright浏览器自动化框架,开发一款名为“万媒易发”的工具,实现多平台自动发布文章。下面我将分享这款工具的开发过程和成果,希望能对大家有所启发和帮助。