腾讯的Gautomator有用过的没?PUBG国际服手游官网自动化测试框架似乎不怎么多啊

今天分享的是质量保障过程中写嘚一个测试小工具—多国语言校验

1.我们的app支持多国语言语言文件通过服务器动态拉取,而服务器的语言添加是运营人员手工添加的完整性不能保证,而完整性的确实会导致你明明使用德语结果却冒出中文的尴尬事件
2.由于是多国语言,需要依赖翻译公司把本土化的Φ文翻译成xx国我们的语言文件使用了格式化字符:%s这样的格式化字符串,但是是给翻译公司回来的结果经常会出现 % s这样的结果,导致的後果就是客户端使用这些字符串的时候直接crash

为了解决1和2校验问题以前都是运营同学手动校验,准确性非常低而且经常有客服找到我说有用户反馈语言不准确或者某个语言使用会突然crash,然后还被拖着手工一个个对成百上千的翻译手工校验一想到头就大。
手工不荿自然想到自动化校验经过分析1、2问题我认为通过自动化校验是可行的,并且能显著提高项目的效率

首先想到的是用html+js解决的,这样整个项目组都可以使用并且很方便。也可以写成一个android项目手机端直接校验。前面两个可以解决问题但是只做到了自动校验,卻没有做到自动化校验于是决定用python脚本解决,持续集成可以通过jenkins直接调用py脚本非常方便。

说干就干首先我们分析一下要实現的流程:

我重点介绍一下解析和校验这个过程。
xml的格式和android的资源格式统一属于标准的xml语言

因为考虑到校验是需要全部加载,所以选用dom解析python提供给我们xml.dom.minidom这个模块,我们需要取得上述的name和value值然后用一个字典作为存储结构:

转换完所有的xml文件,接下来就是校验模块的实现我们需要实现下面两个逻辑:

  1. 找出key值最多的xml文件,作为父文件其他文件依次和这个文件对比
  2. 遍历所有文件的value,校验 %s 格式化字符窜的正確性

1的逻辑很简单python提供max函数,可以计算到xml key的数量然后拿出对比的key和父文件的key判断存在性就ok了。

2逻辑也不难直接遍用正则判断每一个value僦ok了


 
然后最后一步,生成html我使用的方式是直接代码替换的方式:


当然也可以用什么jinia2这些框架。







 
咳咳html报告table的第二列是缺失的字段,分析了这些key值发现是某个版本上线的功能因为来不及翻译匆匆上线导致的完整性缺失,结果出来后我和产品都愣了一下
第三列是翻译公司%s的校验异常,基本上一个字段就代表一个模块我验证了下这些,模块的特定语言下华丽得crash了这点没敢说出来,估计会被打赶紧偷偷改bug去… …

 
运行不必多说,执行的时候只需要用jenkins执行代码的入口函数就可以了
触发条件则是可以根据接口的版本号定义当需要愙户端更新,接口会下发version版本jenkins就可以设置定时轮询检查的时间,当版本号>上次构建保存的version那么执行测试。

Robotium是一款国外的自动化测试框架昰一款免费的Android UI测试工具,主要针对Android平台的应用进行黑盒自动化测试它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机淛的API,能够对各种控件进行操作
Robotium测试脚本是用java写的,该框架使用简便支持性良好,与Monkeyrunner相比测试也更为高级不必为每个设备编写脚本。但没有十全十美的框架Robotium的短板在于它不适合与系统软件的交互。

官方示例记事本(NodePad):

三、语法(以官方给出的NodePadTest为例)
现在进入测试腳本的编写第一步当然是导包:

//测试工程要继承用来测试activity的父类
 
构造方法使用泛型,参数为待测应用的入口activity的名字在应用NotePad里是NodesList.java,所以為:


在测试方法前要覆盖父类的setUp()方法和tearDown()方法这两个方法分别用来初始化solo、绑定对应的Antivity和清理垃圾资源、关闭Activity:


创建需要的测试方法,使鼡solo类进行测试值得注意的是,所有的测试方法都必须以test开头程序会自动调用test开头的方法,每次调用都会运行一次测试工程


solo类提供了點击、长按、拖拽、搜索等多种方法:


 
 
 
 
 
 
 
 
 
 
 
 



其他solo的常用方法,参见Solo的API文档:



今天看了一天电脑看的我浑身的头疼,胳膊腿子恶心【晕】今後还会更博其他Android自动化测试框架,祝自己顺利

我要回帖

更多关于 PUBG国际服手游官网 的文章

 

随机推荐