软件测试

原创 2015年07月11日 10:13:00

软件测试


     软件测试有时候不被重视,但是测试工作很重要。软件测试可以找出软件中潜在的各种错误和缺陷来提高软件质量、降低因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”代表事件的数量。

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

105个软件测试工具大放送

我们为你提供了一个丰富的软件测试工具列表,这些测试工具不仅可以减少测试工作,而且帮助更快地将你的软件/应用程序推向市场,并在保持速度的同时保证质量。   这个列表涵盖了 100 个开源以及许可的...

让我们成为开源软件测试者

随着开源软件的兴起,其使用范围也越来越广泛。开源软件本着"不要重复造轮子"的原则,与商业软件相比,拥有使用成本低、可定制性高等特点。然而开源软件在质量保证上仍然存在诸多的问题。本文将从开源测试工具、开...

关于软件测试的问与答(与神仙的对话)

作为芸芸众程序员的一员,我对软件开发中的一切都充满问题。今天是关于测试,作为一名唯物主义者,我相信众物都有其神,于是我找到了测试之神。      我问:神仙,为什么我们需要测试?   大...
  • fen0707
  • fen0707
  • 2013年01月17日 15:06
  • 248

软件测试开发技术Java初学者需要了解的几个基础问题

关于 软件测试开发 技术Java初学者需要了解的几个基础问题 Java开发 关键字: 对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越...

如何设计编写和设计软件测试用例?

一、测试用例是软件测试的核心。   软件测试的重要性是毋庸置疑的。但如何以最少的人力、资源投入,在最短的时间内完成测试,发现软件系统的缺陷,保证软件的优良品质,则是软件公司探索和追求的目标。每个软件...

软件测试基本概念-IMOOC笔记

测试阶段-软件测试的分类:单元测试、集成测试、系统测试、验收测试 测试手段-软件测试的分类:黑盒测试、白盒测试、静态测试、动态测试、手工测试、自动化测试 1.黑盒测试的主要设计方法:等价类划分法、边...

提高软件测试效率方法探讨

摘要:软件测试是保证软件质量的重要手段。如何组织软件测试,耗费最少时间与最小工作量完成软件测试,使软件质量满足用户要求,是软件研发单位需要解决的问题。本文结合工程实践,从软件的可测试性及测试组织等方面...
  • fen0707
  • fen0707
  • 2013年05月23日 16:37
  • 1160

关于软件测试笔试、面试的一些思考(上)

关于软件测试笔试、面试的一些思考(上) 笔试题: 0、什么是软件测试(残疾人问的问题...特别是在面试的时候问)? 答:依据软件需求规格和测试用例,使用人工和自动化的手段,来测试...

个女孩从软件测试工程师到主管的成长历程

摘要:燕子(化名)从前是学经济贸易的,由于对测试行业的强烈兴趣,毕业后在北京学校学习软件测试工程专业。工作不到一年的时间里,她已经从测试员升职到测试主管了。对于学习、工作,她积累了许多点点滴滴的经验,...
  • cometwo
  • cometwo
  • 2012年10月17日 14:02
  • 782

基于Java的软件测试(上)

作者:阿男(来自豆瓣) 来源:https://www.douban.com/note/573887348/ 在软件测试中,有一些概念我们需要理解: * Unit Testing ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件测试
举报原因:
原因补充:

(最多只允许输入30个字)