精准测试与自动化测试的无缝对接

简介: 导读:自动化测试曾被软件测试业界视为“救赎式银弹”,但随着项目越来越庞大,测试用例集变得越来越臃肿,查错能力却越来越弱,最后甚至成为QA部门沉重的包袱。本文主要以Junit为例,介绍如何在不改变原有自动化操作流程的情况下,对原有技术进行“精准测试“的技术升级,使覆盖率可视化、回归用例自动选取等先进特.

 现代的专业软件测试中心,随着项目的迭代,通常针对每个系统构建了大量的自动化测试用例集,而启动一次全量的自动化测试以CI级触发,使之大比率通过,非常困难。测试工程师们常常需要投入很高的成本,把大量精力花在自动化用例失败排查上面,然而发现有效BUG的概率很低。在反复排查无果、心神俱疲的情况下,几乎对自动化产生绝望之心,视之为鸡肋,用之无用,弃之可惜,让测试中心极为头疼。
 
 如何让自动化用例发挥它们应有的效用,让QA工作不那么沉重呢?星云测试针对这一难题,进行了精准测试与自动化测试无缝对接的技术方案研发。经过大量企业实施与验证,精准测试的数据流最终可以“无感”对接到自动化测试中,极大扩展了自动化测试的优势,彻底改进了自动化测试变更管理难的短板。
 
 这一技术方案的推出,就像给自动化测试装上“精准测试”的眼睛和翅膀,瞬间就具备了多种飞跃功能。比如:
 1) 自动化测试用例与源码自动建立关联
 2) 同步进行智能回归用例选取
 3) 有效缩小自动化测试执行范围
 4) 即时分析需要进行维护的测试用例集合
 5) 全自动追踪每个测试用例的执行代码路径
 6) 当自动化执行结束后可辅助直接定位自动化用例的代码出错点
 7) 对自动化测试用例集进行分析,例如聚类分析,以及最小用例集合分析等
 8) 对测试用例集的优化给出指导意见
 9) 给出测试用例集运行的总体覆盖率信息
 10) 协助有效的对用例集进行增补
 11) 增量代码覆盖率分析等等。
 
 本文重点以星云精准测试产品与单元测试框架JUnit为例进行说明。
 
 单元测试一般通过写测试用例来测试:核心类方法,异常处理,业务逻辑等。实现Junit单元测试与精准测试的无缝对接后,基本可以确保真正的测试充分性。因为在运行单元测试用例的时候,精准测试系统中将自动生成相应测试用例,并将每个单元测试的代码覆盖情况详细的记录到精准测试系统中,由于精准测试自带测试用例与代码相互追溯以及覆盖率可视化的特性,你可以对当前所写的单元测试是否充分,一览无余。
 
下图是精准测试与Junit单元测试无缝对接实现自动化测试的架构示意图。

  该方案主要特点是:充分利用了JUnit框架的继承特性,所有精准测试必要的通信和控制逻辑可以全部通过基类实现。也就是说,对于原来所有自动化测试用例集,只需要增加一个对于封装的ParentTest的继承。即:不需要对原有测试用例的实现代码做任何改动,就可以实现与星云精准测试平台的对接。对接完成后,JUnit测试的运行过程中,测试用例会自动的在星云精准测试系统中创建,并且全自动记录每个自动化测试用例的代码覆盖信息。
 
  下面是对ParentTest扩展基类主要方法的描述,该解决方案主要针对Junit框架自身的注解方法进行扩展:
