sptt

sptt是移动端UI自动化测试的一种解决方案,全称为special tool of test。sptt提供了一套测试解决方案,并使用命令行完成相关操作,最终可集成在各种后续的流程中。

sptt内部整合了第三方测试框架-appium,由appium层抹平iOS和android环境下的测试差异,同时sptt又针对appium的相关接口做了二次开发层面上的优化,封装了可直接使用的操作接口,并提供了开发和调试相关功能,方便使用。

关于规范介绍,请看

sptt规范介绍

关于如何开发atom实例,请看

如何开发sptt工程的原子操作

安装sptt环境

为了测试的灵活性,sptt提供两种测试方式:

  • 本地测试
  • 云端测试

由于本地测试需要在本地环境部署相关的测试环境,因此在这里并不推荐测试人员使用本地测试。具体如何在本地部署环境请看官方文档

首先,确保电脑上已经安装nodejs环境,并设置npm的仓库为公司的内部私有仓库:

npm config set registry http://npm.showjoy.net

然后,运行命令,安装sptt:

sudo npm install -g sptt

这样,sptt命令行安装完毕。

针对一个ios工程,在对应目录下运行云端测试:

sptt run -t ios --online 10.1.2.49

针对android工程,则有:

sptt run -t android --online 10.1.2.49

sptt命令使用

sptt提供了三个子命令:

sptt init

sptt run

sptt publish

"sptt init"用于初始化目录结构,并提供了相关模板。再创建一个新的sptt测试工程时,应该使用命令行进入当前目录,执行sptt init初始化目录;

“sptt run”执行测试用例,其中有多个选项:

“-t”指定运行测试用例的环境,可以取值“ios、android”;

“--online”指定云端测试主机的ip地址,如果不设置online则在本地环境运行测试用例;

“-n”指定执行具体名称的testcase文件,而不是执行默认的所有测试用例,如果要执行多个文件,必须使用**“,”**连接多个文件名。

sptt run -t ios --online 10.1.2.49 -n test1,test2,test3
//执行test1、test2和test3这3个测试用例集合

"sptt publish"用于发布ios的测试包(需要在在测试包所在目录下运行命令),android测试包的发布使用android包发布流程。需要注意的是,ios测试包是编译后的运行在模拟器上的.app文件,android则是.apk文件。

测试包的发布必须制定版本号,格式为x.x.x.

cd pwd(DaRenShop.app) // 切换到app文件所在的目录
sptt publish 0.0.5

示例

