大家讨论一下,android平台自动化测试如何实施?
目前公司打算在功能测试这块实施自动化,关于这块,谁有什么好的思路聊一下? 共同关注、目前android测试刚开始,希望高手们多发言 别沉 我有个问题,android的真机能通过串口将屏幕映射到PC的模拟器上吗?LS的问题是一个关键点
1、如果不能,那可以试试TestQuest、mShell这类的,不过只能测基本功能,个人感觉用于不用区别不大。要么就自己写工具,可以参考:
http://www.51testing.com/?uid-97659-action-viewspace-itemid-215037
2、如果可以,又有经费的话,可以考虑QTP的SeeTest组件。
如果没经费,试试这种:
http://bbs.51testing.com/thread-139723-1-1.html Robotium,利用android提供的unit test 框架实现针对activity的测试。在IDE环境中编写case 目前好像可以不需要源代码只要APK编写测试脚本了。
Autoandroid,基于android junit编写的测试框架 功能强大 可以完成application test
另外python已经有能运行在android环境的client 可以参考
https://www.ohloh.net/p/android-scripting
以上全部是开源框架
[ 本帖最后由 kaza 于 2010-6-9 14:49 编辑 ] robotium 网址是 code.google.com/p/robotium
实例
public class EditorTest extends
ActivityInstrumentationTestCase2<EditorActivity> {
private Solo solo;
public EditorTest() {
super("com.test.editor",
EditorActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testPreferenceIsSaved() throws Exception {
solo.sendKey(Solo.MENU);
solo.clickOnText("More");
solo.clickOnText("Preferences");
solo.clickOnText("Edit File Extensions");
Assert.assertTrue(solo.searchText("rtf"));
solo.clickOnText("txt");
solo.clearEditText(2);
solo.enterText(2, "robotium");
solo.clickOnButton("Save");
solo.goBack();
solo.clickOnText("Edit File Extensions");
Assert.assertTrue(solo.searchText("application/robotium"));
}
@Override
public void tearDown() throws Exception {
try {
solo.finalize();
} catch (Throwable e) {
e.printStackTrace();
}
getActivity().finish();
super.tearDown();
}
}
回复 6# 的帖子
robotium 是个很有前途的工具,不过目前只能以第三方软件的形式装在手持终端上测试,期待它的后续版本。 我也去跑过那个demo,在真机上可以通过USB调试模式跑起来(SDK1.6)但是不晓得现在有没有不依赖于工程的版本。
另外有哪位大侠知道怎么怎么在android的project里面截图吗?
我现在只能获得RawImage,但是还没有想到怎么转换成通用格式的图片。藐视android project不支持Image类。 robotium的讨论组里有个话题是提到截图的 需要翻墙才能访问
http://groups.google.com/group/robotium-developers/browse_frm/thread/b971d5f27edb0a86#
将需要截屏的图像保存在sd卡上,在编写testcase时调用 takeScreenShot()方法就能完成指定的截屏
Just wanted to share how you can take canvas screen shots and save to
sdcard during test, something to add to robotium...
public static String SCREEN_SHOTS_LOCATION="/sdcard/";
public static void takeScreenShot(View view) throws Exception {
takeScreenShot(view, "default");
}
public static void takeScreenShot(View view, String name) throws
Exception {
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b = view.getDrawingCache();
FileOutputStream fos = null;
try {
File sddir = new File(SCREEN_SHOTS_LOCATION);
if (!sddir.exists()) {
sddir.mkdirs();
}
fos = new FileOutputStream(SCREEN_SHOTS_LOCATION+name+"_"
+ System.currentTimeMillis() + ".jpg");
if (fos != null) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.close();
}
} catch (Exception e) {
}
}
//call
takeScreenShot(solo.getViews().get(0), "testname"); 感谢楼上,经测试,完全可以。
非常感谢。
另外,希望这个贴子不要沉。
我的下面一个问题是:
对于这个测试工程,如果组织测试用例的框架。
比如说,我现在有一个测试工程NotePadTest
我想分成2个模块来进行测试
1、是notepadEdit 的activity
2、是notepadList的activity
那么我的case组织该如何安排? 试一试用android maven组织测试结构
[ 本帖最后由 kaza 于 2010-6-17 15:07 编辑 ] 有个疑问一直困扰着我,希望有人能解答
在eclipse中编写unit test时用的junit版本为4,语法风格也按照junit4的书写,但是貌似android的test runner是调用junit3.x完成测试的。
所以test case和test方法要用test作为前缀,没法使用@Test public void method(){}。 藐视目前的1.6之前的sdk不支持junit4,其他的支持不支持不知道哎。
另外,楼上android maven应该是工程管理的吧? QTP+imageXpro Android系统下应用程序的测试现在应该还算是个新的领域,网上关于这方面的资料很多都是基于白盒测试的,一般都是基于JUnit框架和Android SDK中android.test等命名空间下的内容进行(像robotium,autoAndroid这两个Google的开源项目),但是有一个前提,那就是必须要有应用程序的源代码以提供测试接入点,但是这在很多软件公司中是不现实的。很多测试工程师做的工作是完全黑盒,基本接触不到源代码,白盒测试大部分也是由开发自己完成。
本人花了一点时间研究了一下Android的纯黑盒测试(下面链接),希望对同学们有点帮助,欢迎交流!
http://blog.csdn.net/roger_ge/category/680331.aspx To Roger:
robotium可以只使用apk测试,不需要接触源码,但是需要开发人员提供详细的GUI activity清单,最好对各个activity之间的工作流程有详细的图示。
参考http://code.google.com/p/robotium/wiki/RobotiumForAPKFiles
PS:我曾经在你空间中留言过,robotium和autoandriod。:lol 原帖由 kaza 于 2010-7-7 15:38 发表 http://bbs.51testing.com/images/common/back.gif
To Roger:
robotium可以只使用apk测试,不需要接触源码,但是需要开发人员提供详细的GUI activity清单,最好对各个activity之间的工作流程有详细的图示。
参考http://code.google.com/p/robotium/wiki/RobotiumFor ...
多谢kaza同学的指引,空时研究一下 大家是否有相应的测试用例啊?有的话,麻烦转我个 peng.baozhu@spreadway.com.cn 谢谢啦
回复 4# 的帖子
如果只是想把将屏幕映射到PC的模拟器上,可以考虑使用ASM(Java 程序。需要机器上安装java环境)命令行模式运行 X:\java -jar asm.jar(默认asm.jar在X盘下)
By the way,android adb drivers is needed。