终于把这篇收获敲完了,最近思维跳跃的厉害,尝试了很多种写法,都无法写成一篇有理有据有干货的技术分享,只能随性地来巴拉巴拉讲几句,想到哪儿写到哪儿。
经过这次活动,最明显的收获就是心态上的,心态平和了很多。
我们在搭建一个环境的时候,总会遇到各种各样的问题,这是非常正常的,不遇到问题才是不正常的。
所以,拿出打持久战的态度,耐心的跟它死磕。
遇到问题,各种寻求解决的办法,不急躁有条理,这才能体现一个人个人能力和综合素质。
不要被大段大段的英文吓到,一看到就觉得完了完了我搞不定了,这都是些什么鬼。
其实慢慢静下心来看,我们的确是可以看懂的,偶尔不会的单词,查一下,大概意思也是可以猜一猜的。
举个超简单的例子:
Could not start REST http interface listener. The requested port may already be in use. Please make sure there is no other instance of this server running already.
尝试着看一下啊,很容易就看到,哦,貌似是这个端口被占用了。
那么现在怎么办?
首先看看有没有别的窗口正在运行 appium,如果有,ctrl+C 退出
如果没有,我猜可能某次直接强制关掉窗口,这时候需要两行命令:
找到端口 4723 被占用的进程号
lsof -i:4723
杀掉这个进程:
kill -9 6528
这样重新输入 appium,就可以启动服务了
在活动过程中,思寒给了大家一个科学上网的帖子,这里也甩个链接:https://testerhome.com/topics/3378
另外推荐大家一个好用的 *** 工具,mac 和 window 都有,名字叫 Lantern。
安装就可以用,什么都不需要 设置。简直就是像我这样小白的福音。图标是:
其实如果我们想做什么类型的测试,归根到底,我们做的是测试。
功能测试用例谁都写过,前置条件,输入,预期结果,实际结果这几个要素必不可少。
那么无论是接口测试还是自动化测试,都要照着这个思路,写脚本。
每一个脚本都是一个完整的用例。
脚本里需要有前置条件,初始化条件、输入、然后写断言,就是对比预期输出和实际输出。
如果一致,这个用例就 pass,如果不一致,这个用例就 fail.
也许我写的上面这些对于大部分来说都觉得很可笑。
但是我不愿意承认脑子一团浆糊理不清楚思路的就我一个人哈哈。所以还是啰嗦了几句。
还有想说的是,我们在追求各种技术的同时,不要迷失了方向。
我们最主要的还是要验证我们的产品是否符合预期,我们的最终目的还是保证产品的质量,上线后不要出问题。
这就是我自认为的测试的核心价值吧。
不过这样的话其实我觉得还是 monkey 讲的更好更有说服力,我还是老老实实写点尽量不那么水的干货吧。
首先,思路清晰,讲的人清晰,听的人才能听得懂啊。
其次,真的很厉害!演示的时候答疑的时候写提纲的时候总结的时候,一步一步往下分析往下走,遇到问题的时候,就能找到解决的办法。
最后,人格魅力强,没有什么大神架子,结束的时候认真的问几个围着他答疑的妹子的名字。
上午思寒讲安装 appium 的几种方法,让我很受用,一下子从一团糟的脑子里,抽出了线,有了条理。
安装 appium 有三种独立的方式,三种方式没有交叉没有干扰,选一个适合自己的就好,没必要都装。
appium 是使用 node.js 写的,所以首先去官网下载安装 node.js
装好之后,验证命令为:
node -v
出现版本号即为成功:
(npm 之于 node.js 就像是 pip 之于 Python,什么?还不懂,思寒老师讲了个特别形象的例子:相当于 appstore 之于 mac 哈哈 )
如果你 *** 了,命令很简单,就是:
npm install -9 appium
这里啰嗦点,如果没 ***:
先试试这个:(亲测可用)
npm config set registry http://registry.npm.taobao.org
npm install -g appium
不行就试试这个:
客户端是把 appium 服务打了个包,做了个图形化界面的工具,适用于初学者。
刚开始用一用蛮好的,类似于学步车,等会走的时候,就可以不用了~
其中 mac 版本功能比较强大,维护及时,更新快。
windows 版本上一次更新都是几个月前,并没有录制脚本回放的功能。
安装过程很简单,下载安装包就好了。重点是,要 ***。(抠鼻~)
地址就不给了,如果需要就自行搜索,我自己尝试下载了很多次,都是这个德行,气死我了:
最后从一个组里对面的姑娘 U 盘里拷了一个 dmg 文件。
安装后运行,提示版本过低,设置好参数后,依然报错,教练说是版本太低,所以最后卸载了,到现在也没能重装好。
但是即使是 mac 版本,还是有很多 bug,而且有很多莫名其妙的报错,所以当天下午我暂时放弃它了。
下载源代码,自己编译运行。
据思寒说,最新的版本并不稳定,会有 bug,或者不稳定。
恩,我没摸索过,就打算跟命令行死磕了。
接着夸思寒,举手投足都是高手范儿,肚子里有墨水的人,才能口若悬河思路清晰头头是道。
不仅自己会,还能教会别人。先抓重点,然后一项一项说下去。再赞一个。
下午思寒主要讲的是,怎么用工具录制一个脚本并运行起来,怎么调优,以及最后在命令行里运行一个简单的脚本。
在玻璃板上手写了那些框架,还有各个框架的那个图什么什么的,是什么啊?有妹子有照片么?
我不太好意思说,我太困了,没怎么听进去。现在想起来想抽自己啊,最后怎么不拍下来啊啊啊啊!!!!!!
懊悔完了,就说说下午的收获吧:
一个 case 的几大要素:
对于移动客户端的操作,我 get 到的有这些:
欢迎补充说明,个人觉得拿出自己公司的一个 app,写相应的自动化脚本,写的过程中,可以不断总结
断言的方式方法有很多
这个应该像上面的 action 一样是 1-100 过程中要关注的又一个重点
具体点的例子:
import os
import time
from appium import webdriver
success = True
desired_caps = {}
desired_caps['appium-version'] = '1.0'
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
#机型换成自己的
desired_caps['deviceName'] = 'demo'
desired_caps['app'] = os.path.abspath('/Users/lulu/Downloads/xueqiu_770_05041611.apk')
#apk目录换成自己的
desired_caps['appPackage'] = 'com.xueqiu.android'
desired_caps['appActivity'] = '.view.WelcomeActivityAlias'
wd = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
#ip地址设置为本机的0.0.0.0
wd.implicitly_wait(60)
wd = webdriver.Remote('http://0.0.0.0:4723/wd/hub', desired_caps)
#IP地址设置为本机的0.0.0.0
wd.implicitly_wait(60)
def is_alert_present(wd):
try:
wd.switch_to_alert().text
return True
except:
return False
try:
wd.find_element_by_id("login_account").send_keys("13067754297")
wd.find_element_by_id("login_password").send_keys("xueqiu4297")
wd.find_element_by_id("button_next").click()
finally:
wd.quit()
if not success:
raise Exception("Test failed.")
把上面 demo 里的备注部分都改一下,用数据线连一个真机,就可以执行了
如果没有真机,就安装一个模拟器。
这里思寒推荐了一个很好用的模拟器工具,定位用也很好使:叫 genyMotion。
我初步摸索了一下,需要到官网上注册一个账号,然后再下载。
恩,记得一开头分享的心得么,耐心,持久战…
这里多啰嗦几句,怎么在 mac 上找个地儿新建个文件夹放自己的脚本,并且随意编写脚本:
mkdir test
(文件夹名字)cd test
vi test.py
I
(insert),切换到输入模式,可以随意输入删除粘贴等。esc
,退出输入模式:wq
:q
:q!
(备注:上面那些,>符号后面的是操作,代码块太难打了,我懒...)
总结一下:无法坦然的暴露自己的无知,又没有独立解决问题的能力。
说白了就是找教练不积极,导致还有很多问题本来可以在当天解决,现在还遗留状态。
看到有新的地区的活动已经开始举办了,希望妹子们可以放开点,更大胆点,别怕自己的问题有多愚蠢。
教练们人都非常 nice,不会有人嘲笑你反而会非常耐心的解答你的疑问,直到你弄懂。
我总结下我还需要摸索的比较愚蠢的问题们:
找个自己公司的 apk,按照功能块,做个计划,录制脚本,然后把代码拷出来,尝试自己优化一下。
争取多写一些可运行的 case,最好覆盖一下主要功能。
啥?sdk 是个啥?jdk 呢?我到底要装个啥?这么多的扩展包模拟器包都要下载,这没个几小时下不来吧??
很快就蒙成一片了…对建立自信心很不利啊妹子们!
把 genyMotion 安装好,用起来!
哪怕偷偷在公司测试服务器上搭建一个 jenkins 服务,把自己写的脚本部署上去,实现下自动执行。这个放到后期吧~~
不说了,我滚去继续摸索了…
Ps:欢迎拍砖吐槽,很怕有常识性错误或者其他错误误导其他初学者
PPs:想留着脸卖萌用,别打脸哈~~