2020年是一个魔幻的年份,那么在这一年里,我们不妨玩的更科幻一点。
在下面这个视频里,我们看看怎么样使用siri帮我们做自动化测试吧。
用siri做自动化测试呀https://www.zhihu.com/video/1248676148479512576
原理分析
原理其实很简单。首先用语音唤醒siri,调用ios的快捷指令,自动给在公司的小伙伴打电话,让他们配合表演,做一阵各种操作,把测试结果返回。
当然,这是开玩笑的。
真正的原理如下图所示
其实就是用语音唤醒siri之后调用ios的快捷操作app,通过ssh到远程服务器的方式,调用远程服务器上的测试脚本,运行用例,并将结果返回。
用到的设备
- 一台ios机器,iphone和ipad都可以,升级到最新版本
- 一台云服务器,能ssh访问
测试用例
因为偷懒的关系,我就没有写特别复杂的用例了,这里我就用python简单测试了一下重定向科技的所有课程页面,属于简单的界面UI测试范畴。
不过这里没有用到selenium,而是直接发送1个get请求拿到页面的html,然后从html标签中分离出我想要的关键信息做断言。
先写自然语言的用例
- 发GET请求到http://www.itest.info/courses
- 拿到html后用css选择器.servive-block-in > h4拿到所有课程的名称
- 课程名称里包含全栈测试开发班这个课程,这里用包含断言,提升了用例的鲁棒性,也就是说跑多次不容易报错
再用python去实现一遍
1. import requests, unittest
2.
from bs4 import BeautifulSoup
3.
url = 'http://www.itest.info/courses'
4. html = requests.get(url).text
5.
soup = BeautifulSoup(html, 'html.parser')
6.
titles = [i.text for i in soup.select('.servive-block-in > h4')]
7.
course_name = '全栈测试开发班'
8.
assert course_name in titles, '{}不在课程列表中'.format(course_name)
9. print(titles)
10. print('All good')
这里用到了2个第三方库
- requests:简化http的各种操作
- BeautifulSoup4: html parser,方便我们从html标签中分离出各种有效信息
用例的整体思路借鉴了多年前google提出的测试降级思路,也就是如果页面上的一些元素可能是干扰项,那么就需要在用例中去掉这些干扰,实际上这个脚本其实就是一个简单的爬虫,只是加了断言而已。
确保可以远程运行
将脚本放到云服务器上,运行
1. python itest.info.py
结果应该如下
1.
['全栈测试开发班', '性能测试班', '接口自动化测试开发--Python班', 'Selenium自动化测试--Python班']
2. All good
配置快捷指令
一步一步按图来配置就好了。
这里我配置了
- 通过ssh运行脚本,在这里选择ssh到了远程服务器,并执行了shell脚本
- 播放声音,这个纯属为了好玩
- 最后显示shell脚本结果,把运行的结果返回回来
配置好快捷指令之后就可以用siri去运行这个指令了。
最后
用siri去执行自动化测试脚本,听上去感觉脑洞很大,但只要了解了原理,就会发现其实并不算困难。
整个过程看上去很简单,但其实包含了一些值得分享的思路。
- 能在命令行里跑的都在命令行里跑
- 能在云服务器跑的都在云服务器上跑
- 工作中其实有很多地方都可以用到自动化,主要看脑洞够不够大
通过siri + 快捷操作的方式,你还可以实现
- 通过siri去部署
- 通过siri去运行爬虫
- 通过siri去执行jenkins任务,ssh到一台跳板机,然后通过curl运行jenkins api
- 其他更多....
有兴趣的同学不妨亲自动手试一下,跑通了流程以后也许可以在面试的时候表演一下,比如假装收到告警短信,然后低调的语音唤醒siri,说跑一下现网的监控测试,然后就优雅的等待测试结果或翻车,总之,人生如戏,全靠演技。