软件测试

来源:互联网 发布:淘宝店铺卖鞋名字大全 编辑:程序博客网 时间:2024/05/20 08:02

软件测试


     软件测试有时候不被重视,但是测试工作很重要。软件测试可以找出软件中潜在的各种错误和缺陷来提高软件质量、降低因BUG而产生的修复顾本、证明软件的功能和性能与需求说明相符合。测试贯穿了软件开发的生命周期,不仅仅要对编码阶段的工作进行测试,而且对其他阶段也要进行测试(如图1.1),这篇文章主要介绍了测试的类型,JUnit3、JUnit4、如何用Junit编写与平台无关的测试用例,如何对Activity进行测试以及Monkey 命令行工具使用

一、软件测试的类型

、软件测试的类型

1、黑盒测试: 是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。


2、白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。


3、单元测试: 又称模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

 

4、功能测试: 根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。

 

5、压力测试: 主体向被 观察者布置一定量任务和作业,借以观察个体完成任务的行为。比如12306系统在每年节假日的时候回出现问题,这就说明负荷过大的时候,压力测试就出现了问题。在Android应用中,也可以进行压力测试:monkey -p <应用程序包名> -v 事件数量

 

6、集成测试: 是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。

 

 

二、JUnit测试框架介绍

      JUnit是一个开源的java单元测试框架。按照框架规定:编写的所有测试类,必须继承自junit.framework.TestCase类;里面的测试方法,命名应该以“test”开头,必须是public void 而且不能有参数;而且为了测试查错方便,尽量一个testXXX方法对一个功能单一的方法进行测试;使用assertEquals等junit.framework.TestCase中的断言方法来判断测试结果正确与否。JUnit中有两个基本对象:TestCase和TestSuite。TestCase通过提供一组方法来实现一系列测试。其中,setup()方法用来在每项测试开始前建立测试所需的测试环境,而teardown()方法用来在测试后销毁该环境,要创建测试程序,需要继承TestCase类,覆写setup和teardown方法,然后添加自己的测试函数,这些函数通常以“test方法名”的形式命名;TestSuite是由几个TestCase或其他的TestSuite构成的,你可以很容易的构成一个树形测试,每个测试都由另外一些测试的TestCase来构成,被加入到TestSuite中的测试对象将在一个线程中依次被执行。

下面用Junit写一个简单的测试用例程序。

被测试类:

public class Calculator{     public int add(int a, intb){         return a + b;       }     public int minus(int a, intb){         return a - b;       }     public int multiply(int a, intb){         return a * b;        }      public int divide(int a, intb) throws Exception{         if(0 == b){                throw new Exception("除数不能为零!");             }         return a / b;        }}


测试类:

public class CalculatorTest extends TestCase {         private Calculator cal;         public void setUp() {                   cal = newCalculator();          }         public void tearDown() {         }         public void testAdd() {                   int result =cal.add(1,2);                   Assert.assertEquals  (3,result);         }         //减法和乘法跟加法的写法类似,在此不赘述!                            public void testDivide2() {                            Throwabletx = null;                            try{                                     cal.divide(4,0);                                                                             Assert.fail();                            }                            catch(Exception ex){                                     tx= ex;                            }                            Assert.assertNotNull(tx);                            Assert.assertEquals(Exception.class,tx.getClass());                            Assert.assertEquals("除数不能为零!",tx.getMessage());         }}

 

三、Junit3、Junit4的比较

 Junit4是Junit框架有史以来的最大改进,其主要目标是利用java5的Annotation特性来简化测试用例的编写。

Junit3:

1.测试类必须继承类TestCase;

2.测试方法必须以test开头;

Junit4:

1.测试类不需要继承TestCase;

2.测试方法命名没有特定要求,只要在待测方法前加上@Test即可;

3.通过@befroe替代setUp方法,@After替代tearDown方法;在一个测试类中,甚至可以使用多个@Before来注释多个方法,这些方法都是在每个测试之前运行。

 

四、测试acticity

1、建立测试项目

a.在 PackageExplorer 里面右击你的项目,选择 Android Tools>New Test Project...,会弹出 "NewAndroid Test Project" 对话框。

b.Project Name 命名为 测试项目, 然后选择 Next

c.在 Select TestTarget 里面选择 XXXActivity,然后点击 Finish。

d.这样一个测试项目就生成了。

经过这些步骤,我们会发现AndroidManifest.xml会自动生成:

<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"         package="com.android.example.spinner.test"         android:versionCode="1"         android:versionName="1.0">    <uses-sdkandroid:minSdkVersion="3" />    <application android:label="@string/app_name">       <uses-library android:name="android.test.runner"/>   </application>   <instrumentationandroid:name="android.test.InstrumentationTestRunner"                    android:targetPackage="com.android.example.spinner"                    android:label="Tests for com.android.example.spinner"/></manifest>


 

2、继承ActivityInstrumentationTestCase2 创建测试用例类,这个测试类可能包括:

a.测试配置。我们一般用JUnit 的 setUp 方法来做一些准备工作,和在跑每个测试前需要运行的任务。

b初始条件测试。这是一个很好的测试技术。通过 instrumentation,我们可以在没有启动主Activity 前就可以观察这个应用。初始条件测试会检查被测应用的某些重要对象是否初始化。如果这个测试都失败了,那别的基于该被测应用的测试也是没有意义的。 > 注意:初始条件测试和 JUnit 的 setUp 方法是不一样的。

c.UI 测试。

 

3、添加构造函数—>添加 setUp 方法—>添加 setUp 方法—>添加初始条件测试—>添加一个 UI 测试。

具体的操作步骤,可以看测试项目的代码!

五、Monkey命令行工具

Monkey是可以运行在模拟器里或实际设备中的程序。Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动、手势输入等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。

用法比较简单,比如你项目的包名是com.buyaohe.recycler,可以CMD窗口中执行执行下面这条命令。

 adb shell monkey -p  com.buyaohe.recycler -v 100

“-p”代表应用的包名,”-v”代表事件的数量。

 

 

0 0
原创粉丝点击