软件自动化测试成功之道

测试是软件开发的一个重要但经常被低估的部分。 从定义上说,测试是具有挑战性的。 如果容易发现错误,那么它们就不会存在。 测试人员必须跳出框框思考,以发现其他人遗漏的错误。 在许多情况下,了解应用程序的业务领域对于有效测试至关重要,这是对应用程序本身的详细了解。

在开源项目中,质量通常由贡献者和协调架构师来解决。 单元,组件和服务的测试通常有效且自动化良好。 即使做出了许多贡献,这也使项目得以前进。 具有足够范围和深度的全面自动化测试有助于保持产品稳定。

尽管一些开源项目是通过分散人员的积累来开发的,但面向DevOps的项目可能会采用Scrum或看板方法,其中包括同步开发和发布。 此过程还严重依赖于测试的全面性及其无缝自动化。 每当有新版本时(它可以像检入单个源文件一样小),测试应该能够验证系统没有损坏。 同时,这些测试也不应自行中断,对于基于UI的测试而言,这并非微不足道。

迈克·科恩(Mike Cohn)在他的书《 成功与敏捷》中提出的测试金字塔将UI定位为测试的最小部分。 大多数测试应集中在单元和服务或组件级别。 它使更好地设计测试变得更加容易,并且在单元或组件/服务级别的自动化趋向于变得更加容易和稳定。

我同意这是一个好策略。 但是,从我在各种项目中观察到的结果来看,UI测试仍然是重要的一部分。 例如,在网络世界中,诸如Ajax和AngularJS之类的技术的可用性使设计人员能够创建有趣且高度交互的用户体验,其中应用程序的许多部分都经过测试。 UI权限Web应用程序的最终示例是单页应用程序 ,其中所有或大部分应用程序功能都在单个页面中呈现给用户。 UI的复杂性可以与更传统的客户端服务器应用程序相媲美。

因此,我想在图片顶部留出更多空间,使其看起来像这样:

即使对于UI自动化,技术方面也可能非常简单。 有简单的开源工具(如Selenium )和更全面的商业工具(如我们自己的TestArchitect) ,它们可以与UI交互,从而模仿用户对被测应用程序的行为。 通过UI进行的测试通常还与非UI操作(例如服务调用,命令行命令和SQL查询)混合在一起。

UI测试的问题来自维护。 UI设计或UI行为的微小变化会淘汰大量与之交互的自动化测试。 常见原因是无法找到界面元素或UI响应操作的意外等待时间。 然后,由于错误的原因而避免了UI自动化:无法使其正常运行。

让我描述一些可以减轻这些问题的步骤。 测试设计是成功实现自动化的良好基础。 设计测试的方式对其自动化有很大影响。 换句话说,成功的测试自动化并不是技术挑战,而是测试设计挑战。 正如我所看到的,一个好的测试设计有两个主要层次:

  • 测试的总体结构
  • 个别测试用例的设计

对于测试的结构,我们遵循模块化方法,这与应用程序的设计方式类似。 测试用例在测试模块中组织。 像书中的章节一样思考它们。 我们有一些详细的模板来做到这一点,但是至少您应该尝试区分业务测试和交互测试。 业务测试将查看业务对象和业务流程,并隐藏任何UI(或API)导航详细信息。 交互测试着眼于用户或其他系统是否可以与被测应用程序进行交互,因此关注UI详细信息。 关键目标是避免将交互测试和业务测试混在一起,因为交互测试的详细级别将使它们难以理解和维护。

一旦确定了测试模块,便可以随时开发它们。 通常,业务测试可以尽早开发,因为它们更多地取决于业务规则和事务,而不是应用程序如何实现它们。 当团队定义UI和API时,可以创建交互测试。

另一有效的步骤是使用域语言方法,例如行为驱动开发(BDD)或操作(关键字)。 在BDD中,方案以接近自然语言的格式编写。 “操作”是预定义的操作和检查,描述了测试中要采取的步骤。 在我们的基于动作的测试(ABT)方法中,它们以电子表格格式编写,以使其比用编程语言编写的测试更易于阅读和维护。 由于我注意到动作比句子更具体,更易于管理,因此我创建了一种工具,可以灵活地在两种格式之间来回转换,并结合了两种优势。 您可以在我为Techwell Insights撰写的文章中了解有关BDD和操作的更多信息。

此图概述了如何在ABT中组织测试,以及测试模块及其中的操作。 注意交互测试和业务测试的区别。 自动化专门专注于自动化操作。

定义自动化成功的另一个主要因素是可测试性。 您的应用程序应该将测试作为一项关键功能而变得容易。 敏捷团队特别适合实现这一目标,因为产品所有者,开发人员,质量保证人员和自动化工程师可以合作。 但是,开源项目不一定有这样的团队,产品所有权必须定义可测试性。

有关可测试性的更多信息,请查看我为TechWell Insights撰写的这篇文章 。 如此处所述,可测试性的主要方面是:

  • 应用程序的总体设计(具有清晰的组件,层,服务等)
  • 特定功能(例如API挂钩或“就绪”属性,以帮助进行计时,UI元素的清晰且唯一的标识属性,以及白盒访问数据和事件,甚至不显示它们)

