自动化软件测试是任何软件组织都应执行的强制性活动之一,以保证其产品质量。 但是,此过程通常变得非常复杂,尤其是涉及由多个不同部分组成的现代复杂系统的自动化测试时。 所有这些部分都基于不同的技术,显然,应该使用不同的技术对其进行测试。 实际上,质量检查工程师会使用各种测试工具来对系统的每个部分进行测试,对整个系统进行测试,以执行不同的测试类型,例如功能,性能,集成等。每个测试工具都会产生自己的测试结果质量保证人员应该从不同来源收集所有数据并进行分析,以便能够对系统质量做出任何决定。 最好将所有内容放在一起并完全自动化这个复杂的过程。 这将提高测试自动化本身的质量,并允许在进行持续交付过程中进行自动化测试。
我已经发布了有关融合中间件应用程序FlexDeploy的新DevOps和CD工具的信息 。 我很高兴有机会看到该系统的beta版本(3.0),并且能够尝试一下。 除了许多其他很酷的功能,新版本还提供了测试自动化功能。 FlexDeploy 3.0成为功能强大的工具,可以控制测试自动化过程,并通过实现以下概念使其变得更加容易:
- 中央管理面板,用于执行,控制和监视组织中的所有自动化测试活动
- 从所有使用过的测试工具收集测试结果的中心
- 用于在整个组织中构建质量检查仪表板报告的中央工具,以制定“上线/不上线”决策
- 支持自动测试,这是CD流程中必不可少的步骤
在这篇文章中,我将重点介绍与测试自动化相关的FlexDeploy关键功能,这些功能可能有助于理解上述概念的实现方式以及其实际工作方式。
与第三方测试工具集成
实际上,FlexDeploy本身不会执行任何自动化测试。 这项工作将由大量的各种测试工具来完成。 FlexDeploy仅控制过程,并且显然能够与测试工具进行交互。 此交互最终完成以下任务:
- 执行测试
- 导入测试结果
与第三方测试工具的集成是通过使用插件来实现的。 此时,FlexDeploy 3.0仅提供JUnit和TestNG工具的插件。 但是,在即将发布的版本中,插件的范围将越来越广泛。 据我所知,诸如Oracle应用测试套件(OATS),Selenium,Test Complete等工具正在开发中。 实际上,如果FlexDeploy没有为某些测试工具提供现成的插件,我们可以始终使用Shell插件,该插件允许执行批处理脚本以与测试工具进行交互。
基本上,这些插件充当各种测试工具的适配器。 他们命令测试工具运行测试,并将测试结果导入统一的测试结果存储中。 这样就可以分析测试结果并构建仪表板报告,从而从确切的测试工具中抽象出来。
测试定义
FlexDeploy引入了“测试定义”的概念。 这种抽象表示与某个业务用例相关的一个或一堆测试用例。 例如,对于银行系统,我们可以定义测试定义,例如“贷款安排”,“贷款还款”,“逾期贷款”等。
基本上,FlexDeploy在运行自动化测试时,实际上是在一对一地运行测试定义。 每个测试定义依次使用相应的测试工具运行实际的测试用例。 它知道将要使用哪种测试工具,如何与之交互,应该使用哪些测试用例(在测试工具中定义),如何导入测试结果以及如何对其进行限定。 为了与测试工具进行交互,测试定义使用工作流程。 工作流是一种强大的机制,通常在FlexDeploy中用于执行构建和部署活动。 现在,它也用于自动化测试。
实际上,测试工作流程会调用插件与测试工具进行交互。 除了运行测试用例和导入测试结果外,测试工作流程还可以执行任何其他活动。 例如,在运行测试之前进行一些准备工作(例如预热阶段),或者在运行测试之后进行一些完成操作。
测试资格
测试定义能够分析测试结果并得出结论,无论测试运行成功与否。 此功能基于测试限定词。 测试定义可以包含许多测试限定符,例如“通过的测试用例数量大于X”,“失败的测试用例百分比小于Y”等。
如果在测试定义中定义的所有测试限定符均返回true,则认为测试运行成功。 FlexDeploy提供了一组预定义的测试限定符,但它们计划允许用户基于Groovy表达式定义自己的自定义限定符。
测试集
测试集只是一组测试定义。 例如,对于银行系统,我们可以定义测试集,例如“贷款”,“存款”,“外汇”等。测试集可以包含其自己的限定词,以检查整个测试定义集是否通过或失败。
测试执行
此时,可以手动执行自动测试:
或在部署过程中自动执行:
我想即将推出的FlexDeploy版本将允许独立于部署过程按计划自动执行测试。
每次测试执行(手动执行或在部署内执行)都会给出相应的测试结果:
仪表板
FlexDeploy 3.0提供了一个新的仪表板选项卡“ Test Automation”。 它表示跨环境的测试执行的通过/失败比率,测试运行的持续时间和响应时间:
该信息也可在项目定义的“测试自动化”部分获得。 在这种情况下,所有图表均基于与此项目相关的测试结果:
通过实施测试自动化功能,FlexDeploy 3.0在使连续交付流程完全自动化的道路上迈出了巨大的一步。 当然,仍有许多工作要做,但是它们已经建立了良好的基础,而该基础将在即将推出的FlexDeploy版本中通过新的测试自动化功能得到充实。
而已!
翻译自: https://www.javacodegeeks.com/2015/10/automated-software-testing-of-fusion-middleware-applications-with-flexdeploy.html