提高CUI测试稳定性技术

GUI自动化测试稳定性,最典型的表现形式就是,同样的测试用例在同样的环境上,时而测试通 过,时而测试失败。 这也是影响GUI测试健康发展的一个重要障碍,严重降低了GUI测试的可信性。

五种造成GUI测试不稳定的因素:
1. 非预计的弹出对话框;
2. 页面控件属性的细微变化;
3. 被测系统的A/B测试;
4. 随机的页面延迟造成控件识别失败;
5. 测试数据问题

非预计的弹出对话框

非预计的弹出对话框,一般包含两种场景;
1. GUI自动化测试用例执行过程中,操作系统弹出的非预计对话框, 有可能会干扰GUI测试的自动化 执行。 比如,GUI测试运行到一半,操作系统突然弹出杀毒软件更新请求、病毒告警信息、系统更新请求 等对话框。这种对话框的弹出往往是难以预计的,但是一旦发生就有可能造成GUI自动化测试的不 稳定。
2. 被测软件本身也有可能在非预期的时间弹出预期的对话框, GUI自动化测试有可能会因此而失败。 比如,被测软件是一个电子商务网站,你在网站上进行操作时,很可能会随机弹出“用户调查”对话 框。虽然这种对话框是可知的,但是具体会在哪一步弹出却是不可预期的。而这,往往会造 成GUI自动化测试的不稳定。
怎么解决这类问题呢?
先试想一下,如果你在手工测试时,遇到了这种情况,会如何处理?很简单啊,直接点击对话框上 的“确认”或者“取消”按钮,关闭对话框,然后继续相关的业务测试操作。
对GUI自动化测试来说,也是同样的道理。具体做法是:
当自动化脚本发现控件无法正常定位,或者无法操作时,GUI自动化框架自动进入“异常场景恢复模 式”。 在“异常场景恢复模式”下,GUI自动化框架依次检查各种可能出现的对话框,一旦确认了对话框的类 型,立即执行预定义的操作(比如,单击“确定”按钮,关闭这个对话框),接着重试刚才失败的步 骤。
需要注意的是:这种方式只能处理已知可能出现的对话框。而对于新类型的对话框,只能通过自动化的 方式尝试点击上面的按钮进行处理。每当发现一种潜在会弹出的对话框,我们就把它的详细信息(包括 对象定位信息等)更新到“异常场景恢复”库中,下次再遇到相同类型的对话框时,系统就可以自动关闭 了。
页面控件属性的细微变化
如果页面控件的属性发生了变化,哪怕只是细微的变化,也会导致测试脚本的定位元素失效。
比如,“登录”按钮的ID从“Button_Login_001”变成了“Button_Login_888”,那么如果GUI自动化测试脚本 还是按照原来的“Button_Login_001”来定位“登录”按钮,就会因为ID值的变化,定位不到它了,自动化 测试用例自然就会失败。
如何解决这个问题呢?还是先试想一下,如果手动操作时遇到了这个问题会怎么处理,然后再把手动处 理的方式用编程语言实现。
当“登录”按钮的ID 从“Button_Login_001”变成了 “Button_Login_888”,你手动操作时可能一眼就发现 了。那你是怎么做到一眼发现的呢?
细想一下,你会发现人的思维过程应该是这样的:
现在,我来提炼一下这个定位控件的思路:
1. 通过控件类型(Button)缩小了范围;
2. 通过属性值中的关键字(Login)进一步缩小范围;
3. 根据属性值变化前后的相似性,最终定位到该控件。
看到这里,你得到什么启发了吗?
采用“组合属性”定位控件会更精准,而且成功率会更高,如果能在此基础上加入“模糊匹配”技术,可以 进一步提高控件的识别率。
“模糊匹配”是指,通过特定的相似度算法,控件属性发生细微变化时,这个控件依旧可以被准确定位。
目前,一些商用GUI自动化测试工具,比如UFT,已经实现了模糊匹配。通常情况下,你只需要启用“模 糊匹配”选项即可。如果某个对象的定位是通过模糊匹配完成的,那么,测试报告中将会显示该信息, 明确告知此次对象识别是基于模糊匹配完成的,因为GUI自动化工具并不能保证每次模糊匹配都一定正 确。
但是,开源的GUI自动化测试框架,目前还没有现成的框架直接支持模糊匹配,通常需要你进行二次开 发,实现思路是:实现自己的对象识别控制层,也就是在原本的对象识别基础上额外封装一层,在这个 额外封装的层中加上模糊匹配的实现逻辑。
通常,我不建议把模糊匹配逻辑以硬编码的方式写在代码里,而是引入规则引擎,将具体的规则通过配
你发现页面上的按钮(Button)就那么几个,而且从ID中包含的关键字(Login)可以看 出是“登录”按钮,再加上这个按钮的ID是“Button_Login_001”,“Button_Login_888”怎么 看都是同一个对象,只是ID最后的数字发生了变化而已。
置文件的方式与代码逻辑解耦。
被测系统的A/B测试

