本文章转载于搜狗测试
本期小编将向广大粉丝介绍搜狗输入法按键响应自动化测试的方法及工具,虽然本文中的工具是深度定制化的输入法测试工具,无法应用在其他项目,但相信其中所使用的Xposed Hook技术、socket多进程通信技术以及自动化思想会对大家有帮助。
按键响应测试是什么?
当我们在手机上打一个字时,它大致经历了如下过程:
按键响应测试即测试上述T1~~T2的时间。
按键响应怎么测试?
按键响应的测试方法有两种:日志方式和视频拍摄方式。
日志方式:在上述用户按下按键时,程序执行onKeyEvent函数中写日志记下时间戳T1;当开始显示候选词时,程序执行绘制显示函数时写日志记下时间戳T2,通过T2-T1即可获得按键响应的时间。
优点是:通过日志方式计算,工具成本低;
缺点是:经过大量的实践对比,函数执行时界面并没有显示,所以这并不能代表用户实际的体验。
视频拍摄方式:即通过慢速摄像(240帧/S)的录像下,记录从按下按键到显示候选词的过程,进而通过视频拆帧工具进行逐帧的对比。
优点是:拍摄的内容是用户实际的感受,代表了用户实际的体验;
缺点是:拍摄视频并拆帧没有形成的工具,成本高,操作繁琐。
为了得到最接近用户体验的数据,目前搜狗输入法使用的是视频拍摄方式。
测试时遇到的最大困难是什么?
1.如何准确地获得按下按键的时间。
以前的做法是这样的:竖一面镜子,通过镜子的反射来获取手指抬起的时间。如下图:
现在的做法是这样:
1).通过XPosed的Hook框架,对用户在手机上按下按键和抬起按键的事件进行Hook;
2).将Hook到的信息通过Socket发送给浮动窗口;
3).浮动窗口收到事件消息后,根据按下抬起的时间分别显示绿色和红色,帮助测试人员识别颜色的变化。
按键探测程序效果图:
2.如何更高效的拆帧获得时间间隔。
以前的做法是这样的:用KMplayer将慢速视频拆帧,然后一帧一帧地人工计算,最后得到T1和T2之间的帧数。
现在的做法是这样:
1)通过测试工具,对视频进行自动拆帧
2)基于图像识别的算法,对视频中浮动窗口方框进行识别和输入法候选词识别
3)通过图像识别得到准确的按下时间T1和候选词显示时间T2,最终得到差值。
分析程序效果图:
关键代码分享
Hook按键&socket通信
socket接收部分