总有你想知道的---Sikuli(1)

前言

                  最近在寻找一种较高效率测试APP启动时间的工具和方法,偶遇Sikuli~~~他算是一种上手很快的自动化搅拌

                  之前做过一些启动时间测试的实践,但主要是想从用户体验方向进行高效测试,简单做了对比如下:

参考项

系统日志

录屏

图像识别

加日志

执行效率

用户体验

修改源码

竞品对比

实现成本

                 

                  最后发现这个神奇的Sikuli还是可以做进一步发掘的,至少他是开源的,哈哈~

 

什么是Sikuli?

 

MIT的研究人员设计的一种新颖的图形脚本语言Sikuli,计算机用户只须有最基本的编程技能(比如会写print"hello world"),我们不需要去写出一行行代码,而是用屏幕截图的方式,用截出来的图形元素组合出神奇的程序。

以一言以蔽之,你在PC屏幕上看到的任何东西都可以通过Sikuli的图像识别实现自动化。

 

Sikuli怎么工作?

 

简单来说,他可以分为四个部分:Python+Jython+Java+C++

 

Ø  通过Sikuli IDE建立脚本,包括python和截图。执行脚本时,通过python解析器和Java环境进行代码解析;

Ø  引用啦Jython库,作为两者桥梁。

Ø  Java.awt.Robot传递键盘和鼠标的事件流到适当的位置;

Ø  c++用于屏幕内搜索指定的图片。

 

各个模块的关系如下图所示:

 

如果比较费解,我翻译了一个时序图,帮助大家了解:

 

需要做的准备工作:

第一步:Sikuli下载

我的云盘:http://pan.baidu.com/s/1pKKXICN(.jar)

官网:http://www.sikuli.org/download.html 

 

第二步:下载资源,进行安装

以jar包安装为例,双击按照提示下载相关资源进行安装即可,过程大概15min-20min左右。

(PS:Windows上可以正常运行,Mac上运行jar包会有报错,暂时没有深究尴尬!!有兴趣的童鞋可以一起琢磨琢磨…)

二次启动,可以直接双击sikuliapi.jar即可

 

            第三步:检验是否成功

            运行后你看到如下的界面,恭喜你!可以开始正式编写Sikuli脚本啦~

 

 

如何编写你的自动化脚本?

         第一步:认识界面元素的功能

菜单栏与工具栏非常简单,下面介绍一下这几个按钮是干嘛用的~

 

【屏幕截图Take screenshot)】:点击该按钮,进入屏幕截图状态,拖拽辅助线选取需要截取的界面元素,释放鼠标左键的同时,自动将该截图插入到编辑区中光标当前位置。使用快捷键 Ctrl+Shift+2Command+Shift+2)也可激活截图状态,以完成对于弹出菜单、下拉框一类的控件的实时截图。该快捷键亦可通过主菜单 File->Preferences 进行自定义。

 

【插入图片Insert image)】:除直接截图外,用户也可通过点击该按钮导入已有的 PNG 格式图片文件。 

 

建立屏幕区域Create region)】:点击该按钮,进入屏幕区域选择状态,拖拽定位十字线选取屏幕区域。释放鼠标左键,即可将当前选中区域的屏幕坐标信息插入到编辑区中。 

 

【运行Run)】:点击执行当前脚本。快捷键为 Ctrl+RCommand+R)。

 

慢速运行Run in slow motion)】:点击后以较慢的速度执行当前脚本,以红色圆形外框显式标识每一次图像查找定位动作,便于程序调试中进行焦点追踪。快捷键为 Ctrl+Alt+RCommand+Alt+R)。

 

                  第二步:将手机APP的屏幕投影到PC(目前以Android为实践)

我这边使用的是Chrome的一个Vysor插件。

            对!就是它 è 

 

            第三步:使用Python并结合左侧的功能函数完成,脚本的编写。

1、              因为我要实现启动时间的记录,所以要引入time和 datetime,完全和用Python的语言就可以。

2、              以点击APP图标时,记录其启动的时间:

3、              下来就要根据体验标准给出目标图片,记录出现的时间,和之前的启动时间进行做差,即可得到与用户体验接近的启动时间,例如:

 

 

 

4、              可以加个优化:增加一个for循环,多次取均值,结果误差会更小。

5、              现在点击运行,可以看看效果了,不满意还可以调试调试哈   

 

实践完成后的总结:

优点:

1.整体上sikuli小巧、便捷、容易上手。

2.sikuli脚本可以不经过API的编译器直接自动化搜索到任何你能在屏幕上看到的东西

3.不存在标准控件和非标准控件的问题

4.提供.jar包

      便于构建大型的测试框架,实现各类测试工具之间的互补。

5.用例设计与程序实施可分离

      用例设计人员可以只关注图型逻辑关系和测试检查点,不需要懂得具体开发与程序语言基础;程序实施人员可以只进行编程而不过多参与设计。

 

缺点也很明显:

1、一套脚本,可能只针对同一设置;

2、投影的位置也要相对固定,分辨率或者位置发生变化,有可能导致脚本无法跑通;

3、UI发生较大变化时,原脚本需要进行维护;

4、图片的分辨率、色彩、尺寸、唯一性对程序的影响(如果有两个相同的,无法区分具体哪一个)

5、sikuli本身还不完善(处于开发、升级阶段) 还有很多程序bug,能否继续发展还是未知数

6、只认识当前活动的图标(只有当前桌面有才行)

7、截图的话,脚本存储占用空间较大

7、相似度调整需要手动一个个的调整,工作量大

8、测试报告的生成,直接用message的话比较弱,需要用jython编程实现可能会强大一些(还未调研)

 

猜你想问…

            iOS可以用吗?

            理论上,只有可以将屏幕投影到PC就可以,具体请见下回分解

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值