A/B测试,是互联网产品常用的一种测试方法。它为Web或App的界面或流程提供两个不同的版本,然 后让用户随机访问其中一个版本,并收集两个版本的用户体验数据和业务数据,最后分析评估出最好的 版本用于正式发布。
A/B 测试通常会发布到实际生产环境,所以就会造成生产环境中GUI自动化测试的不稳定。
这种问题的解决思路是,在测试脚本内部对不同的被测版本做分支处理,脚本需要能够区分A和B两个 的不同版本,并做出相应的处理。
随机的页面延迟造成控件识别失败

随机的页面延迟,也是GUI测试防不胜防的。既然是随机的,也就是说我们没有办法去控制它,那有没 有什么办法去减少它造成的影响呢?
一个屡试不爽的办法就是,加入重试(retry)机制。重试机制是指,当某一步GUI操作失败时,框架会 自动发起重试,重试可以是步骤级别的,也可以是页面级别的,甚至是业务流程级别的。
对于开源GUI测试框架,重试机制往往不是自带的功能,需要自己二次开发来实现。
比如,eBay的GUI自动化测试框架,分别实现了步骤级别、页面级别和业务流程级别的重试机制,默认 情况下启用的是步骤级别的重试,页面级别和业务流程级别的重试可以通过测试发起时的命令行参数进 行指定。
需要特别注意的是,对于那些会修改一次性使用数据的场景,切忌不要盲目启用页面级别和业务流程级 别的重试。
测试数据问题

测试数据问题,也是造成GUI自动化测试不稳定的一个重要原因。
比如,测试用例所依赖的数据被其他用例修改了;再比如,测试过程中发生错误后自动进行了重试操 作,但是数据状态已经在第一次执行中被修改了。
这样的场景还有很多,我会在后面的测试数据准备系列文章中详细展开,并分析由此引入的测试不稳定 性问题的解决思路。
总结 根据我的实践经验,我归纳了五种造成GUI自动化测试不稳定的主要因素,并给出了对应的解决思路。
1. 对于非预计的弹出对话框引起的不稳定,可以引入“异常场景恢复模式”来解决。
2. 对于页面控件属性的细微变化造成的不稳定,可以使用“组合属性”定位控件,并且可以通过“模糊匹 配技术”提高定位识别率。
3. 对于A/B测试带来的不稳定,需要在测试用例脚本中做分支处理,并且需要脚本做到正确识别出不 同的分支。
4. 对于随机的页面延迟造成的不稳定,可以引入重试机制,重试可以是步骤级别的,也可以是页面级 别的,甚至是业务流程级别的。
5. 对于测试数据引起的不稳定,我在这里没有详细展开,留到后续的测试数据准备系列文章中做专门 介绍。

原文地址:https://www.cnblogs.com/ZoeLiang/p/10747704.html

时间: 2024-10-14 18:49:42

提高CUI测试稳定性技术的相关文章

集群类型以及提高服务器性能的技术概述

一.集群类型: 1.负载均衡集群(LB集群--Load Balancing): 考虑提高服务器容量,是实现伸缩性扩展的主要技术. 当并发请求出现下面的情形时,就要考虑扩展: 1200请求:1s 1500请求:2s 1800请求:10s 扩展类型: Scale up:向上,需要更强大性能的服务器,缺点是:提高的上限是有限的,并且它的性价比较差. Scale out:向外,需要n多台主机. A.LB的软件解决方案: LVS(Linux Virtual Server). Haproxy. Nginx等

【tool】软件测试中获取负面测试的技术

一个测试用例用于证明该需求已经满足,通常称作正面测试用例: ·另一个测试用例反映某个无法接受.反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例. 1.负面测试的目的负面测试在BS7925-1中的英国标准定义是采用Beizer的定义,其定义负面测试为“旨在说明 软件不能工作的测试”(原文:Testing aimed at showing software does not work).它可以带出一系列补充性的和竞争性的目的.•发现导致重大失效.崩溃.破

关于《精通移动App测试实战:技术、工具和案例》图书勘误信息

首先,对由于我们工作的疏忽向<精通移动App测试实战:技术.工具和案例>读者朋友们表示歉意,同时已将这些问题反馈给了出版社编辑同志,再版时将会统一修正: 其次,勘误信息请参看附件pdf文档,勘误信息: 最后,向支持作者的读者朋友们表示感谢,也衷心希望得到您更多的建议和批评.

这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看

这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福利圣诞节覅看这盘文章是测试的技术指导及付款了圣诞节疯狂了圣诞节福

美称中国又射东风41 首次测试多弹头技术突破大

美国华盛顿自由灯塔网站2月10日报道,近期一张中国大型弹道导弹在公路运输的照片曝光,拍摄时间为2014年1月31日.美媒认为,该导弹是中国二炮尚在测试中东风-41洲际导弹.东风-41弹道射程最大可达12000公里,搭载10枚分导式核弹头,最近一次试射在去年12月.http://issuu.com/98lkygildk http://issuu.com/tkl4b8nzhs http://issuu.com/4g4phvfzhd http://issuu.com/7ha5loicjj http:/

几个提高树莓派网络稳定性的方法。

想把树莓派当一个小型服务器来用,性能可以差一点,但是稳定性必须保证,以下是从网络上找到的提高稳定性的方法. 1)/etc/sysctl.conf当中修改 vm.min_free_kbytes(8192修改成16384) # rpi tweaks vm.swappiness=1 #vm.min_free_kbytes = 8192 vm.min_free_kbytes = 16384 USB驱动会从内核中分配内存,党网络负载重时,该内存可能耗尽,从而导致故障. 2)/boot/cmdline.tx

杭二信息奥赛学习记录(3)(0712 提高组测试与题解)

1 绕橡皮 (rope.cpp) 1.1 题目描述 最近小D喜欢玩橡皮筋.他发现用一个橡皮筋绕上一个正n边形的n个顶点可以产生许多美丽的形状.他发现用一个橡皮筋不重复也不遗漏地绕过n个顶点产生的图形中,有些图形不存在平行的边,称为“n奇异形“.现在他希望知道是否存在k个“n奇异形”叠置(即形成一个由正k*n边形的顶点及一些边组成的图形)之后形成的图形是否也满足不存在平行的边. 1.2 输入格式 有多组测试数据,每行包含两个正整数n,k,意义同上, 文件末尾为两个0. 1.3 输出格式 对于每组测

幸福在《精通移动App测试实战 技术、工具和案例》

销量不错,京东.当当100%好评,继续努力!

如何提高短平快项目的测试效率?

                         如何提高短平快项目的测试效率?                                                    研发资深顾问  杨学明   最近几年,笔者在全国各地包括深圳,北京,上海,杭州,武汉,济南等大中城市开设了近百场测试公开课程,也帮助许多创新型企业进行了产品测试或软件测试管理的内训,大的企业有中航工业.中科院.中国电力研究院.华立仪表.深圳迈瑞等等,也有一些中小型的企业,总体来说,目前中国国内的各公司的测试体系还不