没有最好,只有更好!

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

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

51Testing软件测试网#d0J3XO)_}P kTl

51Testing软件测试网(^*^R4oDC3i


51Testing软件测试网4j@0K:m.XueA

51Testing软件测试网_?v-_ jML+Pf_

51Testing软件测试网lTF)Q_{ x-H

【摘要】这里将学习软件测试的方法及其分类。主要了解内容包括黑盒测试白盒测试静态测试和动态测试、人工测试和自动化测试其他分类的测试方法。51Testing软件测试网%Uj&d Eld7U `r

51Testing软件测试网k7H&uE?y,D

51Testing软件测试网m7J)CRh


X|z,q*r.}$]TjS051Testing软件测试网 X?-M#W\Xa

F!yXNq3z0软件测试从不同角度出发,可以有许多不同的分类。

VO+V m2k)Jxx0
  • 依据信息:黑盒测试和白盒测试
  • 被测软件是否运行:静态测试和动态测试
  • 测试执行是否人工:人工测试和自动化测试
  • 测试阶段:单元测试、集成测试、系统测试
  • ……

!adT(|-sVR0回顾之前的测试过程可以知道:51Testing软件测试网9sK {4mIO*^4My

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

白盒测试

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

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

J:a q-e$@;e(gxP0

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

控制流图:对应于控制流关系的图;51Testing软件测试网4Chz6L2I9x8`

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

A0_3q*K$Dm$f"l@0

步骤:程序元素-->控制流图-->控制流矩阵-->分析找出存在问题

sqRsH:YX a,_^R V0

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

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

\Y.o'o*uL0数据的定义:程序中能改变某程序变量V的值,则该语句定义V

H7i[%^7[051Testing软件测试网3e:Y Qu2b(_k

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

9U"jv{ C$x051Testing软件测试网F U7ex1E

步骤:代码-->数据流表-->分析表得出错误-->修正和优化51Testing软件测试网S"c}|wS,J;R

k*kQ#J9\u0分析出的错误有两种:①、变量未定义但被引用;②、变量定义但未被引用

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

通过分析上面三个表得出

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

黑盒测试

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

比较

,@d vJJs@0

黑盒测试

)]L4M ]n0

白盒测试

'K v&L+l T8yM4`0

定义

Wp;G Vs$K0

只考虑其整体特性,不考虑其内部具体实现51Testing软件测试网 F.N,frvg

根据内部构造设计用例,内部流程进行测试,不考虑整体51Testing软件测试网,Ak)C?%E6G6RU

依据信息51Testing软件测试网ConL"h:l

 基于规格的测试

w(pRl`RC4q{/D&r.C0

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

A-TN1\F8ZSCd0

优点51Testing软件测试网 ^q)a-FuLM

效率高;不需要了解细节,包括编程语言;从用户角度进行测试;有助于暴露规格不一致或有歧义的问题51Testing软件测试网$`S"\WEG

 可以检测代码中的每条分支和路径;揭示隐藏代码中的错误;对代码测试较彻底;实现代码结构优化;

vc @ p.gs0

缺点

p5\A9_nDa;H)tA0

无清晰和简明规格,测试用例很难设计;不能控制内部执行路径,内部路径多没有被测到;不能针对特定程序段;51Testing软件测试网^;ke"q(w

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

常用方法51Testing软件测试网-i,R R:i\5H$Bo6K

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

uk(mD}H Ej3~2G0
51Testing软件测试网 A/_;H r#UpETnRuu

静态分析:控制流分析、数据流分析、信息流分析;51Testing软件测试网8N3GP|b$N]1_4j

51Testing软件测试网aGu,m)[/_w;V2H

动态分析:逻辑覆盖测试、程序插装;51Testing软件测试网0oE\ i3E

51Testing软件测试网E7Nj3ob;A*^

SRS文档评审:黑盒测试

8|qz5l(j7\,d;g8{+B3g0

HLD文档评审:灰盒测试

e)EW4\N ~0

LLD文档评审:白盒测试51Testing软件测试网R3{M;f'c3S-|?1p

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

C*g#C9`!AL0
  • 输出的产品分成两类:最终产品(软件、用户说明等)和中间产品(文档、代码等)
  • 最终产品和中间产品都可以分为代码和文档
  • 文档可以分成:开发文档(SRS、HLD、LLD)、测试文档(计划、方案、用例)
  • 只要是软件产品,都是测试的对象

静态测试和动态测试

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

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

Ux#N{ X3N&T0

动态测试:运行被测软件系统的一种测试技术。51Testing软件测试网tS B7E.T;\:W

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

1Yl8r'z+[+f7d4h|N5j0
静态分析技术

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

KFEP zR8E&F V0

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

{gM] N#\ |0

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

1`"R5zDwk L#Q-X4z0

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

2X$OI_#ip8o0

技术结构:51Testing软件测试网!Uk"C3X|@PR+x2b

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

i:C1`A#YBgJ:[7t0
  • 正规检查
  • 技术评审
  • 走查

U1w:eJ!~ F0自动化静态分析51Testing软件测试网/HEF\] s6V@iq

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

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

I+}.HwV r7~,qM0

常用的动态分析技术:51Testing软件测试网G1}Xgm l6AL

常用动态分析工具功能:51Testing软件测试网(C2Xz3z0\ r

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

人工测试和自动化测试

人工测试:测试活动由人来完成,是最基本的测试形式。51Testing软件测试网D#JRE8G(`ClZL

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

L3b,j kQ@0

自动化测试的意义:51Testing软件测试网p8z2xY{r3dBQ

  • 提高回归测试效率
  • 运行频繁的测试
  • 执行手工测试困难或不能做的测试
  • 更好地利用资源
  • 测试一致性和可重复性
  • 测试复用
  • 减少软件发布时间
  • 增加软件信任度
51Testing软件测试网]'R;E:Y~5{S

自动化测试的局限:51Testing软件测试网5d0jdu2I

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

自动化测试的误区:51Testing软件测试网!c5|q,F!X.S![4X Z[#CB

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

n:F'T3s&QA0开展自动化需要考虑的因素:51Testing软件测试网*v6plq1U

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


W-A*n7F/I0W-d8y K0

@1iv7gc1p5^0

版权声明:本文出自gdou_wzy的51Testing软件测试博客:http://www.51testing.com/?174292
8aQ'Z.P;R||T-|E0原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。51Testing软件测试网#C:U#?&u ^&e Qe,@G


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

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

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

RSS订阅

Open Toolbar