软件测试基础

一、软件测试目的

 1.根本目的:尽可能多的发现并排除软件中潜藏的错误。

  2.(1)测试是为了发现程序中的错误而执行程序的过程。

 (2)好的测试方案是极可能发现迄今为止尚未发现的错误的方案。

            (3)成功的测试是发现了迄今为止尚未发现的错误的测试。

二、软件测试准则

 1.所有测试都应该能追溯到用户需求。
 2.应该远在测试开始之前就制定出测试计划。
 3.Pareto原理(二八原理):测试发现的错误中的80%很可能是由程序中的20%的模块造成的。
 4.应该从“小规模”测试开始,逐步进行“大规模”测试。即从单元测试开始,逐步转向集成测试。

 5.穷举测试是不可能的。

 6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

三、测试方法

 1.黑盒测试(功能测试)

  黑盒测试法将程序看做一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,

黑盒测试是在程序接口处进行的测试,他只检查程序功能是否按照规格说明书的规定正常使用,

程序是否能适当的接收输入数据并产生正确的输出信息,程序运行过程中是否能保持外部信息

(例如数据库和文件)的完整性。

黑盒测试力图发现下述类型的错误:

(1)功能不正确或遗漏了功能。

(2)界面错误。

(3)数据结构错误或外部数据库访问错误。

(4)性能错误。

(5)初始化和终止错误。

设计黑盒测试方案时,应考虑下述的几个问题:

(1)怎样测试功能的有效性?

(2)哪些类型的输入可构成好的测试用例?

(3)系统是否对特定的输入值特别敏感?

(4)怎样划定数据类的边界?

(5)系统能承受什么样的数据率和数据量?

(6)数据特定的组合将对系统的运行产生什么影响?

  黑盒测试技术

1)等价划分
 尽可能多的覆盖有效等价类,只覆盖一个无效等价类。
2)边界值分析
3)错误推断
选择输入组合的途径:

 ①利用判定树和判定表作为工具,列出输入数据各种组合与程序应做的动作(及相应输出结果)

之间的对应关系,然后为判定表的每一列至少设计一个测试用例。

 ②把计算机测试和人工测试有效结合起来

2.白盒测试(结构测试)

 白盒测试与黑盒测试相反,它将程序看成是装在一个完全透明的白盒子里,测试者完全知道
程序的结构和 处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是
否都能按预定的要求正确工作。
白盒测试技术:
 1)逻辑覆盖
     (1)语句覆盖:很弱的逻辑覆盖
  (2)判定覆盖:每个判定的每个分支都至少执行一次。
  (3)条件覆盖:使判定表达式中的每个条件都取到各种可能的结果。
  (4)判定/条件覆盖:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,
而且每个判定表达 式也都取到各种可能的结果。
  (5)条件组合覆盖:选取足够多的测试数据,使得每个判定表达式中的各种可能组合都至少出现
一次。 是前几种覆盖中最强的。
  (6)点覆盖
  (7)边覆盖
   (8)路径覆盖

 2)控制结构测试

 (1)基本路径测试

   第一步:根据过程设计结果画出相应的流图。

 第二步:计算环形复杂度,有三种方法,一是看独立区域数;

二是边数减去节点数加2;三是分支节点数加一。

 第三步:确定线性独立路径的基本集合。

 (2)条件测试

 (3)循环测试

  简单循环:应使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数。

    跳过循环;只通过循环一次;通过循环两次;通过循环m次,其中m<n-1。

通过循环n,n-1,n+1次。

  嵌套循环:从最内层循环开始测试,把所有其他循环都设置成最小值。

    对最内层循环使用简单循环测试方法,而使外层循环的迭代参数(例如循环

计数器)取最小值,并为越界值或非法值增加一些额外的测试。

    由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,

其他嵌套循环为典型值。继续进行下去,知道测试完所有循环。

  串接循环:若循环彼此独立,则使用简单循环方法;若不独立,用嵌套循环方法。

四、测试步骤

 1.单元测试(模块测试)

  1)测试重点

  (1)模块接口:参数的数目、次序、属性或单位系统与变元是否一致;

是否修改了只作输入用的变元;全局变量的定义与用法在各个模块中是否一致。

  (2)局部数据结构:局部数据说明、初始化、默认值等方面的错误。

  (3)重要的执行通路

 (4)边界条件的测试

 2)测试类的技术

  (1)随机测试

  (2)划分测试:基于状态划分;基于属性划分;基于功能划分

  (3)基于故障的测试

2.集成测试

  1)多类测试:随机测试;划分测试

  2)从动态模型导出测试用例

3.系统测试

  系统测试,英文是System Testing。是对整个系统的测试,将硬件、软件、操作人员看作一个整体,

检验它是否有不符合系统说明书的地方。

这种测试可以发现系统分析和设计中的错误。如安全测试是测试安全措施是否完善,能不能保证系统不受非法

侵入。再例如,压力测试是测试系统在正常数据量以及超负荷量(如多个用户同时存取) 等情况下是否还能正常

地工作。

主要内容包括:
 ·功能测试。即测试软件系统的功能是否正确,其依据是需求文档,如《产品需求规格说明书》。由于正确性是软件最重要的质量因素,所以功能测试必不可少。
 ·健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错能力,二是恢复能力
比较常见的、典型的系统测试包括恢复测试、安全测试、压力测试。下面对这几种测试进行一一介绍:
 1)恢复测试
  恢复测试作为一种系统测试,主要关注导致软件运行失败的各种条件,并验证其恢复过程能否正确执行。在特定情况下,系统需具备容错能力。另外,系统失效必须在规定时间段内被更正,否则将会导致严重的经济损失。
 2)安全测试
  安全测试用来验证系统内部的保护机制,以防止非法侵入。在安全测试中,测试人员扮演试图侵入系统的角色,采用各种办法试图突破防线。因此系统安全设计的准则是要想方设法使侵入系统所需的代价更加昂贵。
 3)压力测试
  压力测试是指在正常资源下使用异常的访问量、频率或数据量来执行系统。在压力测试中可执行以下测试:
  ①如果平均中断数量是每秒一到两次,那么设计特殊的测试用例产生每秒十次中断。
  ②输入数据量增加一个量级,确定输入功能将如何响应。
  ③在虚拟操作系统下,产生需要最大内存量或其它资源的测试用例,或产生需要过量磁盘存储的数据。


4.验收测试(确认测试)

(1)alpha测试:用户在开发者场所中测试,是可控的;
 

(2)beta测试:是在开发者的场所中,是不可控的。




  









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值