测试的种类—Android应用测试指南(2)

发表于:2016-3-11 11:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李江    来源:51Testing软件测试网原创

  1.4  测试的种类
  在开发过程中,任何时间段都可以参与测试,这取决于采用何种测试方案。但是,我们推荐测试工作在项目开发早期就介入,甚至可以在完整需求出来之后、刚开始开发的时候就开始做准备。
  基于被测对象的不同,有好几种不同的测试方法。但是无论采用哪种测试方法,测试用例都包含执行条件和执行结果,执行结果返回True或者False来表示用例是否正确。
  1.4.1  单元测试
  单元测试,指的是程序员在开发阶段写的测试用例。这种测试用例需要将被测对象独立隔离起来,也就是mock掉外部关联对象。单元测试用例应用是可以重复执行的。这也是为什么我们常把单元测试和mock对象关联在一起。因为你要通过mock对象来模拟外部交互从而达到隔离被测对象的目的。当然,这样的用例可以重复执行任何次数。例如,假设你要从数据库中删除某些数据,但是下一次执行这个用例时这些数据还需要用,因此不想这些数据真正被删除,这时候mock数据库的返回,假装数据已经删除成功了。
  Junit是约定俗成的标准单元测试框架。它是一个简单、开源的自动化单元测试框架,由ErichGamma和KentBeck两位作者创建。
  Android要用Junit 3。这个版本没有注释,而是通过内部自查来感知测试用例的。一个典型的Junit测试用例写法如框1.1中所示的代码,其中测试方法用高亮度显示:
  框1.1  Junit测试代码样例
/**
* Android Application Testing Guide
*/
package com.example.aatg.test;
import JUnit.framework.TestCase;
/**
* @author diego
*/
public class MyUnitTests extends TestCase {
private int mFixture;
/**
* @param name test name
*/
public MyUnitTests(String name) {
super(name);
}
/* (non-Javadoc)
* @see JUnit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
mFixture = 1234;
}
/* (non-Javadoc)
* @see JUnit.framework.TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Preconditions
*/
public void testPreconditions() {
}
/**
* Test method
*/
public void testSomething() {
fail("Not implemented yet");
}
}
  如果你购买了Packt书,可以访问http://www.PacktPub.com,在个人账户中下载样本源代码。如果你是从其他地方购买的书,可以访问http://www.PacktPub.com/support来注册用户,然后我们将源码文件直接发E-mail给您。
  我们将在下一节详细阐述测试用例的每个细节。
  1.测试套件
  测试套件是个为人熟知的名词,它表示执行用例的标准流程模式。每个测试用例都用同一套标准流程。因此,它也是测试用例设计的基础。
  通常情况下,按照Android的约定,它由一系列成员变量构成。通常以m开头,如: mActivity。但是,它也有一些扩展数据,作为数据库和文件系统操作的特殊入口。
  2.setUp方法
  这个方法是用来初始化测试套件用的。
  通过重载这个方法,你可以新建对象,初始化元素。在每个测试用例执行之前,这个SetUp方法都会执行一次。
  3.tearDown方法
  tearDown方法是在测试套件中最后执行的函数。
  在测试用例执行过程中,会初始化一些对象,这些对象可以在tearDown函数中进行销毁。因为tearDown函数是每个测试用例最后必须执行的,是销毁对象的最佳阶段。
  比如:你可以在tearDown中释放掉数据库连接以及网络连接。
  Junit设计的流程是这样的:首先,将整个库的用例都编译完。然后,在第二阶段再执行测试用例。因此,在测试执行过程中,执行器对所有用例都有强依赖。也就是说,对于那些用例很多、耗时很长的用例来说,在所有用例完成之前,是不会对变量、对象进行回收的。这点在Android测试中特别重要,因为在某些设备上测试失败的原因不是因为固有的逻辑问题,而是因为用例执行太多导致资源不足了。
  因此,在Android应用中,你若测试使用了额外的、有限的资源,比如Services服务或者contentProvides,那么,你应该注意要及时释放掉。在tearDown方法中,严格遵守将对象设置成null的规则,以便及时回收,避免一直占用资源,一直到所有用例跑完才释放。
本文选自《Android应用测试指南》第一章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号