自动化测试 之 “好用例、坏用例”

摘要: 自动化测试的重要性显而易见,但自动化测试又无法解决所有问题,所以说完全依赖自动化是不可能的,但完全没有自动化是万万不能。在软件开发项目中,重度依赖人力进行持续回归是一件非常枯燥的重复工作。企业需要花费大量的时间和金钱来维持这样一支队伍以保证产品质量,而队伍中的同学在每天重复劳动的工作之下,也丝毫得不到成长,看不到方向。

自动化测试的重要性显而易见,但自动化测试又无法解决所有问题,所以说完全依赖自动化是不可能的,但完全没有自动化是万万不能。在软件开发项目中,重度依赖人力进行持续回归是一件非常枯燥的重复工作。企业需要花费大量的时间和金钱来维持这样一支队伍以保证产品质量,而队伍中的同学在每天重复劳动的工作之下,也丝毫得不到成长,看不到方向。

尽管自动化测试不能解决所有问题,但是却拥有一个优势:“Once” Written, Run Anytime as Desired(一旦写好,即可随意重复执行)。所以,自动化测试通常都会跟持续集成系统(比如Jenkins)配合使用,就像“良辰美景”要配上“月光杯”才算的上是极致。这样我们可以避免在软件上线或交付的最后一刻,还深陷软件问题的泥潭中。当然,这也是敏捷开发的关键所在,把问题消灭在过程中,只需持续关注增量内容。另外,在持续集成中,可以根据自己的需求来确定自动化测试的触发频次和时间,比如“代码提交”、“定时触发”等。

万物皆有阴阳两面,自动化测试有这么多优势,当然也有它的劣势。所以,至今仍然有很多公司自动化水平不高。我们分析一下这些劣势,主要有以下几方面:
  1.对测试人员要求相对较高。
  2.测试用例需要根据版本迭代进行更新,有一定维护成本。
  3.测试结果不一定可靠,测试用例也分“好”、“坏”。

前面两点也是大家公知的问题,每个公司各有自己的情况判断,今天也不做赘述。今天我主要讨论第三个问题,也就是:怎么保证我们花了时间和精力去做的自动化测试,其结果是有效的、是能够反映被测代码质量的?

一、测试用例也分好坏

  
对于标题,你可能会有疑问,测试用例竟然也有好坏?的确,测试用例也有好坏之分,那么什么是坏用例?什么是好用例?那要先从测试用例的特征说起:

自动化测试或者测试用例的根本目的就是judge(判断)被测系统是否有问题,是以衡量被测产品的“标尺”存在的。所以,它具备一个重要的特征:在测试脚本和被测代码都保持不变的情况下,测试结果应该是稳定的、不变的。

根据这个原则,“坏用例”并不是指测试不通过的用例,更不是测试通过的用例,而是指那些在相同条件下,偶尔通过、偶尔不通过的测试用例。反之,“好用例”则是表现稳定的用例。
  
为什么说“坏用例”破坏性大?因为如果用例本身不具备稳定的结果输出,就无法准确的衡量被测产品是代码的问题还是用例本身的问题。如果每次测试结果都不能直接说明问题,需要进行反复分析,将直接导致大家对测试用例失去信心。也就是说,测试同学和开发同学会把测试用例的不通过,当成“Warning”而非“Error”,这样的最终效果就是自动化测试慢慢被抛弃。

二、测试用例的生命周期

有了“好用例”、“坏用例”的区分,测试用例就是“鲜活”的了。事实上,我们也可以规划处一个测试用例从生到死的生命周期。

图片描述

一般情况下,我们可以以测试用例通过率或通过次数来为其划分“好/坏”。随着执行次数的增多,测试用例可以切换“好/坏”状态,当“坏用例”持续一段时间之后,我们可以把它标记为“垃圾用例”,并从自动化执行的序列中剔除。“坏用例”和“垃圾用例”可以被开发或者测试同学修复,然后进入“未知状态”。“未知状态”中的应用随着执行次数的增加,不断的在这个生命周期里循环往复。

