没有最好,只有更好!

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

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

"d%N4|)tO)pn0

dz2k5F/hYd0

"X^LHAz051Testing软件测试网:j4pY2D$vy

51Testing软件测试网;E n5m:kYt7A$]"fe

【摘要】这里将学习软件测试的方法及其分类。主要了解内容包括黑盒测试白盒测试静态测试和动态测试、人工测试和自动化测试其他分类的测试方法。51Testing软件测试网+N[2|j-{ d

51Testing软件测试网iAq%f)|)V Fs

4Qj)r o#a6a0
51Testing软件测试网*Xl\M9?*a8c

7H)AK2|O Z:j051Testing软件测试网B1zo.`6B1i~!OH2S&xA

软件测试从不同角度出发,可以有许多不同的分类。51Testing软件测试网,T M iL$J)j'y

  • 依据信息:黑盒测试和白盒测试
  • 被测软件是否运行:静态测试和动态测试
  • 测试执行是否人工:人工测试和自动化测试
  • 测试阶段:单元测试、集成测试、系统测试
  • ……
51Testing软件测试网KJY2Wu&|N6Z h

回顾之前的测试过程可以知道:

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

白盒测试

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

程序元素:程序的一个条件、语句、语句块……51Testing软件测试网9M LJVz9f8f

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

控制流图:对应于控制流关系的图;51Testing软件测试网JK3D |\ f

控制流矩阵:由控制流图得到,反映相邻程序元素先后顺序的关系;

q"a~,|0n7jr0

步骤:程序元素-->控制流图-->控制流矩阵-->分析找出存在问题51Testing软件测试网U`vgqd {

分析发现的问题:①、转向不存在的标号;②、没有用的语句标号;③、程序入口进入后无法到达的语句;④、不能达到停机语句的语句。51Testing软件测试网r|-U*V%Hk7C DLS)`_

    • 数据流分析:这个方法主要用于代码优化

w Sk.Pd0数据的定义:程序中能改变某程序变量V的值,则该语句定义V

8ehos|&\051Testing软件测试网q4Kt\1g z;J u0J

数据的引用:语句的执行引用了内存中变量V的值,则该语句引用变量V

4?.A&~,Hv2N6w051Testing软件测试网kP/O!Y@d

步骤:代码-->数据流表-->分析表得出错误-->修正和优化51Testing软件测试网1`*^ \$h$JA?3G T

51Testing软件测试网.u9z0INKO

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

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

通过分析上面三个表得出

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

黑盒测试

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

比较

-g1q(L5R6t i q.Rp0

黑盒测试

6[O$F&F e2O0y0

白盒测试51Testing软件测试网kT7B7O2c-t \c

定义

!c4oG(aq Z6W0

只考虑其整体特性,不考虑其内部具体实现51Testing软件测试网:\*t$|;Zb `

根据内部构造设计用例,内部流程进行测试,不考虑整体

v&y\5e+]tcH0

依据信息51Testing软件测试网ra3FI:B$X~

 基于规格的测试

e,w~eJ(L0

基于程序结构的逻辑驱动测试

BjMT{*n0

优点51Testing软件测试网 G,E? O\Z,j M$n s

效率高;不需要了解细节,包括编程语言;从用户角度进行测试;有助于暴露规格不一致或有歧义的问题51Testing软件测试网8sV.r8X]H @r0}

 可以检测代码中的每条分支和路径;揭示隐藏代码中的错误;对代码测试较彻底;实现代码结构优化;51Testing软件测试网#f {}/~f)?I q

缺点51Testing软件测试网oGysJ$r5@

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

EP.Ay2v'c0

需要了解软件的内部实现;投入大,成本高;不验证规格的正确性;51Testing软件测试网-\FO+j\7@S0D B

常用方法

"](cg)ydf9J*}m%p0

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

Lh UV$f i'bl0

U+M$o\z"MC0静态分析:控制流分析、数据流分析、信息流分析;51Testing软件测试网4h0}4Zo'aH

51Testing软件测试网7p;i)EN Ik

动态分析:逻辑覆盖测试、程序插装;

5W Xo,i4?)NI0

$Mu'u7@qyEmyq%Y0

SRS文档评审:黑盒测试

_\ I F-@Hu G0

HLD文档评审:灰盒测试

#W3~2J9b.Amm6i0

LLD文档评审:白盒测试

d|?2S!g"z0

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

O*e4Igo+i:}2j0
  • 输出的产品分成两类:最终产品(软件、用户说明等)和中间产品(文档、代码等)
  • 最终产品和中间产品都可以分为代码和文档
  • 文档可以分成:开发文档(SRS、HLD、LLD)、测试文档(计划、方案、用例)
  • 只要是软件产品,都是测试的对象

静态测试和动态测试

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

]6]P'_~0

常用技术:静态分析技术。51Testing软件测试网;H&te-]Q/Z-[7`1f

动态测试:运行被测软件系统的一种测试技术。51Testing软件测试网d:|$YJ$ti_

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

o ~ej0xM l.b0
静态分析技术

定义:不通过执行程序而分析程序执行的技术。

mV8a:@X;CA0

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

t$QIp$gA0

目的:为了尽早发现问题,降低修复成本,防止缺陷扩大。51Testing软件测试网-K"j[ W1F1K

主要有三种可能性:程序是否满足编码规则;文档是否规范、准确、方便查阅;程序和文档的一致性。

/@] iX8Ys3p|]0

技术结构:51Testing软件测试网7A/m8d shg}

手工静态分析——同行评审:对象可以是计划、文档、设计图、代码等51Testing软件测试网8y4X's9w| B/f

  • 正规检查
  • 技术评审
  • 走查
51Testing软件测试网&l*Jy$fz&Qb

自动化静态分析

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

定义:对软件系统运行行为进行分析。

`5^o|Bl{0

常用的动态分析技术:51Testing软件测试网$yB6H)@4p6O,c

常用动态分析工具功能:

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

人工测试和自动化测试

人工测试:测试活动由人来完成,是最基本的测试形式。51Testing软件测试网?? x e3N2j"h

自动化测试:通过计算机模拟人的测试行为。只有做好了手工测试,才能做好自动化测试。

:@'r#s.Y*O6l7K {h0

自动化测试的意义:

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

SSv_)r XO @s0自动化测试的局限:51Testing软件测试网G%~!iq*Oc m+Z9y!]

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

]wb8o:dw0自动化测试的误区:51Testing软件测试网 b&k2A,Gx:M N(I

  • 自动化能取代手工测试
  • 缺乏测试经验就想做好自动化测试
  • 期望自动化能发现大量新缺陷
  • 安全性错觉

bWIl5M0开展自动化需要考虑的因素:51Testing软件测试网T:_4L2N{[,CD`'?

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

51Testing软件测试网(HVxS3Ka

r6ExB#S#P4^0SDY0

版权声明:本文出自gdou_wzy的51Testing软件测试博客:http://www.51testing.com/?174292
*?,bN+]*LIx@WC-n0原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。51Testing软件测试网3d'_6O8R&@8a


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

 

评分:0

我来说两句

日历

« 2024-04-12  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar