软件测试

原创 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”代表事件的数量。

 

 

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

相关文章推荐

软件测试江湖(二)神兵利器篇

在上一篇文章中我们介绍了江湖上流传的各种软件测试的武功秘籍和心法,相信看过的小伙伴内力得到了很大的提升。如果没有,一定是你看的姿势不对,换个姿势再试试看。但是,内力只是基础,想要把我们的内力完美的发挥...

软件测试管理概述

测试管理包括测试计划、功能性测试流程、测试执行、测试用例设计、需求文档评审、缺陷管理、标准和测试过程改进、测试工具与自动化、团队建设等搜有环节的管理。 管理的五大因素:人机料法环 软件测试的管理就...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

从1个中心到5个要素——金字塔与软件测试

埃及金字塔的神秘,不仅是因为它的规模宏伟、结构精密,而且它的兴起和演变至今只是一个传说,成为千古之谜。而软件测试,也感觉和金字塔有一种神秘的关系,为什么这样说呢? 金字塔中有神奇的黄金分割数Φ,...

软件测试风险分析

1、什么是风险? 当人们在做某件工作或从事某项事务时,可能会出现的一些异常情况,一旦这些异常情况发生,将带来一些不好的影响或后果。由于承认了未来存在着不确定性,才会出现风险的概念。对今天...
  • igoone
  • igoone
  • 2011-12-04 15:00
  • 1642

软件测试必看的5本书

最近好多朋友加我微信,问我有没有好一点的测试相关书籍推荐看一下,现具体介绍如下几本: 1. 软件测试的艺术(第3版) 软件测试的艺术 作 者:(美)梅耶(Myers, G...

软件测试的基础知识

1.1测试的方法 测试方法 内容描述 系统测试 系统测试是通过与系统的需求规格作比较-,发现软件与系统需求规格不相符合或与之矛盾的地方。它将通过确认测试的软件,作为整个基于计算...

软件测试容易遗漏的地方

通常软件测试会暴露软件中的缺陷,经过修正后可以保证软件系统的功能满足需求并正确运行。但是,在系统测试和确认测试中,测试人员容易遗漏一些隐藏的缺陷。众所周知,软件测试不可能发现所有的缺陷,而软件开发周期...
  • zm_21
  • zm_21
  • 2013-08-09 08:48
  • 1122

山东大学软件测试技术实验三报告

学号:保密 姓名: 邹仁智 班级: 软件八班 课程设计题目:自动化测试工具QTP的使用 上机学时:2 日期: 2017年5月23号 ...

软件测试流程

转载自:http://www.cnblogs.com/fnng/archive/2012/08/04/2622463.html 如果想让测试在公司的项目中发挥出它最大的价值,并不是招...

做好软件测试需要具备的思维方式

最近部门来了好几位应届毕业生加入团队,我们也大张旗鼓的组织了集中式的培训,其中我需要对关于测试工作进行简介,在培训内容中,我特地整理和回顾了做好软件测试需要具备的思维方式,当时也就4张PPT。在此,我...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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