Calabash Calabash 模拟多手机同步测试

超爱fitnesse · 2014年10月25日 · 最后由 超爱fitnesse 回复于 2015年03月15日 · 2993 次阅读
本帖已被设为精华帖!

Calabash 不支持多手机同步测试,所以不能测试如微信,qq 之类两个手机互发消息的场景。

但是利用 cucumber 调用符合 http 协议的 restful api,就能达到模拟多手机同步测试的目的。

示意图

看看如下示意图,应该就明白了

测试网络图:

测试网络图

测试顺序图:

测试顺序图

模拟测试方式

如果双方是对等的,如微信聊天,那么手机上只登录其中一个账号就能测试所有场景。

如果双方是不对等的,如一个买家,一个是商家,
那么,可以先手机上登录买方账号,卖方账号用调用服务器的 restful api 的方式来模拟;
第二步,反过来手机上登录商家账号,买方账号用调用服务器的 restful api 的方式了模拟。

cucumber 调用 restful api 的技术

说明一下,calabash 是完全兼容 cucumber 的,所以能直接调用 cucumber 的自定义步骤。

httparty——ruby http client 库,调用符合 http 协议的 restful api

require 'httparty'    

login_url = "http://api.xx.com/login"
headers = { 'Content-Type' => 'application/json' }
body = { username: 'jerry', password: 'tom' }.to_json
options = { body: body, headers: headers }
response = HTTParty.post(login_url,options)

json——ruby json 库,解析 restful api 返回的响应内容,如果是 json 格式的话

json_obj=JSON.parse(response.body)

wrong——ruby assert 库

require 'wrong'    
include Wrong
assert { response.code==200 }
assert { json_obj["username"]=="jerry" }

先介绍到这里了,具体用法和示例可以求助百度大大。

共收到 9 条回复 时间 点赞

想法真是太棒了~

good~

这个方案简单又实用~
同一个框架下的 web 自动化、接口自动化、App 自动化,接口可与 web 交互,亦可与 app 交互,实现多设备的效果。
貌似以 Python 为驱动的话这一套做下来并不难。

知音很多啊!
只要有 web 服务可以调用,那些多手机场景、跨前后台场景都可以测到。

restful api, 能再详细点吗?另外,@anikikun, 你指的以 PYTHON 为驱动指的是什么?

#5 楼 @ftvbftvbq
原则就是,APP 怎么调用服务器 API(一般都是符合 REST 的 http 接口)的,cucumber 就怎么调用。

ruby 的代码还可以更简练.
使用服务器来中控, 还可以做到并发控制. 云端化是趋势. 现在的 robotium 就缺少这一层的封装, 所以更复杂的东西才需要这种封装.

appium 就可以直接实现同步测试. 因为他一开始就是服务化的.

#7 楼 @seveniruby
如果用 appium 应该如何实现啊?

#8 楼 @lele

  1. 求助 7 楼大神
  2. appium 中能不能调用 python 的 http 库: requests, httplib2 等。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册