通用技术 [分享] 自动化测试与持续集成方案-- Android 兼容性测试

snake · 2015年05月25日 · 1987 次阅读

最近有点忙,帖子也没来更新
这个方案只是自己闭门造车做的,而且很多细节,很多问题也没时间去解决,现在放出来只是起个抛砖引玉的作用,看看别人家是怎么做的。

很多时候, 兼容性问题很让我们头疼,偏偏是那么个别的机型,总跟我们过不去。 而网上的云测,领导是不放心的。
有时候很多机型闲置也是种资源浪费。

思路

实现这个的思路很简单,我之前有搭建过 Robotium 的测试框架,采用的是 pageobject 的模式,然后用 spoon 分发。
论坛里面有 spoon 的教程 :
配合 Robotium 多设备分发测试,生成测试结果
spoon+robotium+jenkins 进行自动化持续回归测试
然后用两个 "一拖四" (学名:USB 集线器) 来跑。

淘宝上买的,2 个才 20 块钱。

实践

当时不知道一台电脑能同时跑几个手机终端 (本人联想台式机, 10G 内存,两个前置 USB 口), 后面打听了一下,这个跟主板的电压有关。
开始尝试。

测试的产品是账号互斥的。 就想了个法子,在脚本中增加一个读 sdcard 文件的函数, 然后把账号写到 sdcard 里面。
adb push C:\Users\tangguo\Desktop\build\number.txt /sdcard/number.txt
方法虽然很土,但是解决了账号互斥的问题。
一个登录的 case:

package com.tangguo.testcases;

import org.testng.annotations.Test;

import com.tangguo.action.addfriendsaction;
import com.tangguo.action.chataction;
import com.tangguo.action.loginlogout;
import com.tangguo.test.Page;

public class login extends loginlogout {

    public login() throws ClassNotFoundException {
        super();
    }

    public void testloginandout() throws ClassNotFoundException {
        Page page = new Page();
        String a=page.read();
        Object[] as= page.splitstring(a);

        loginandout(as[0].toString(), as[1].toString());
    }
}

然后跑 case, 跑出来的结果如下:

以上是一个一拖四跑出来的结果。
请大家无视掉 case 的成功率和报告乱码的问题。case 失败这么多是因为我的脚本很久没更新了,产品已经改得面目全非了,账号互斥的问题似乎没有得到很好的解决。

思考

现在一台机跑两个一拖四 (八台手机) 没啥问题,但是跑的步调不一致,可能跟手机性能有关系, 跑起来比较慢。如果一个跑两台手机 (两个总共跑四台手机),明显流畅很多。
现在还有几个问题我还没有完全解决:

  1. 前面说过的,账号问题:我写 sdcard 了。但是开始的时候还能读取,但跑到后面都用一个账号了.
  2. 在第一次跑用例的时候,手机都有个安装过程,有的机子系统会弹警告框,看到论坛里面也有人发帖来讨论了, 我也得研究一下。
  3. Robotium 签名问题,少数机型用 debug 签名包始终安装失败,这个问题还在解决中。

好了,帖子就写这么多了,各位大神们是怎么做的呢?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 8 条回复 时间 点赞

提问~这其中各种容错是怎么做的,包括死机,没有响应,adb 不稳定等。

#1 楼 @monkey 还没深究,请大神明示。

#1 楼 @monkey 每隔开一段时间 看看。。

#3 楼 @lihuazhang 你养了什么鱼。。。。。。

#2 楼 @snake 这个一般要用 ddmlib。。修改之后的 ddmlib。。。

如果手机多,可以用那种带电源的 USB-HUB

#6 楼 @da_sheng 那考虑的问题就更多了。 你们有成功实践过吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册