没有最好,只有更好!

软件测试技术基础学习笔记之测试方法

上一篇 / 下一篇  2009-01-06 18:26:05 / 个人分类:测试基础知识

W#?'@)t;m3pz b051Testing软件测试网Aop1aGfl K


51Testing软件测试网3u,Kudh.F1GL7D

51Testing软件测试网6WqtU)~

^ s*N\{8G0【摘要】这里将学习软件测试的方法及其分类。主要了解内容包括黑盒测试白盒测试静态测试和动态测试、人工测试和自动化测试其他分类的测试方法。

fW:U%M)ji f051Testing软件测试网iT\1B$ME3B\ Jpoh

51Testing软件测试网ny!z k6\.].Sd,U ~!Ue


51Testing软件测试网h#I[gf

:w{,|6T5NB*o3yG6x0

Y)W2v7B|u;W1L0软件测试从不同角度出发,可以有许多不同的分类。

jsN T;ip{fa0
  • 依据信息:黑盒测试和白盒测试
  • 被测软件是否运行:静态测试和动态测试
  • 测试执行是否人工:人工测试和自动化测试
  • 测试阶段:单元测试、集成测试、系统测试
  • ……

| YC`C$_Z0回顾之前的测试过程可以知道:51Testing软件测试网pKO"iuQc

  • 测试用例包含预期结果
  • 单元测试参照LLD
  • 集成测试参照HLD
  • 系统测试参照SRS
  • 测试前提必须明白测试对象是什么样子的,然后将实际结果和预期进行比较,这样才能发现缺陷。根据利用的被测对象信息的不同,将采用不同的方法来测试。

白盒测试

概念:
  • 白盒测试是依据被测软件分析程序内部构造,并根据内部构造设计用例,来对内部控制流程进行测试,可以不顾程序的整体功能实现情况。
  • 白盒测试是基于程序结构的逻辑驱动测试
  • 白盒测试还可称为玻璃盒测试、透明盒测试、开放盒测试、结构化测试、逻辑驱动测试等……
进行白盒测试的原因:
  • 测试前期进行,达到一定的逻辑覆盖率指标,基本清除软件内部逻辑控制结构上的问题。
  • 保证内部逻辑结构达到一定覆盖程度,保证软件代码质量。
  • 发现问题后解决问题的成本低。
常用技术:
  • 静态分析技术
    • 控制流分析

程序元素:程序的一个条件、语句、语句块……

kU EM;p.W`6e6x0

控制流关系(Control Flow Relation):程序元素和它们之间执行次序的联系;51Testing软件测试网)o2nczfD.p

控制流图:对应于控制流关系的图;

@:dLv VFuM{0

控制流矩阵:由控制流图得到,反映相邻程序元素先后顺序的关系;51Testing软件测试网O&E Jr]$O[

步骤:程序元素-->控制流图-->控制流矩阵-->分析找出存在问题51Testing软件测试网7W#p \!G}#l

分析发现的问题:①、转向不存在的标号;②、没有用的语句标号;③、程序入口进入后无法到达的语句;④、不能达到停机语句的语句。

pF(_P;wR|0
    • 数据流分析:这个方法主要用于代码优化

$O_;g#pu J1h:N"P k0数据的定义:程序中能改变某程序变量V的值,则该语句定义V51Testing软件测试网.`;\&k4P L*T c]p

51Testing软件测试网8p*SE`9E5k

数据的引用:语句的执行引用了内存中变量V的值,则该语句引用变量V51Testing软件测试网u3YB7R;GV

51Testing软件测试网3a Gw$V5w4o DQ,HC

步骤:代码-->数据流表-->分析表得出错误-->修正和优化51Testing软件测试网 o R0G A-o5`r e:z0f

51Testing软件测试网 L&fH;~e4F

分析出的错误有两种:①、变量未定义但被引用;②、变量定义但未被引用51Testing软件测试网8p6vLcT`

    • 信息流分析:导出程序的信息流关系,为软件开发和确认提供了有益的工具。通过下面三个关系得出。
      • 输入变量和语句关系
      • 语句和输出变量关系
      • 输入和输出变量关系

通过分析上面三个表得出51Testing软件测试网5[dW#d1~*} kai

  • 未定义的输入变量
  • 导致输出变量错误的语句
  • 输出变量是否会由非法变量导出
  • 动态分析技术
    • 逻辑覆盖率测试
      • 语句覆盖
      • 判定覆盖
      • 条件覆盖
      • 判定——条件覆盖
      • 路径覆盖
      • ……
    • 程序插装:实现逻辑覆盖率的统计。
      • 程序中插入的打印语句,从而确定程序路径是否被执行
特点:
  • 测试人员需要了解软件的实现
  • 可以检测代码中的每条分支和路径
  • 揭示隐藏在代码中的错误
  • 对代码的测试比较彻底
  • 实现代码结构上的优化
  • 投入大,成本高
  • 不验证规格的正确性
常用白盒测试工具的功能:
  1. 性能分析
  2. 追踪
  3. 内存分析
  4. 覆盖率
  5. 测试用例/报告
  6. 语法分析

黑盒测试

概念:
  • 只考虑被测对象的整体特性,不考虑其内部具体实现
  • 被测对象包括一个系统、子系统、模块、子模块、函数等
  • 基于规格的测试
常见类型:来源于质量模型
  • 功能性测试
  • 容量测试:检测软件在处理海量数据时的局限性;
  • 负载测试:检测系统在短时间内处理巨大数据量或执行许多功能调用的能力;
  • 恢复性测试:保证系统崩溃后能够恢复外部数据的能力;
  • 标杆测试:考虑软件和硬件的组合;
  • 稳定性测试
  • 可靠性测试
  • 安全性测试
  • 外场测试
  • 实验室测试
  • ……
常见黑盒测试方法:
  • 等价类划分法
  • 边界值分析法
  • 因果图分析法
  • 判定表法
  • 状态迁移法
  • ……
特点:
  • 对大代码单元来说效率高于白盒测试
  • 测试人员不需要了解实现的细节,包括特定的编程语言
  • 从用户角度进行测试
  • 有助于暴露任何规格不一致或有歧义的问题
  • 没有清晰的和简明的规格,测试用例很难设计
  • 不能控制内部执行路径,会有很多内部程序路径没被测试
  • 不能直接针对特定的程序段

比较51Testing软件测试网'_-eNiP l*U |]

黑盒测试

)tH%}FQ G0

白盒测试

!\md`b6E6\0

定义

Nc#o'bc,Z!V0

只考虑其整体特性,不考虑其内部具体实现51Testing软件测试网aX&yX/eR*m0]

根据内部构造设计用例,内部流程进行测试,不考虑整体51Testing软件测试网(mW3OL\z

依据信息

^]]oq P4h6i*Yh b0

 基于规格的测试51Testing软件测试网 A(\ a$oR)Mk AP C

基于程序结构的逻辑驱动测试51Testing软件测试网l8M+j wbd A8{

优点51Testing软件测试网E+Lt-a3e1{q`1Ik*B

效率高;不需要了解细节,包括编程语言;从用户角度进行测试;有助于暴露规格不一致或有歧义的问题

1{x}1| a-|s3Z0

 可以检测代码中的每条分支和路径;揭示隐藏代码中的错误;对代码测试较彻底;实现代码结构优化;51Testing软件测试网6F}5e pyP!P

缺点

0kqUF)Bn9tR b0

无清晰和简明规格,测试用例很难设计;不能控制内部执行路径,内部路径多没有被测到;不能针对特定程序段;

PT9W:b;[z)b2VX4g0

需要了解软件的内部实现;投入大,成本高;不验证规格的正确性;

~$]o#M3m[4C0

常用方法

o ewj'|)AGe_z0

等价类划分法;边界值分析;因果图分析法;判定表法;状态迁移法; 

~HB$ts!d:k&vl0
51Testing软件测试网1`S-A*B3LB

静态分析:控制流分析、数据流分析、信息流分析;

U:A&o)Lm0E*|2S0

d?_#A J&J,s_`0动态分析:逻辑覆盖测试、程序插装;51Testing软件测试网,GW d j;h K\ IB*P

f'T#h2q:u7r4r0_B0

SRS文档评审:黑盒测试51Testing软件测试网z\\/q].E Lwn2GX

HLD文档评审:灰盒测试

