首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一种精准monkey测试的方法

一种精准monkey测试的方法

原创
作者头像
WeTest质量开放平台团队
发布于 2018-10-23 14:43:27
发布于 2018-10-23 14:43:27
9770
举报

作者:王薇,腾讯云与智慧产业高级工程师

商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。

原文链接:https://wetest.qq.com/lab/view/413.html

WeTest 导读

相信大家都知道移动端应用的monkey测试吧,不知你们有没有为monkey测试的太过于随机性的特性有过困扰,至少在我们这种界面控件较少且控件位置较偏的app的使用上其测试有效性大打折扣。因此本文主要针对这个问题,提供了一种解决方案。


1. 问题背景

Monkey测试:是Android自动化测试的一种手段,简单的说是像猴子一样乱点,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),是一种随机性测试,为了测试软件的健壮性和稳定性,通常用于安卓应用的压力测试

因此,我们的产品也用了这种传统的monkey手段进行app稳定性测试,在使用一段时间后,并未发现实际性问题。通过观察一段时间的执行过程,发现由于我们app几个页面控件布局是比较偏上和偏下边缘,中间只有一个大按钮,这样中间大按钮命中率比较高经常会进入同一个页面,那么其他页面和按钮的功能几乎没有被点击到。这种传统monkey测试控件命中率太低!

市面上有很多类似布局的app,相信在采用传统monkey测试时也存在此类问题。

2. 解决方案

我们知道,对于app页面布局的控件位置、属性等信息是可以用android sdk 工具包中的uiautomatorviewer.bat查看的,如果在monkey测试时能获得这些控件的位置信息,那么就可以实现控件的精准点击。android sdk提供了这个命令“adb shell uiautomator dump”,可以实现将当前activity布局文件dump到xml文件中,这样问题就得到了解决。

dump 布局文件:

1.png
1.png

得到的window_dump.xml内容:

代码语言:txt
AI代码解释
复制
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
代码语言:txt
AI代码解释
复制
<hierarchy rotation="0">
代码语言:txt
AI代码解释
复制
<node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.bass.cleaner.security" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1776]">
代码语言:txt
AI代码解释
复制
<node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.bass.cleaner.security" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1776]">
代码语言:txt
AI代码解释
复制
...
代码语言:txt
AI代码解释
复制
</hierarchy>

uiautomatorviewer.bat查看控件属性:

2.jpg
2.jpg

但是,又一问题,xml中的控件非常多,并非每个控件都可以点击,如果挨个尝试点击那么执行效率也是非常慢的,不符合预期。幸好,控件有个clickable属性,当其等于true时,表示该控件可点,反之不可点。那么,我们将控件信息xml文件中“clickable=true”的控件过滤出来,再去计算这些控件的位置进行点击,就可以实现精准点击。到此,问题得到完美解决。

举例,执行流程如下:

3.png
3.png

当然,在实际中,还存在控件的点击顺序问题,如果点击顺序不合适,也会存在有些控件被频繁点击、有些控件可能点击不到的情况。这就需要根据实际的测试目标来指定执行策略,例如,在当前页可点击的控件列表中,随机点击、顺序点击,或存储各页面控件的目录树,进行深度遍历点击等等。

随机测试完后,有时还需要还原执行过程,定位发现的问题,所以在执行过程中,我还加入了一些截图操作,在每次点击控件前进行点击坐标的标记、截图,这样,测试完后就能根据这些截图很完美的还原出了整个随机测试的过程,大大简化的问题的定位。举例,下图是执行过程中的几张连续截图:

4.jpg
4.jpg
5.jpg
5.jpg
6.jpg
6.jpg

→→

图中,红点位置就是点击位置,很直观的展示了执行过程。

总结

本文所述的方案很好的解决了monkey测试在控件布局不均衡的app上执行有效性低的问题。同时,实现了一种自适应的随机测试手段,也就是无需针对不同app编写不同的随机测试脚本,实现了一套测试代码用于所有app的随机性测试。


“自动化兼容测试” 服务将提供云端自动化兼容服务,提交云端百台真机,并行测试。快速发现游戏/应用兼容性和性能问题,覆盖安卓主流机型

点击:https://wetest.qq.com/product/auto-compatibility-testing 了解更多详情。

如果使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:2852350015

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ClickHouse 集群搭建
2018年第一天,许下第一份愿望吧,闭上眼睛,双手合十,心中默念,梦想成真。有期待的生活是快乐的,有憧憬的日子是惊喜的。元旦快乐!
Yunjie Ge
2022/04/24
1.2K0
ClickHouse集群搭建(二)
在上一章我们已经完成ClickHouse分布式集群安装,也创建本地表和分布式表进行了测试,但是,假如停掉一个节点会发生神马情况?
java干货
2021/02/15
1.7K0
数据源管理 | OLAP查询引擎,ClickHouse集群化管理
ClickHouse是俄罗斯的Yandex公司于2016年开源的列式存储数据库(DBMS),主要用于OLAP在线分析处理查询,能够使用SQL查询实时生成分析数据报告。
知了一笑
2020/05/20
9940
战斗民族开源神器ClickHouse:一款适合于构建量化回测研究系统的高性能列式数据库(二)
编辑部原创 编译:wally21st、 西西 未经允许,不得转载 Tutorial 对于一些私募、投资机构和个人来说,量化投资研究、回测离不开数据的支持。当数据量达到一定数量,如A股所有频率和种类的数据等等。这时候需要的是对数据有效的储存和管理。今年6月才开源的数据库ClickHouse,为我们提供了福音。ClickHouse来自俄罗斯,又是刚刚开源,社区也是俄语为主。因此,大家对它并不是很熟悉,用的人也不是很多。 我们对比一下他的速度 一个字 快 上面是100M数据集的跑分结果:ClickH
量化投资与机器学习微信公众号
2018/01/29
5.3K0
战斗民族开源神器ClickHouse:一款适合于构建量化回测研究系统的高性能列式数据库(二)
ClickHouse学习随笔-简介-202104
ClickHouse不仅查询速度快(相较于hive等类似的分析型DBMS),而且硬件使用效率、容错性、可靠性、易用性、线性扩展性等高。
用户8483969
2021/04/09
1.2K0
ClickHouse 分布式集群的安装、使用
ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。适合巨量数据环境下用户数据查询、数据分析等工作。ClickHouse 简称为 CH,是近2年日益火起来的一款类数据库分析工具。
南非骆驼说大数据
2020/12/13
3.6K0
ClickHouse 实战笔记 第05期:ClickHouse 环形复制集群搭建
上一节内容,我们聊了 ClickHouse 两分片两副本的搭建(点击传送),那么多分片多副本的情况下,是不是一定得起至少 4 个实例呢?其实是不一定的,如果机器资源紧张,3 台机器甚至 2 台机器都可以搭建一个 ClickHouse 多分片多副本的集群(暂时只聊 1 台机器跑一个 CH 实例的场景),这一节内容就来聊聊 3 台机器搭建的集群。
数据库交流
2022/04/25
9570
ClickHouse 实战笔记 第05期:ClickHouse 环形复制集群搭建
ClickHouse案例:查询结果不一致
某用户反馈其使用的ClickHouse集群同样的查询返回了不同的结果,是否是ClickHouse数据不能够保证一致性,还是集群有问题。
Yannic
2020/11/16
14.5K1
ClickHouse案例:查询结果不一致
Clickhouse分布式集群搭建
安装zookeeper集群,也可以使用现成的,本次使用现成的,配置如下,后续加入配置文件中
职场亮哥
2020/10/10
3.9K0
ClickHouse 实战笔记 第04期:ClickHouse 高可用集群搭建
在海量数据的场景下,单节点的 CH 可能不能满足我们的需求了,因此可以考虑使用 CH 集群,从而解决单节点存储和查询的瓶颈。
数据库交流
2022/04/25
5.1K0
ClickHouse 实战笔记 第04期:ClickHouse 高可用集群搭建
Clickhouse集群安装部署
相关知识参考:https://www.cnblogs.com/jmx-bigdata/p/13708835.html
别先生
2021/03/04
3.1K0
Clickhouse集群安装部署
ClickHouse分布式高可用集群搭建
地址:https://packagecloud.io/altinity/clickhouse
MySQL轻松学
2018/12/21
11K0
ClickHouse分布式高可用集群搭建
ClickHouse(04)如何搭建ClickHouse集群
ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么安装和部署。
张飞的猪
2023/12/04
1.1K0
ClickHouse(04)如何搭建ClickHouse集群
大数据ClickHouse(二):多种安装方式
在官网中可以看到ClickHouse可以基于多种方式安装,rpm安装、tgz安装包安装、docker镜像安装、源码编译安装等。这里我们使用rpm安装包安装。目前Clickhouse仅支持Linux系统且cpu必须支持SSE4.2指令集,可以通过以下命令查询Linux是否支持:
Lansonli
2022/08/09
3.5K0
大数据ClickHouse(二):多种安装方式
大数据存储技术之ClickHouse入门学习(一)
ClickHouse入门学习(一):https://blog.csdn.net/qq262593421/article/details/119514836
静谧星空TEL
2021/12/07
2.1K0
大数据存储技术之ClickHouse入门学习(一)
大数据ClickHouse进阶(一):ClickHouse使用场景和集群安装
ClickHouse是一个开源的,用于联机分析(OLAP)的列式数据库管理系统(DBMS-database manager system), 它是面向列的,并允许使用SQL查询,实时生成分析报告。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。
Lansonli
2022/09/06
2.7K0
大数据ClickHouse进阶(一):ClickHouse使用场景和集群安装
技术分享 | ClickHouse 集群分片下扩容副本的方式
爱可生南区交付服务部 DBA 团队成员,主要负责MySQL故障处理以及相关技术支持。爱好电影,游戏,旅游以及桌球。
爱可生开源社区
2021/11/18
1.8K0
clickhouse集群,双实例多副本
4台机器,clickhouse集群搭建了双副本双实例,查询统计多次出现不同数据结果,具体如下 :
用户9066404
2023/09/06
7732
ClickHouse Replicated 高效迁移方案
-config.xml 新增src zookeeper 'src_cluster'
jasong
2023/03/21
1.1K0
Docker Compose V2 安装 ClickHouse v20.6.8.5 经验分享
从容器内拷贝配置文件到容器外部主机 (创建 work 目录,进入运行的 clickhouse 容器后会将默认的配置文件(config.xml, users.xml)复制到 work 目录)
易墨
2023/10/07
1.1K0
Docker Compose V2 安装 ClickHouse v20.6.8.5 经验分享
推荐阅读
相关推荐
ClickHouse 集群搭建
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档