首先,从gitlab的testcase组中clone示例工程(https://github.com/royalrover/sptt-firstBlood);

pwd  //out: /Users/showjoy/github
git clone http://git.showjoy.net/testcases/first-blood
cd /Users/showjoy/github/first-blood

其次,确保示例文件“ios/caps.json”中的app路径正确,默认引用的是我主机上的测试包;

最后,执行命令

sptt run -t ios --online 10.1.2.49

调试

sptt提供了调试功能,它分为两部分:

  • 日志
  • 截图

日志

其中,日志功能在macbook上有两个文件:命令行输出文件sptt.runtime.log和sptt内核-appium输出文件appium.log

sptt.runtime.log输出的信息也就是命令行中输出的信息,它用来记录执行命令的所有输出;

appium.log记录云端或本地的appium服务器输出信息,当测试用例出错时,通过sptt.runtime.log文件不足以找出错误所在,这样可以通过查找appium.log来分析sptt与appium交互,并将相关的错误反映给开发者。

需要注意的是,在windows系统的cmd命令默认未提供相关功能,因此sptt并未提供appium.log文件。

截图

sptt在每次原子操作执行失败后保存当前视图快照,方便测试人员快速定位错误页面和步骤,集中重点debug。快照存放在工程的“out/snapshoot”目录中,图片的名称按照“name-content@name[action]{timer}.png”格式命名,透过名称可以了解当前元素的选择器和执行的操作及其时间,语义化调试。

结果分析

sptt运行完测试用例集合后,会生成相关报表。目前测试报表路径在“out/testcaseReport.html”中,记录了测试用例集合运行的总时间、每个测试用例执行时间以及运行结果,对使用者更人性化。

移动端测试方案--sptt的更多相关文章

  1. Memory及其controller芯片整体测试方案(下篇)

    {  第三部分  }  DDR总线的设计.调试和验证  在计算机架构中,DDR作为程序运算的动态存储器,面对如高性能计算.图形计算.移动计算.工业应用等领域的要求,发展出DDR4,以及用于图形计算的G ...

  2. Java 服务端监控方案(四. Java 篇)

    http://jerrypeng.me/2014/08/08/server-side-java-monitoring-java/ 这个漫长的系列文章今天要迎来最后一篇了,也是真正与 Java 有关的部 ...

  3. 脚手架vue-cli系列五:基于Nightwatch的端到端测试环境

    不同公司和组织之间的测试效率迥异.在这个富交互和响应式处理随处可见的时代,很多组织都使用敏捷的方式来开发应用,因此测试自动化也成为软件项目的必备部分.测试自动化意味着使用软件工具来反复运行项目中的测试 ...

  4. 有了这套flexible.js 移动端自适应方案,你就能在移动端的来去自如, (*^__^*)

    flexible.js 移动端自适应方案 一,flexible.js 的使用方式: github地址:https://github.com/amfe/lib-flexible 官方文档地址:https ...

  5. APP端测试,常见功能测试点汇总

    除去每个产品和版本不同的业务需求以及功能,针对于大多数的APP的共同点和移动设备的特性,本文总结了一些APP功能测试中经常遇见,需要考虑到的测试点以共参考 一.安装和卸载 应用的安装和卸载在任何一款A ...

  6. finereport普通报表的移动端自适应方案

    移动端报表呈现,首先要求的是页面随手机屏幕大小自动放缩(自适应),下面给出一个普通报表中的finereport移动端自适应方案,适用于finereport 7.1之前的版本. 首先,了解一下当前我们可 ...

  7. 从Google开源RE2库学习到的C++测试方案

    最近因为科研需求,一直在研究Google的开源RE2库(正则表达式识别库),库源码体积庞大,用C++写的,对于我这个以前专供Java的人来说真的是一件很痛苦的事,每天只能啃一点点.今天研究了下里面用到 ...

  8. web端测试和移动端测试的区别小记

    转:http://qa.blog.163.com/blog/static/19014700220157128345318/ 之前一直参与web端的测试,最近一个项目加入了移动端,本人有幸参与了移动端的 ...

  9. Android MediaCodec硬编兼容性测试方案

    作者:阿宝 更新:2016-08-15 来源:彩色世界(https://blog.hz601.org/2016/08/15/android-mediacodec-hardcode-compatibil ...

随机推荐

  1. Eclipse-ee 启动Tomcat后浏览器无法访问Tomat,并且Web项目服务部署

    环境: Ubuntu 14.04 + Eclipse-ee +  Tomcat7 问题: 在Eclipse中建立Server时选择的Tomcat7,Server的运行时选择的时自己安装的Tomcat目 ...

  2. Memcached【第二篇】高可用集群搭建

    第一步:准备 1. 架构信息 利用 magent 搭建 memcached 集群,实现性能的高可用. IP Port 主从 192.168.6.129 11211 主节点 192.168.6.130 ...

  3. 测试不同格式下depth buffer的精度

    这篇文章主要是参考MJP的“Attack of The Depth Buffer”,测试不同格式下depth buffer的精度. 测试的depth buffer包含两类: 一是非线性的depth b ...

  4. Android布局管理详解(1)—— LinearLayout 线性布局

    Android的布局方式共有6种,分别是LinearLayout(线性布局).TableLayout(表格布局).FrameLayout(帧布局).RelativeLayout(相对布局).GridL ...

  5. WeMall微信商城源码插件代金券部分代码

    WeMall微信商城源码插件Coupon代金券代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 AdminController.class.php <?php na ...

  6. 1036: [ZJOI2008]树的统计Count

    1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7496  Solved: 3078[Submit] ...

  7. 3377: [Usaco2004 Open]The Cow Lineup 奶牛序列

    3377: [Usaco2004 Open]The Cow Lineup 奶牛序列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 16  Solved ...

  8. DAX/PowerBI系列 - 参数表(Parameter Table)

    DAX/PowerBI系列 - 参数表(Parameter Table) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★☆(4星) 概况: 这个模式比较简单灵活,而且很实用.所用的DAX语句也比较简 ...

  9. wxpython tab切换页面

    最近没事学习下wxpython,发现很少有关于页面切换的demo,这边分享下2中切换的方法.第一种:利用wx.Notebook第二种:利用Sizer布局实现(自己写的),代码没有涉及到什么重构之类的优 ...

  10. (10)集合之双列集合Map,HashMap,TreeMap

    Map中的元素是两个对象,一个对象作为键,一个对象作为值.键不可以重复,但是值可以重复. 看顶层共性方法找子类特有对象. Map与Collection在集合框架中属并列存在 Map存储的是键值对 Ma ...