1. Intro
本周业余时间,主要在研究如何使用Appium,内容包括Appium是什么,架构,安装,使用以及测试用例的写法。
2. Appium简介
Appium的Introduction页面介绍了Appium,采用经典的CS架构,利用 WebDriver 封装调用各平台的测试框架(现在支持iOS,Android,FirefoxOS),因此在使用的时候需要先启动服务器再在客户端进行测试。
对技术细节及背后的实现感兴趣的,可以深入看源码。现在,我们的目标是运行Appium并成功进行测试。
3. Tutorial
为了上手,可以看GetStarted或者iOS Tutorial。因为我只侧重iOS,因此下面把tutorial中涉及到的内容摘录出来。
3.1 Environment(环境配置)
Install the latest stable release of Ruby.
\curl -sSL https://get.rvm.io | bash -s stable
source /Users/xxxx/.rvm/scripts/rvm
rvm install ruby
Make sure RVM is using the correct Ruby by default
rvm list
rvm install ruby-2.1.1
rvm --default use 2.1.1
If you have an old ruby/rvm, you can upgrade with
rvm get head
rvm autolibs homebrew
rvm install ruby
Update RubyGems and Bundler.
gem update --system
gem install --no-rdoc --no-ri bundler
gem update
gem cleanup
Install appium_console gem.
gem uninstall -aIx appium_lib
gem uninstall -aIx appium_console
gem install --no-rdoc --no-ri appium_console
Install flaky gem.
gem uninstall -aIx flaky
gem install --no-rdoc --no-ri flaky
Install brew(if installed, ignore)
ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
Install nodejs using brew.(if installed, ignore)
brew update
brew upgrade node
brew install node
此处注意:如果以前已经安装过node的,可能使用了sudo
权限,这里会对Appium的启用有影响,需要安装Appium的方式安装node。
check versions:
node --version
npm --version
Install grunt.
npm install -g grunt grunt-cli
Run the version command from the appium folder. If you’re not in that folder, the grunt version will not display.
grunt --version
grunt-cli v0.1.13
grunt v0.4.2
install ant && maven
brew install ant
brew install maven
3.2 Appium&&Authorize (安装与授权)
此处操作是在源码中进行的
get appium
git clone git://github.com/appium/appium.git
cd appium; ./reset.sh --ios//只做iOS测试
Authorize:
sudo node bin/authorize-ios.js
Start
node .
除了命令行启动的方式,Appium也提供了App启动方式,官网下载后直接安装。打开后,可以根据点击需要的测试平台填入相应App的信息,启动即可。Appium的app还内置了inspector,可以连接app的时候查看各个页面元素,也提供了多种语言获取元素,方便测试用例的撰写。
3.3 Install client library
https://github.com/appium/sample-code/tree/master/sample-code/examples/python
因为用python写用例,需要安装:
pip install Appium-Python-Client
pip install pytest
使用方法:
py.test ios_simple.py
py.test -n2 --boxed ios_simple.py
其中的python文件需要遵循一定的写法。
使用其他语言的可以在这里查看,目前支持的语言还是挺多的。
4. sample(demo实战)
进入源码的sample-code
文件夹,其中apps
中是待测程序,examples
中是不同语言版本的测试用例。其中/example/python/ios_simple.py
是征对/apps/TestApp
的测试用例,我们如下进行测试:
//启动Appium
//启动方式1
appium
//启动方式2
cd /Appium/source/path
node .
//运行测试用例,需要新开terminal
py.test ios_simple.py
稍等一会,会启动iOS模拟器,然后运行用例,测试结果会在terminal中显示。
在运行过程中,该用例可能需要修改32和49行的部分代码:将elements()
替换成.elements()
。
从ios_simple.py
中大致可以明白测试用例的写法,比如setUp
负责建立测试环境如:app路径,测试平台等,tearDown
是告诉appium退出。
另外,详细的测试语法还要继续学习。
4.1 真机测试
首先安装:
brew install --HEAD ideviceinstaller
详见这里。
然后就可以启动appium:
appium -U "udid" --app "bundle-id"
启动成功后,新开terminal,启动测试脚本:
py.test ios_test.py
其中,测试脚本中desired_capabilities
需要更新:
desired_capabilities={
'app': app,
'platformName': 'iOS',
'platformVersion': '8.1',
'deviceName': 'iPhone 6',
'udid':'df41e04b1ea7dbfa0a7df54d49fc9f8c228ab20b',
'bundleid':'io.appium.TestApp',
}
官方也有Deploying an iOS app to a real device的教程,步骤包括生产签过名的app,使用fruitstrap
部署app到真机,然后再启动appium。
使用py.test客户端启动测试的过程中,就包含了部署的部分,当然待测试的app需要先安装到真机。
5 展望
这个自动化测试的平台搭建成功后,还是很兴奋的。下一步就是学习case怎么写,虽然一开始会感觉负担比较重,但是会节省以后的空间。
另外,还发现一个论坛testerhome–测试员的家,看英文累的可以参考这里。
Comments