2020年了,终于可以让siri帮我们做自动化测试了

乙醇 创建于 3 个月 之前

最后更新时间 2020-11-02

2020年了,终于可以让siri帮我们做自动化测试了

title = "2020年了,终于可以让siri帮我们做自动化测试了"
description = ""
author = ""
tags = []

2020年是一个魔幻的年份,那么在这一年里,我们不妨玩的更科幻一点。

在下面这个视频里,我们看看怎么样使用siri帮我们做自动化测试吧。

原理分析

原理其实很简单。首先用语音唤醒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去实现一遍


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

配置快捷指令

一步一步按图来配置就好了。

这里我配置了

  • 通过ssh运行脚本,在这里选择ssh到了远程服务器,并执行了shell脚本
  • 播放声音,这个纯属为了好玩
  • 最后显示shell脚本结果,把运行的结果返回回来

配置好快捷指令之后就可以用siri去运行这个指令了。

最后

用siri去执行自动化测试脚本,听上去感觉脑洞很大,但只要了解了原理,就会发现其实并不算困难。

整个过程看上去很简单,但其实包含了一些值得分享的思路。

  • 能在命令行里跑的都在命令行里跑
  • 能在云服务器跑的都在云服务器上跑
  • 工作中其实有很多地方都可以用到自动化,主要看脑洞够不够大

通过siri + 快捷操作的方式,你还可以实现

  • 通过siri去部署
  • 通过siri去运行爬虫
  • 通过siri去执行jenkins任务,ssh到一台跳板机,然后通过curl运行jenkins api
  • 其他更多....

有兴趣的同学不妨亲自动手试一下,跑通了流程以后也许可以在面试的时候表演一下,比如假装收到告警短信,然后低调的语音唤醒siri,说跑一下现网的监控测试,然后就优雅的等待测试结果或翻车,总之,人生如戏,全靠演技。

我要留言

暂无评论