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