@Before:初始化方法对于每一个测试方法都要执行一次,在每个测试方法之前执行,@After:释放资源,在每个测试方法之后执行,@BeforeClass:在当前类的所有测试方法之前执行,@AfterClass:在当前类中的所有测试方法之后执行。一个JUnit4的单元测试用例执行顺序为:
 
 @BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
 
 因此可针对这个特性在不同注解代码中进行定制,定制一个公共的类,当其他的单元测试都继承自该类时,也运行相同的方法。通过在不同注解中添加登录版本,创建测试用例并开始,结束测试用例以及登出版本命令,并发送至TTFront组件实现与TT的交互,并不影响单元测试本身的测试程序和测试结果。
 
 TTfront在接受到命令后,登录对应版本并记录用户名,创建完成测试用例后当测试用例运行时刻通过软件示波器实时采集该测试用例对应的覆盖率数据,将该部分数据通过用户名匹配到该测试用例。在TT客户端可以看到测试用例以及该单元测试对应的函数覆盖情况以及代码覆盖情况。
 
 只需要在创建单元测试的时候类继承自已经封装好的ParentTest类,即可与TT无缝对接实现自动化测试。
 Junit单元测试与TT对接的实施案例以及效果图:
 1、创建测试用例时继承自ParentTest类

 2、修改ParentTest中的项目,版本,用户密码以及TT服务端IP

 3、对应修改引入的包(以mvn项目为例),JavaPaser包主要包含了插装代码以及ParentTest类必须要的TT处理逻辑需要的库的引用。

对被测试代码通过TT进行插装打包,注意Junit自动化测试用例代码不需要插装,只需要插装Junit测试的业务逻辑代码即可。
 4、开始单元测试,在测试用例执行过程中,打开TT客户端示波器组件,显示实时采集的覆盖率波形,看到测试用例在TT系统中自动建立。TT客户端效果图(生成对应测试用例以及该测试用例的覆盖情况)


 以上讲述了精准测试系统如何无缝与现有自动化测试框架的对接。除了Junit,其他自动化测试框架,均可以参照此思路进行实现(登录星云网站www.teststars.cc 离线企业测试中心即可免费试用)。精准测试系统与自动化进行对接后,可以使无法看清的黑盒状态中的自动化测试执行,变得有迹可循。基于精准测试强大的测试分析系统,可以对自动化测试执行和规划进程进行持续的优化,这一方案,可以有效解决自动化测试的投入产出比居高不下的业界难题。

相关文章
|
3天前
|
存储 人工智能 测试技术
python自动化测试实战 —— CSDN的Web页面自动化测试
python自动化测试实战 —— CSDN的Web页面自动化测试
194 0
|
3天前
|
Web App开发 设计模式 测试技术
python自动化测试实战 —— 自动化测试框架的实例
python自动化测试实战 —— 自动化测试框架的实例
15 0
|
3天前
|
监控 数据可视化 IDE
python自动化测试实战 —— 单元测试框架
python自动化测试实战 —— 单元测试框架
19 2
|
3天前
|
测试技术 BI Python
【如何学习Python自动化测试】—— HTMLTestRunner 生成测试报告
【如何学习Python自动化测试】—— HTMLTestRunner 生成测试报告
9 0
|
3天前
|
IDE Java 测试技术
【如何学习Python自动化测试】—— 自动化测试环境搭建
【如何学习Python自动化测试】—— 自动化测试环境搭建
3 0
|
3天前
|
敏捷开发 开发框架 自然语言处理
深入理解软件测试中的自动化框架选择
【5月更文挑战第12天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键组成部分。选择合适的自动化测试框架对于实现有效的测试策略至关重要。本文将探讨在选择自动化测试框架时应考虑的关键因素,包括框架的可扩展性、易用性、社区支持和集成能力。通过分析比较Selenium、Appium和TestNG等流行框架的特点,本文旨在为读者提供一个清晰的指南,帮助他们根据具体的项目需求做出明智的选择。
|
3天前
|
数据采集 编解码
LabVIEW开发教学实验室自动化INL和DNL测试系统
LabVIEW开发教学实验室自动化INL和DNL测试系统
|
3天前
|
JSON 前端开发 JavaScript
快照测试在前端自动化测试中的应用
在前端自动化测试中,快照测试常用于检验组件渲染与布局。
|
3天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
16 1
|
3天前
|
机器学习/深度学习 数据采集 敏捷开发
探索软件测试中的AI驱动自动化:未来趋势
【5月更文挑战第6天】 随着人工智能(AI)技术的不断进步,其在软件测试领域的应用正变得日益重要。本文将探讨AI如何革新现有的软件测试流程,并预测其对未来测试实践的影响。我们将深入分析AI在测试用例生成、缺陷预测以及测试执行等方面的应用,并讨论实现这些技术的挑战和潜在好处。文章的目标是为读者提供一个清晰的视图,展示AI如何增强测试效率和有效性,同时指出实施过程中需要注意的关键因素。