Calabash Calabash 模拟多手机同步测试

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

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等。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册