三、 如何消灭坏用例

至此,我们明白了测试用例的“好/坏”之分,也了解了测试用例的生命周期。
那么,我们如何保证用例质量,“消灭坏用例”呢?

1,通过“CI”(Continuous Integration持续集成)发现“坏用例”

“坏用例”指的是偶尔不通过、偶尔通过的用例。所以,你会发现在本地运行的时候很难发现“坏用例”,因为“坏用例”需要被执行很多次才能被检测出来。执行很多次的过程可以非常好地通过CI系统来帮助实现,所以,如果你还没有使用CI系统,也依然建议使用持续集成工具进行多次的执行用例,即便你的工程量很小。另外一点,CI系统可以在一天不同的时刻执行用例,而时间也是一个“坏用例”产生的可能属性。

当然,成熟的CI系统(比如Jenkins)都可以满足绝大部分人的业务需求

2,防微杜渐

可能大家都听过“破窗理论”:当房子上的一扇窗户的玻璃被打破,如果不及时修复,将会有破坏者破坏更多的窗户。“坏用例”现象也是一样的,当出现一个“坏用例”时,如果不抓紧修复,整个测试用例集甚至自动化测试结果的可信度都将快速下滑。
  
对“坏用例”采取零容忍的态度,有助于整体自动化水平和质量的提升。可以建立测试或开发人员“坏用例”档案,并自动追踪每一个“坏用例”的来源,督促负责人跟进解决。

3,避免执行环境差异

4,使用异步等待  

通常,一个测试用例多个测试步骤组合而成,每一个测试步骤都需要特定的执行时间,所以,大家写测试用例一般的做法就是等待特定的时长,比如5秒。但是相同的测试步骤在每次用例执行过程中的时长并不相同,并且有时差异还会很大。这往往会导致上一步还未完成,下一步就开始执行,导致“坏用例”的产生。  
另外,即便是步骤执行没有超时,但依然可能造成时间上的浪费,比如一个步骤等待5s,但实际执行只用了2s,就有3s的时间浪费。  
理论上,解决这个问题有两种方式:回调、轮询。回调是指,上一步执行完成后,通知执行测试用例的进程/线程继续下一步。但这种方式在实际中并不采用,因为它需要紧耦合被测系统,可能为被测系统带来新的问题和维护成本。所以,实际中,更多的采用的是以“观察者”身份存在的轮询。比如说,以很小的时间间隔来不断查询是否到达下一步执行的状态。这样就能够避免一定程度的“坏用例”的产生。

5,解决并行执行的问题  

如果测试用例存在并行执行的情况,请确保多个测试用例之间不会因为相互对被测系统的影响导致冲突,从而使用例变成“坏用例”。比如,在所有测试用例执行过程中,数据库相关操作都采取事务的方式,用例执行完成后,就立即进行回滚。

6,避免测试用例互相依赖  

如果一个用例集中的测试用例时相互依赖的,那如果其中有一个“坏用例”出现,将会导致整个用例集不稳定。所以,尽量保证用例集中的每一个用例没有相互依赖关系,每一个都可以独立执行验证。

7,避免测试脚本太长  

毫无疑问,一个测试用例的步骤越多,可能变成“坏用例”的概率越高,所以,一般情况下,一个App的测试用例不超过在30步最好。

8,提高测试用例代码水平  

一个“好用例”除了结果足够稳定之外,还需要具备良好的结构设计,以及良好的可读性、可维护性。这一点对测试用例编写人员要求较高,当然,通过多读、多思、多写,能够很快的提高自己的自动化用例编写能力。

四、 MQC让测试用例“转”起来  

“坏用例”的产生跟被测应用、编写方法、测试环境等,都有非常大的关系,很难找到一个“all in one”的解决方案。但是,只要我们认真分析解决就可以让所有测试用例达到都是“好用例”这个状态。接下来,需要做的就是大家共同维护好这样一个最佳状态,避免“破窗理论”的发生。
  
在解决“坏用例”这个问题上,阿里云测MQC提出并实施了众多有效方案,例如,对于未通过的用例,增加N次重跑,避免“坏用例”的产生;比如“在线录制”可以帮助用户短时间内获得稳定性和兼容性都很高的测试用例;比如“用例管理”可以跟踪所有测试用例的通过率及通过次数,及早发现和处置“坏用例”;再比如,阿里云测MQC还提供了“Jenkins插件,让大家无需关心硬件资源等问题,方便大家将MQC云上的服务添加到自己的持续集成流程中来,真正做到“Once Written, Run Anytime”。这也是为什么只有在MQC平台上,测试用例才能真正“流转”起来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重磅!Python又第一了!网友:为什么找不到好工作?真相让人脸红…

根据第 19 届 KDnuggets调查显示,Python 成数据分析、数据科学与机器学习的第一大语言。图片来源于第 19 届 KDnuggets软件大调查Python 在机器学习中的地位日益扩大,2017 年,机器学习中Python 的使用率超过 50%,今年则直接上升到…

Apache RocketMQ 深圳沙龙报名开启!

摘要: Apache RocketMQ深圳沙龙报名正式开启。12月16日,Apache RocketMQ将在深圳举办线下沙龙!届时,社区里的PMC Member、Committer、深度用户,来自各路的资深专家汇聚一堂,就分布式消息引擎的最佳实践、性…

震惊!微软小冰公众号被封?示好国内,苹果拟推出特色版iPhone;谷歌更新Google Play支持名单:华为荣耀多款在列……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go AppsFlyer 针对中国移动互联…

如何基于OSS和MTS,快速搭建音视频文件上传服务?

摘要: 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK,快速搭建一个音视频文件上传服务。 优势 使用MTS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能。 增加STS Token 超时更新功能。 背景 本文主要介绍如何基…

IntelliJ IDEA 2019.1 windows找不到文件‘chrome’

文章目录一、问题现象1. 用IntelliJ IDEA 2019.1 打开index.html,抛出以下错误2. 异常效果图二、解决方案:2.1.【打开设置】2.2. 搜索【web brow】2.3. 在桌面上找到google-【右击】-【属性】-【找到目标】-【双击】-【ctrla全选】-【ctrlc复制】2.4. 在红框中&…

新功能:阿里云负载均衡支持HTTP/2、WSS协议

摘要: 很高兴的告诉大家,阿里云负载均衡在欧洲中部(法兰克福)与亚太东南3(吉隆坡)地域支持HTTP/2、WSS(Web Socket Secure)协议。 1、HTTP/2协议支持 什么是HTTP/2 HTTP2是超文本传输…

wds linux,linux 无线组网方式 WDS功能

扩展你的无线网络:使用WDS扩展WDS设置无线分布式系统WDS(Wireless Distribution System),在无线网络扩展中扮演着最重要的角色,它可以帮你轻松的实现无线到无线的扩展,而中间不必使用任何有线的连接,这在看中美观的家庭…

三十四载Windows崛起之路: 苹果、可视做过微软“铺路石”

戳蓝字“CSDN云计算”关注我们哦!作者:姜洪军1982年11月的一天,赌城拉斯维加斯客流如织,有常见的闲散赌客,但更多的是来自计算机产业的专业人士,因为计算机领域的重要博览会Comdex在这里举行。27岁的比尔盖…

阿里云CDN直播架构与双11晚会直播实战

摘要: 分享人:阿里云CDN直播 高级技术专家 阙寒分享内容:双11直播活动是众多直播活动中非常典型的场景,离不开直播本身这个话题。所以今天的分享会从直播概述、直播架构、业务功能、直播监控、双11这几个方面来进行。 分享人&…

