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

简介: 导读:自动化测试曾被软件测试业界视为“救赎式银弹”,但随着项目越来越庞大,测试用例集变得越来越臃肿,查错能力却越来越弱,最后甚至成为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 离线企业测试中心即可免费试用)。精准测试系统与自动化进行对接后,可以使无法看清的黑盒状态中的自动化测试执行,变得有迹可循。基于精准测试强大的测试分析系统,可以对自动化测试执行和规划进程进行持续的优化,这一方案,可以有效解决自动化测试的投入产出比居高不下的业界难题。

相关文章
|
1天前
|
JSON 前端开发 JavaScript
快照测试在前端自动化测试中的应用
在前端自动化测试中,快照测试常用于检验组件渲染与布局。
|
2天前
|
测试技术 API
探索软件测试中的自动化工具与挑战
本文探讨了软件测试领域中自动化工具的应用与挑战。通过分析目前主流的自动化测试工具,探讨了其在提高测试效率、减少人工成本、增强测试覆盖率等方面的优势。然而,自动化测试也面临着诸如脆弱性、维护成本高等挑战。最后,提出了一些应对挑战的建议,以期为软件测试领域的自动化工作提供一些启示。
9 1
|
2天前
|
机器学习/深度学习 数据采集 敏捷开发
探索软件测试中的AI驱动自动化:未来趋势
【5月更文挑战第6天】 随着人工智能(AI)技术的不断进步,其在软件测试领域的应用正变得日益重要。本文将探讨AI如何革新现有的软件测试流程,并预测其对未来测试实践的影响。我们将深入分析AI在测试用例生成、缺陷预测以及测试执行等方面的应用,并讨论实现这些技术的挑战和潜在好处。文章的目标是为读者提供一个清晰的视图,展示AI如何增强测试效率和有效性,同时指出实施过程中需要注意的关键因素。
|
4天前
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成
【5月更文挑战第4天】随着人工智能(AI)技术的飞速发展,其在软件测试领域的应用也日益广泛。特别是在自动化测试过程中,AI技术能够显著提高测试用例的生成效率和质量。本文将探讨AI在自动化测试用例生成中的应用原理、优势以及面临的挑战,并展示通过AI技术优化测试流程的实际案例。
30 8
|
7天前
|
机器学习/深度学习 人工智能 算法
深入理解与实践:基于AI的软件测试自动化
【5月更文挑战第1天】随着人工智能的不断发展,其在软件测试中的应用也日益广泛。本文将探讨如何利用AI进行软件测试自动化,包括其理论基础、实现方式以及在实际中的应用。我们将通过实例分析,展示AI在提高软件测试效率和质量方面的巨大潜力。
|
8天前
|
前端开发 测试技术 持续交付
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
【4月更文挑战第30天】本文探讨了 Flutter 应用中UI测试和自动化测试的重要性,包括保障质量、提高效率和增强开发信心。Flutter提供`flutter_test`库进行Widget测试,以及`flutter_driver`进行集成测试。UI测试涵盖界面布局、交互和状态变化的验证,最佳实践建议尽早引入测试、保持用例简洁,并结合手动测试。未来,随着Flutter技术发展,UI测试和自动化测试将更加完善,助力开发高质量应用。
【Flutter 前端技术开发专栏】Flutter 中的 UI 测试与自动化测试
|
8天前
|
敏捷开发 设计模式 监控
深入探究软件测试中的自动化边界
【4月更文挑战第30天】 在追求高效与质量保障的软件开发领域,自动化测试已成为一个不可或缺的环节。本文旨在探讨软件测试自动化的实践边界,通过分析自动化测试的优势与局限,为测试工程师提供决策依据。文中不仅讨论了自动化测试适用的场景、面临的挑战,还提出了增强自动化测试效果的策略建议。
|
9天前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发
|
9天前
|
机器学习/深度学习 人工智能 算法
深入分析自动化测试中AI驱动的测试用例生成技术
【4月更文挑战第29天】随着人工智能技术的不断发展,其在软件测试领域的应用也越来越广泛。本文主要探讨了AI驱动的测试用例生成技术在自动化测试中的应用,以及其对提高测试效率和质量的影响。通过对现有技术的深入分析和实例演示,我们展示了AI如何通过学习和理解软件行为来自动生成有效的测试用例,从而减少人工编写测试用例的工作量,提高测试覆盖率,降低错误检测的成本。
|
10天前
|
Java 测试技术 数据库连接
软件测试中的自动化工具及其应用
传统的软件测试方法已经不能满足日益增长的软件开发需求,因此自动化测试工具应运而生。本文介绍了几种常用的自动化测试工具,并探讨了它们在软件测试中的应用及优势。
7 0