自动化尤其是通过UI可能具有挑战性。 但是,由于它很困难,因此不能避免,也不应该避免。 项目中所有参与者之间的合作可以带来稳定,可维护且效率不高的良好结果。

翻译自: https://opensource.com/business/16/4/what-makes-test-automation-successful

软件自动化测试成功之道

软件自动化测试成功之道_是什么使测试自动化成功?相关推荐

  1. 牛客网软通动力软件测试机试_软通动力测试工程师笔试题

    此面试题转自网络,本人只做学习参考,无其他用意,证明软件错误不存在 B)证明软件错误的存在 C)改正程序所有的错误 D)发现程序所有的错误 2.对于软件质量描述不正确的是:( ) A)高质量的过程产生 ...

  2. 声学测试软件手机版_免费5G SA测试软件“网络优化资源服务助手”2.0版全新上线,新增多种功能!(附下载方式)...

    "网络优化资源服务助手APP"2.0版全新上线 在本主编上次推出1.3版后,该APP经过1.4,1.5,1.6,1.7,1.8,1.9版本迭代,现在2.0版正式上线,软件优化了很多 ...

  3. python接口自动化测试书籍_干货丨Python接口测试自动化实战及代码示例:含get、post等方法...

    引言:年初参与到一个后台系统开发的项目中,里面涉及了很多接口,我做为项目组测试人员,需要对这些接口进行测试,一开始使用 postman 工具测试,很是方便.但随着接口数量的增加,不光要执行手动点击测试 ...

  4. 自动化测试和测试自动化你分的清楚吗?

    目录 目录 前言 两种自动化测试 为什么测试自动化对连续测试至关重要 使测试自动化成为现实 拥抱连续测试 总结 前言 当我们谈论持续测试,以及持续交付和DevOps时,"自动化"一 ...

  5. 软件自动化测试——入门、进阶与实战

    <软件自动化测试--入门.进阶与实战> 基本信息 作者: 杨莉 杨合生 陈昱旻 张捷 郭宏林 孙健 连小剑 侯战友 [作译者介绍] 出版社:电子工业出版社 ISBN:97871211849 ...

  6. 软件自动化测试工具有哪些?手工测试与自动化测试应用场景区别

    常用的软件自动化测试工具有哪些?对于企业测试人员来说,工欲善其事必先利其器,了解软件测试工具能够更好的开展测试工作,为整体软件测试方案形成打下良好的基础.卓码软件测评小编整理了关于软件手工测试与自动化 ...

  7. 为了可持续的测试自动化,透过表面看本质(译)

    当提到可接受的测试自动化,最重要的一步是在适当的位置有一个适当的测试自动化团队框架.这篇文章对一些不同的自动化测试适用场景有一些已证明的项目--由一个自动化或者回归团队主导,以敏捷的适应性--帮助组织 ...

  8. 第六周作业----测试自动化工具

    QTP全名HP QuickTest Professional software ,最新的版本为HP QuickTest Professional 11.0QTP是quicktest Professio ...

  9. 测试自动化中遵循的最佳实践

    现在的企业从以往一年.一个月.一周交付,逐渐转变为开始关注两到三天甚至一天内交付.软件自动化测试的出现及其与手动测试的结合使得这种时长的交付成为可能. 及时的软件测试会发现问题,在功能到达用户之前对其 ...

最新文章

  1. 《spring揭秘》读书笔记二
  2. 网络:301和302
  3. C# 中的yield使用
  4. AJAX:校验用户名是否被注册
  5. 跨越解决方案之nginx
  6. oracle 内存分配,Oracle调优修改10g,11g内存分配
  7. 螺旋方阵(Leetcode第59题)
  8. 【数据库】Mean web开发 05-Linux上配置MongoDB自动启动及远程连接
  9. Java学习手册:Java基础知识点(不断扩充更新中)
  10. hp 816、817 墨盒计数器清零图文教程
  11. ADNI-MRI-PET-ANALYSIS
  12. android tee os,有关OP-TEE - 中文社区论区 - 中文社区 - Arm Community
  13. 史上最完整的Android开发工具集合(附带下载地址)
  14. 可见首发《模式识别与智能计算:MATLAB技术实现(第2版)》 百度网盘 下载 分享
  15. Unity动态天空shader实现
  16. 精读《图解密码技术》——第十章 证书
  17. 2021-02-02美赛前MATLAB的学习笔记(机器学习(分类、聚类、深度学习))
  18. Android Studio 默认keystore 以及自定义keystore
  19. 领英如何发布动态与查看自己一共发了多少条动态
  20. 【2022年华为杯数学建模E题赛后总结加思路详细介绍配代码----10月11号写的总结】

热门文章

  1. Spring Boot + SpringSecurity + JWT 实现简单的 restful Api 权限控制
  2. 将PostgreSQL数据库扩展到每个月12亿条记录的经验教训
  3. PHP扩展库PEAR被攻击,近半年下载者或被影响
  4. css中字间距调整(转)
  5. freebsd内核编译、优化
  6. Windows开启SNMP服务----Win7
  7. PowerDesigner(七)-数据库的生成和修改
  8. 用JAVA制作小游戏——推箱子(三)
  9. 【zookeeper系列】centos7安装zookeeper
  10. php抽象类的构造函数,抽象类的构造函数