Robotium 测试 tv 盒子 App 的几个问题

剪烛 · 2014年06月17日 · 最后由 思寒_seveniruby 回复于 2014年06月17日 · 3206 次阅读

1 TV 盒子类的设备很大一部分都不能连 USB 线,或者只有能插 U 盘的 USB 口,这样好像就没办法用 adb 连接设备,来发送测试命令了……
有想到两个可能的解决方法,一个是另外写一个 app,用来调起测试。再一个是远程 adb,可是那样需要设备 root,还需要在设备上输入命令行,感觉更加复杂了……

2 盒子类的 app 跟手机类的 app 一个很大的特点是通过方向键控制焦点,我们想有一个功能点希望焦点从一个功能块移动到另外一个功能块时,能够验证是正确的。
类似下面的这张图,好像无法获取焦点框所在的 View(solo.getCurrentActivity().getCurrentFocus() 获取的是整个的 ViewGroup),从来根本不知道焦点是不是在正确的位置

另外,对于焦点移动这样的测试,不知道大家有没有什么好的经验。
目前我做了的,一个是通过最后的结果是否达到预期来判断,但是这个明显很弱,有时候焦点到达了错误的位置,也仍然有正确的结果 。
还有一个是类似压力测试 (我不知道这个算不算,姑且这么说吧),在不同界面,随机发送方向键,或者在分段加载的列表中让焦点经过每一个功能块。

3 我目前测试的应用是一个视屏类的应用,播放视频是使用的是系统的播放器,然后我发现 Robotium 的截图无法截到播放的画面。当控制隐藏了之后截图,就是完全一片黑。
之后我试着用 adb shell /system/bin/screencap -p 命令截图,效果也是一样的。
不知道大家有没有遇到过类似的。或者给个方向看看有没有其他方法

4 Robotium 的主动获取 toast 的问题……额……估计无解……

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

www.testin.cn 上也提供了关于 tv 和盒子的测试体系。也是可以通过 adb 来交互的。
截图那个好像是有个方法可以解决, 听说过。
对盒子不太了解飘过。

你什么时候去的小米啊。

#1 楼 @seveniruby testin 的测试体系介绍下?

@shixue33

第一个问题: 一般都会提供 adbd 服务。 如果不提供自己用串口打开,测试盒子,是不允许使用 eng 版本或者 root 版本的。

第二个问题: 焦点获得的地方可以点进去,看看是不是正确呗

下次分享,我来介绍 testin 的测试体系。上面的免费资源很多,普通的测试工程师是可以用起来的。 @lihuazhang

1,adb connect ip 地址,就可以 adb devices 看到 serial number 了格式:IP:5555
2,这个可以用 uiautomator 吧,或者我们的工具,AndroidRobot 4.3 版本 (迈测 (上海) 信息科技有限公司)
3,视频确实不行的,通过 adb 是抓不到屏幕的

第一个问题有两个办法。
1)串口连接。 打开 xshell 或者 putty,协议选择 Serial
2)adb tcp 连接。例: adb connect :5555

我表示视频播放页面,使用 robotium 自带的截图方法,是黑屏的;但是我用 screencap 是有画面的;
因为 robotium 的截图方法是 view 的方法截屏,视频是自绘控件,用 view 截图的方式截不到

可以考虑 pc 端截图

剪烛 #15 · 2014年06月18日 Author

#3 楼 @seveniruby
(o)/~ 我没有在小米,只是举个栗子,举个栗子。
我们做的是视频类的 App,现在用来调试自动化的就是小米盒子。
期待 itestin 的分享。我从很早的时候开始用 testin 来做手机端适配的测试,但是现在开始做 TV 以后,好像在 testin 上没有找到 TV 盒子的解决方法

剪烛 #10 · 2014年06月18日 Author

#2 楼 @lihuazhang = =~现在其实是这样做的,但是如果结果所有的功能块 enter 进去都是进的同一个 Activity,就没法知道到底是不是到了正确的位置了。

剪烛 #11 · 2014年06月18日 Author

#7 楼 @keen_lau 我 PC 端用 screencap 也是截不到播放的画面的。真的没法呃。

#9 楼 @shixue33 不过目前 tv 盒子也不是太多,所以自己买齐也是可以的。testin 也是最近刚上的。

#10 楼 @shixue33 按坐标吧。 tv 盒子的布局一般都是定死的

#11 楼 @shixue33 你是什么视频软件,感觉你们是做多屏播放的

@shixue33 157546818 来加这个群吧~

android 上视频类的应用,视频播放时,使用 android 上的截屏工具仅能 capture 到 OSD 层的数据,关于视频层数据需要从芯片厂商的 framebuffer 或者和显示相关的底层 buffer 获得;例如目前的 Smart TV 的显示输出通过 Onebyone 或者 Lvds,那么芯片厂商可以获得 LVDS raw data 转出 YUV 或者 Jpeg,png 图片了;

#16 楼 @oatsuper 厂家或者播放器那边开后门即可吧? 一般开发为了自己测试,都会留后门的。

一般是需要和芯片厂商明确改需求,要不然整体 release 给做产品的终端公司的 code 里是没有类似后门的的吧;播放器端的代码应该不行的,需要芯片厂商给出类似的二进制工具,代码里通过 jni 或者 shell 命令来运行获得 OSD 层和 Video 层的都正常显示的截屏

用 DDMS 能截到有画面的图片吗?

20楼 已删除

#19 楼 @keen_lau hi~keen 我尝试了,跟其他截屏结果是一样的,视频画面是黑的

前段时间试了我们自己的应用,也是黑屏,此题无解

剪烛 #20 · 2014年07月19日 Author

#22 楼 @keen_lau 嗯,只能容忍了。- -不过也无所谓了,TV 视频应用环境严峻了,我们项目被砍了。应该短期内不做这个了。

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