给项目经理的一份android自动化测试报告调研(转)
上一篇 / 下一篇 2011-12-28 11:14:32 / 个人分类:自动化测试
优化测试速度:可非常快速的运行上万条记录
确定性:能真实快速搭建测试环境,测试数据,重现缺陷
测试环境搭建:可以结合多种编程语言及技术协助搭建测试环境,防止手工测试重复劳动,如批处理技术
提高技能:可提高测试人员技能,同时提高对测试的兴趣,防止对手工测试感觉枯燥
2、什么项目适合自动化测试
● 产品型项目。产品型的项目,每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能。这部分测试完全可以让自动化测试来承担, 同时可以把新加入的功能的测试也慢慢地加入到自动化测试当中。
● 增量式开发、持续集成项目。由于这种开发模式是频繁的发布新版本进行测试,也就需要频繁的自动化测试,以便把人从中解脱出来测试新的功能。
● 能够自动编译、自动发布的系统。要能够完全实现自动化测试,必须具有能够自动化编译,自动化发布系统进行测试的功能。 当然,不能达到这个要求也可以在手工干预的情况下进行自动化测试。
● 回归测试。回归测试是自动化测试的强项,它能够很好的验证你是否引入了新的缺陷,老的缺陷是否修改过来了。在某种程度上可以把自动化测试工具叫做回归测试工具。
● 多次重复、机械性动作,将烦琐的任务转化为自动化测试。自动化测试最适用于多次重复、机械性动作,这样的测试对它来说从不会失败。比如要向系统输入大量的相似数据来测试压力和报表。
● 需要频繁运行测试。在一个项目中需要频繁的运行测试,测试周期按天算,就能最大限度的利用测试脚本
3、***为什么适合自动化测试
1)***是产品型项目,并且已经有现成的产品,且核心功能比较稳定。但是每次集成一些小得功能都要进行反复和重复的功能测试,特别是冒烟测试,这样的测试会让功能测试人员感到疲倦,有可能遗漏一些bug所以这对这些功能做一些自动化就可以解决功能测试人员的这种疲劳。
3)其中Robotium就是一款开源的android自动化测试框架,其特点是:Robotium能够方便你为Android应用程序编写强大、健壮的自动黑盒测试用例。利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案Robotium支持Activities、Dialogs、Toasts、Menus和Context Menus。
4、自动化测试思路
1)无论是做手工测试还是自动化测试,当然第一步都是要对被测试的系统有充分的认识和了解,和手工测试相比,做自动化测试不仅仅要了解被测试系统的功能逻辑,还要了解被测试系统的代码结构及其空间的名称和属性。
2)根据被测试产品的功能设计测试用例,当然也可以根据手工测试时候的测试用例进行编写自动化测试用例。
3)搭建测试环境:已经安装eclipse 、Eclipse已经配置好android相关环境、存在已经创建模拟器
4)创建测试工程,并导入robotium的jar包编写测试框架和测试用例。
public static void testlogin() throws Exception{ solo.sleep(2000); String appname=solo.getCurrentActivity().getLocalClassName().toString(); System.out.println(appname); // System.out.println(solo.getButton(0).getText()); //System.out.println(solo.getButton(1).getText()); solo.sleep(3000); if (solo.searchButton("退出")){ System.out.println("第二个按钮名称是:"+solo.getButton(1).getText()); solo.clickOnButton("知道了"); } else{ solo.sleep(3000); System.out.println("第二个按钮名称是:"+solo.getButton(0).getText()); solo.clickOnButton(0); solo.waitForActivity("ui.login.LoginActivity",2000); solo.clickOnButton(2); System.out.println(solo.getCurrentActivity().getLocalClassName().toString()); System.out.println("第二个按钮名称是:"+solo.getButton(1).getText()); System.out.println("第三个按钮名称是:"+solo.getButton(2).getText()); assertTrue(solo.searchButton("用户登录"));//检测用户登录按钮 //assertTrue(solo.searchButton("注册"));//检测注册按钮 //assertTrue(solo.isCheckBoxChecked(0));//检测用户登录按钮 } //solo.enterText(0, "123"); //solo.clickonscreen(x.y); //Button button =solo.getButton("登录"); //solo.clickOnButton(1); //System.out.println(button); //solo.clickOnButton("登录"); //solo.sleep(20000); } |
通过以上简单的脚本我们可以看出robotium可以完成的工作有:
● 文本的输入;
● 文本内容的检查;
● 按钮单击;
● activity的检查;
● 空间属性的检查;
● Dialogs、Toasts、Menus和Context Menus的操作和检查。
5、需要克服的问题
1)如果要对被测试的系统做自动化,需要保证被测试的apk包的签名和被测试包的签名完全一致,如果二者不同,被被测试系统不允许测试。
2)在测试实验的过程中发现被测试的程序如果是apk包,button按钮单击事件不给触发,但是在源代码的情况下就可以。
3)在看不到原代码的情况下,对被测试程序的控件属性和activity名称无法获知所以无法做验证。
TAG: