美文网首页
【个人向】软件测试复习

【个人向】软件测试复习

作者: 李年糕子 | 来源:发表于2018-06-03 11:21 被阅读107次

软件测试(普遍认同):

  • 软件测试是为了发现错误而执行程序的过程;
  • 测试是为了证明程序有错,而不是证明程序无错误;
  • 一个好的测试用例是在于它能发现至今未发现的错误;
  • 一个成功的测试是发现了至今未发现的错误的测试。

zero-bug vs. good-enough

防止过少和过量的测试。

木桶原则

不能有短板。测试仅作为重要的一环,不能仅依赖测试来保证质量;

80-20原则

能被发现的Bug仅占全部Bug的80%,还有20%只有在大范围、长时间使用下才能暴露。

测试用例(Test Case)

是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

测试和调试

  • 调试:目的比较明确,是为了解决某一个特定问题,调试可以看作测试的一部分。
  • 测试:比较完整的检查软件是否满足用户需求的一种有计划的行为。

软件和硬件

  • 表现形式:硬件有形⇔ 软件无形、软件运行时才能看出优劣、管理困难;
  • 生产方式:软件是逻辑产品、通信的误差;
  • 质量要求:精度⇔有的软件是误差零容忍;
  • 维护:硬件更换⇔软件升级。

软件缺陷/Defect/Bug

存在于软件(文档、数据、程序)中那些不希望、或不可接受的偏差,而导致软件产生的质量问题

常见缺陷

  • 未实现要求功能;
  • 出现说明书中指明的不能出现的错误;
  • 实现未提到功能;
  • 未实现说明书未提及但应该实现的目标;
  • 软件难以理解、不易使用、运行缓慢。

缺陷分类

按表现形式

  • Function
  • Interface
  • Algorithm
  • Documentation
    ...

按严重程度

  • critical(关键的)
  • cosmetic
  • minor
  • major

按优先级

  • high
  • middle
  • low

按在生命周期的出现阶段

  • Requirement
  • Design
  • Architecture
  • Test
  • Code

按根源

  • 测试策略
  • 工具和方法
  • 团队和人
  • 缺乏通信
    ...

按缺陷的生命周期

  • new/unconfirmed
  • confirmed
  • fixed
  • closed
  • reopen

报告缺陷的原则

  • 早原则:初期的错误vs.后期错误
  • 有效原则:简短、单一、术语、明确
  • 中立原则:缺陷不可避免、允许缺陷产生
  • 重现原则:确保错误能重现。

缺陷管理工具

一个网络应用程序,提供多用户操作、管理缺陷,分析缺陷报告等功能。

举例子:

  • Bugzilla:一款开源、免费、全球许多组织喜爱的缺陷管理工具。Mozilla项目组开发和使用。
  • Mantis
  • Trac

使用的两种模式

  • 服务端模式:组件服务器,为其他用户提供缺陷管理平台。一般需安装:数据库、网页服务器、工具软件。
  • 客户端模式:访问已有服务器。所需软件:浏览器或者客户端软件。

软件质量

ISO关于质量的定义:一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于这些特性满足需求的程度。

质量层次

  • 符合需求规格:符合开发者明确定义的目标。
  • 符合用户显式需求:符合用户所明确说明的目标。
  • 符合用户实际需求:包括用户明确说明的和隐含的需求。

影响软件质量的因素

  • 流程
  • 技术
  • 组织

动态测试工作分类

组织内部进行:

  • 单元测试
  • 集成测试
  • 系统测试

用户参与进行:

  • 验收测试
  • α(ALPHA)测试
  • β(BETA)测试

单元测试

针对:软件基本组成单元(设计的最小单位)
目的:与《详细设计说明书》的符合程度
测试方法:白盒测试
评估基准:逻辑覆盖率

集成测试

基础:在单元测试基础上,将所有模块按照概要设计要求组装成为子系统或系统。
针对:组装后功能以及模块间接口
目的:与《概要设计说明书》的符合程度
测试方法:灰盒测试
评估基准:接口覆盖率

系统测试

针对:已集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起
目的:与《需求规格说明书》的符合程度
测试方法:黑盒测试
评估基准:测试用例对需求规格的覆盖率

穿插:回归测试(Regression Testing)

目的:验证缺陷得到了正确的修复,同时对系统的变更没有影响以前的功能。
发生阶段:任何阶段,包括单元测试、集成测试和系统测试

【拓展】捕捉回放工具
对系统测试功能比较简单、测试界面相对稳定并且测试用例良好组织的测试来说,采用捕捉回放工具是比较合适的:

  • QTP
  • Robot
  • SilkTest

回归测试分类

完全重复测试

重新执行所有在前期测试阶段建立的测试用例。

选择性重复测试

选择地重新执行部分在前期测试阶段建立的测试用例

它又可以分为:

  • 覆盖修改法:针对被修改的部分,验证没有错误发生。
  • 周边影响法:要包含覆盖修改法确定的用例,还需要分析修改的扩散影响。
  • 指标达成方法:类似于单元测试的方法。在重新执行测试前,先确定一个要达成的指标,基于这种要求选择一个最小的测试用例集合。

验收测试

基础:通过内部系统测试及软件配置审查之后
组成:项目组成员、用户代表等组成
基准:验收测试根据合同、《需求规格说明书》/《验收测试计划》

α测试

组成:用户、开发者
过程: 软件在一个自然设置状态下使用。开发者坐在用户旁,随时记下错误情况和使用中的问题
目的:评价软件产品的FLURPS(即功能、局域化、可用性、可靠性、性能和技术支持

β测试

组成:用户
过程:由软件的多个用户在一个或多个用户的实际使用环境下进行的测试
过程:开发者通常不在测试现场,情况不可控。

测试过程

阶段划分

  • 计划 – 测试计划
  • 设计 – 测试方案
  • 实现 – 测试用例、测试规程
  • 执行 – 测试报告

常见过程模型

  • 瀑布模型
  • H模型
  • V&V模型

验证(Verification)

  • 保证软件正确地实现特定功能的一系列活动
  • 检测每一阶段形成的工作产品是否与前一阶段定义的规格相一致

确认(Validation)

  • 保证所生产的软件可追溯到用户需求的一系列活动
  • 检测每一阶段的工作产品是否与最初定义的软件需求、规格相一致

软件静态测试

在不运行程序的情况下,对程序进行检查和审核

主要包括:

  • 各阶段评审
  • 代码检查
  • 程序结构分析
  • 代码质量度量

软件复杂性

Halstead复杂度

根据可执行代码的操作符和操作数的数量来计算程序的复杂性。
程序的实际长度与其预测长度非常接近:

  • 实际长度= N1 + N2;
  • 预测长度= n1∗log(2∗n1)+n2∗log(2∗n2)

其中各个变量的意思:

  • n1 =不同运算符的个数;
  • n2 =不同操作数的个数;
  • N1 =实际运算符的个数;
  • N2 =实际操作数的个数。

静态测试工具

FindBugs:一个免费的Java静态分析工具,可以直接加载到Eclipse中运行。
配置Eclipse中的FindBugs;
使用FindBugs对Sudoku进行静态测试;
查看FindBugs查出的错误,并进行相应修改。

白盒测试

插桩法

在被测程序中插入操作(探测器),实现探查和监控的功能。
通过运行被测试程序,检查运行结果,分析其性能。
组成部分;
构造测试用例;
运行程序;
分析结果。

覆盖

  • 判断覆盖
  • 条件覆盖
  • 条件组合覆盖
  • 路径覆盖
  • 语句覆盖
    判断覆盖关心判定表达式的结果,而条件覆盖关心每个表达式的取值,不关心整个判定表达式的最终值。

路径测试

基于路径覆盖的思想,考虑各分支的覆盖情况,压缩串行部分。
McCabe圈复杂度V (G)
V (G) = m − n + 2,其中
m:弧数
n:节点数

覆盖测试工具EclEmma

  • 绿色表示该行代码被完整的执行;
  • 红色表示该行代码根本没有被执行;
  • 黄色表示该行代码部分被执行。

黑盒测试

边界值

导致程序失效极少是有两个或多个缺陷同时作用引起的,而大部分是由单个变量在边界值附近取值引起的。

  • 基本边界值分析
    当考虑一个变量的边界值附近取值时,其他变量取正常值。
    因此边界值分析中:
    对于 n 变量的被测程序,需要测试用例为多少个?
    4n + 1个

  • 健壮性边界值分析
    简单扩展,增加 max+ 和 min- 两个非正常值
    含非正常值的测试用例关心的不是输入本身,而是程序的输出。

等价划分

每一类中的代表数据与其他数据对揭示程序的缺陷有相等的作用,一损俱损,一荣俱荣;

  • 强一般等价类测试:基于“多缺陷”假设,变量的有效等价类的任意组合。
  • 弱健壮等价类测试:在弱一般等价类基础上增加无效等价类的情形。
  • 强健壮等价类测试:在强一般等价类基础上增加无效等价类的情形。

因果图

直观的表达输入条件和输出动作之间的关系,帮助测试人员把注意力集中到与程序功能有关的输入组合上。

决策表

比因果图法更加严谨,需考虑各种条件的组合情况。
一般因果图和决策表的设计过程比较麻烦,仅在复杂的核心算法中才考虑采用。

正交试验法

研究和处理多因素实验的一种科学方法
帮助选择最佳的或满意的实验条件
构造正交表,相当于前面的方法设计的用例,但实验点更加均匀,又能减少实验次数。

正交表:
每一列各种数字出现的次数一样多;
任何两列所构成的有序数对出现的次数一样多。

正交表记为L4(2^3 )
其中
3 表示因子的数量;
2 表示每个因子可以取得值(称为水平,等价类);
4 为【查表的】正交表的行数(即测试用例个数)。

最少实验次数 = 求和(水平数-1)+1

Use case 场景法

基于以事件触发来控制流程的一种方法,测试用例就是描述事件触发时的事件流。

  • 基本流: 按一定事件正确实现软件功能的基本流程;
  • 备选流: 其他出现故障或缺陷、例外的流程。

状态迁移图法

许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面。

  • 画出有限状态自动机
  • 从自动机推导出测试路径
  • 根据测试路径编写合法测试用例
  • 编写非法测试用例

JUnit

引入JUnit架包;
自动生成测试框架;
组织 AAA 设计测试用例;
用@Before标记初始化函数;
用@After标记结束清理函数。

相关文章

  • 【个人向】软件测试复习

    软件测试(普遍认同): 软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误; ...

  • 软件测试复习

    软件测试复习参考范围 对软件测试第1章的基本概念要有所了解。黑盒测试和白盒测试部分上课没有将的测试方法不用看。各个...

  • 软件测试复习--功能测试

    说功能测试有些陌生了,说黑盒测试,哇,原来是这货,他还有别的名字,数据驱动测试,行为测试等。 2 黑盒测试 虽说功...

  • 软件测试复习--白盒测试

    明天去参加一个面试,软件测试,我也不知为啥我要报这样一个岗位,估计是“户口”两个字吧。 总之要复习一下测试的基本知...

  • 软件性能测试目录

    软件性能测试Ⅰ 软件性能测试Ⅱ 软件性能测试Ⅲ 软件性能测试Ⅳ 软件性能测试Ⅴ 软件性能测试Ⅵ 软件性能测试Ⅶ 软...

  • 软件测试资料下载、【软件测试】新科海软件测试视频、04【软件测试

    ![软件测试资料下载、【软件测试】新科海软件测试视频、04【软件测试】播布客软件测试系列培训视频、08【软件测试】...

  • 软件 自动化测试工程师 面试前准备 个人总结(非官方)

    背景:10月份离职后继续找互联网行业自动化测试工程师,在自习室闭关几天,开启复习学习之路:一、软件测试-复习思路二...

  • 软件测试

    基础篇 软件测试历史 什么是软件测试 软件测试在整个开发过程中的地位 软件测试要素 软件测试类别 软件测试流程、软...

  • 测试用例方法总结

    软件测试用例 什么是测试用例? 测试用例是指为实施测试而向被测试系统提供的输入数据,操作或各种环境设置以及期望结果...

  • 11.1

    项目(独立性分析)✔️ 翻译❌ 比赛✔️ ML学习+复习计划制定(SVM结束+编程)✔️ 软件测试准备(读文章)❌

网友评论

      本文标题:【个人向】软件测试复习

      本文链接:https://www.haomeiwen.com/subject/lxifsftx.html