双11黑科技,阿里百万级服务器自动化运维系统StarAgent揭秘

摘要: 还记得那些年我们半夜爬起来重启服务器的黑暗历史吗?双11期间,阿里巴巴百万量级主机管理能安全、稳定、高效,如丝般顺滑是如何做到的?阿里巴巴运维中台技术专家宋意,首次直播揭秘阿里IT运维的基础设施…

查看大日志文件的专门工具logviewer

查看大日志文件的专门工具logviewer版本为官网2.3.1版本 文章目录一、百度网盘下载链接:二、操作手册2.1. 【file】-【Open】-【选择文件】-【打开】2.2. 文本可视化展示2.3. 编码选择2.4. 效果图2.5. 搜索功能一、百度网盘下载链接: 链接https://pan.b…

Android热修复升级探索——SO库修复方案

摘要: 通常情况下,大多数人希望android下热补丁方案能够做到补丁的全方位修复,包括类修复/资源修复/so库的修复。 这里主要介绍热补丁之so库修复思路。 一、前言 通常情况下,大多数人希望android下热补丁方案能够做到补丁的全方位…

中小企业搭建混合云,服务器如何选?

戳蓝字“CSDN云计算”关注我们哦!经过一年多的发展Henry所在的NewStar公司的业务开始蒸蒸日上各种业务系统也越来越多、运营管理也开始越来越复杂公司所购买的“第一台服务器”逐渐力不从心业务中断时有发生Henry又回到了公司初期一筹莫展的状况中Henry脸上也是愁云…

基于TableStore构建简易海量Topic消息队列

摘要: 前言 消息队列,通常有两种场景,一种是发布者订阅模式,一种是生产者消费者模式。发布者订阅模式,即发布者生产消息放入队列,多个监听的消费者都会收到同一份消息,也就是每个消费者收到的消…

苹果ID登陆第三方有漏洞?硬核!Gartner报告腾讯云数据库增速国内第一;“小米快递”商标注册,这是要入局物流领域?...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 蔚来汽车(图片来…

【阿里云MVP月度分享】SaaS服务商如何通过数加平台统计业务流量

摘要: 一、概述 因为自家公司是做B2B类Saas服务的,难免会产生精准计费的问题,所以在通过多套方案的选型及对比以后,我们最终确定了以下的方式进行自有业务平台的流量计算方案。因为涉及到具体的操作,所以阅读本文的前提…

【阿里云 MVP 月度分享】宋亚奇——应用MaxCompute实现电力设备监测数据的批量特征分析...

1 背景知识 电力设备在线监测指在不停电的情况下,对电力设备状况进行连续或周期性地自动监视检测,使用的技术包括:传感器技术、广域通信技术和信息处理技术。电力设备在线监测是实现电力设备状态运行检修管理、提升生产运行管理精益化水平的…

小企业的第一台服务器如何选?

戳蓝字“CSDN云计算”关注我们哦!Henry是一家叫做NewStar的初创小企业的兼职IT管理员一天晚间,下班后的Henry正在忙着“吃鸡”突然,一阵急促的电话铃声响了起来原来是在外地出差的同事需要一份重要的文件,但却无法远程访问服务器H…

Linux 中文无法显示或显示方块

文章目录问题现象:字体需求一、查看字体列表1. 安装字体库2. 字体库中添加中文字体3. 进入字体目录复制需求字体4. 创建中文字体目录5. 上传需求字体6. 修改chinese目录的权限7. 安装ttmkfdir8. 修改字体配置文件9. 刷新内存中的字体缓存问题现象: Linu…

阿里云发布混合云数据存储和灾备方案

摘要: 12月7日,2017苏州云栖大会上,阿里云发布全新的混合云数据存储和灾备方案,此次发布的内容包括最新推出的混合云容灾服务HDR和混合云备份服务HBR,以及全面升级的混合云存储阵列CSA2000和CSA3000。 12月7日&#xf…