xs U0U`z"n0

LLD文档评审:白盒测试51Testing软件测试网 O9pn+L!}.Z,X

软件产品的概念:软件研发看成一个生产过程,这个过程中有产品输出/工件输出。

#q/v-v1x$o+f%O0
  • 输出的产品分成两类:最终产品(软件、用户说明等)和中间产品(文档、代码等)
  • 最终产品和中间产品都可以分为代码和文档
  • 文档可以分成:开发文档(SRS、HLD、LLD)、测试文档(计划、方案、用例)
  • 只要是软件产品,都是测试的对象

静态测试和动态测试

静态测试:不运行被测试的软件系统的一种测试技术。如:代码走读、文档评审、程序分析等

&WH d)B)O0

常用技术:静态分析技术。

c5u3Y7x-wo#w0

动态测试:运行被测软件系统的一种测试技术。51Testing软件测试网 hu3_c7g)Tt5z

常用技术:动态分析技术。

Es0r d/V0
静态分析技术

定义:不通过执行程序而分析程序执行的技术。51Testing软件测试网5|Q \ |+Z,~U#| W

功能:检查软件的表示和描述是否一致,没冲突、没歧义,目的纠正软件系统的描述、表示和规格上的错误,是任何进一步测试执行的前提。

YXK7dO'`T0

目的:为了尽早发现问题,降低修复成本,防止缺陷扩大。

4v$lK)\T|0

主要有三种可能性:程序是否满足编码规则;文档是否规范、准确、方便查阅;程序和文档的一致性。51Testing软件测试网]C6uzsk-J#l a

技术结构:51Testing软件测试网1a8pvFY/qP#Z*J,_J b0D0w

手工静态分析——同行评审:对象可以是计划、文档、设计图、代码等

1`L wy)[q1^7A'P$F0
  • 正规检查
  • 技术评审
  • 走查

cq7R,Rfe0自动化静态分析

a N6V9V/bV0
  • 静态验证:规格定义难于实现,高可靠性产品适合
  • 语法分析器:一般编程平台工具具有此功能
  • 符号执行器:适用于数学算法的分析
动态分析技术

定义:对软件系统运行行为进行分析。51Testing软件测试网 I%V+n f/z [#x+cw

常用的动态分析技术:

q rq8H*B+OiV0

常用动态分析工具功能:

5I'le@ lr a)i0
  1. 测试覆盖率分析——测试对代码的检测范围——白盒测试
  2. 跟踪——跟踪程序执行的所有路径——白盒测试
  3. 调整——度量程序执行使用的资源——黑盒测试
  4. 模拟——模拟系统——黑盒测试
  5. 断言检查——测试复杂逻辑结构中条件是否给出——白盒测试

人工测试和自动化测试

人工测试:测试活动由人来完成,是最基本的测试形式。

LGU6WL0

自动化测试:通过计算机模拟人的测试行为。只有做好了手工测试,才能做好自动化测试。51Testing软件测试网`X#o)\4fx;P

自动化测试的意义:51Testing软件测试网5XP~|{+j

  • 提高回归测试效率
  • 运行频繁的测试
  • 执行手工测试困难或不能做的测试
  • 更好地利用资源
  • 测试一致性和可重复性
  • 测试复用
  • 减少软件发布时间
  • 增加软件信任度

P yIM$b0自动化测试的局限:51Testing软件测试网} @ A7y+Df

  • 不能取代手工测试(自动化测试只能提高效率,不能提高有效性)
  • 手工测试比自动化测试发现的错误多
  • 对测试设计依赖性大
  • 对软件开发具有很大依赖性
  • 工具不具备人的智能
51Testing软件测试网'W0}UREk*d

自动化测试的误区:51Testing软件测试网(lL~3g G W7[

  • 自动化能取代手工测试
  • 缺乏测试经验就想做好自动化测试
  • 期望自动化能发现大量新缺陷
  • 安全性错觉
51Testing软件测试网|$Ju:] b/x

开展自动化需要考虑的因素:51Testing软件测试网:b"aNz9LQ:m3a

  1. 项目进度(不紧)
  2. 人力(充足)
  3. 软件稳定性(软件稳定)
  4. 产品应用情况(用户需要升级)
  5. 项目规模(大)
  6. 可自动化用例的比例(>20%)


8i)h,WG _K UR f051Testing软件测试网.{{-Ua,N;E'N9VIQ

版权声明:本文出自gdou_wzy的51Testing软件测试博客:http://www.51testing.com/?174292
S4A d)p^&N&o+MV0原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。51Testing软件测试网5{iWy%ZH6J+g


TAG: 白盒测试 测试基础知识 黑盒测试 静态测试 自动化测试

 

评分:0

我来说两句

日历

« 2024-05-27  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 27306
  • 日志数: 21
  • 建立时间: 2008-12-23
  • 更新时间: 2009-03-12

RSS订阅

Open Toolbar