第七章 测试

这篇具有很好参考价值的文章主要介绍了第七章 测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第七章 测试

1.编码和测试统称为实现。
2.编码:把软件设计结果翻译成程序。
3.测试:检测程序并改正错误的过程

7.1 编码

7.1.1 选择程序设计语言

1. 计算机程序设计语言基本上可以分为汇编语言和高级语言
2. 从应用特点看,高级语言可分为基础语言、结构化语言、专用语言

01 有理想的模块化机制;
02 可读性好的控制结构和数据结构;
03 便于调试和提高软件可靠性;
04 编译程序发现程序错误的能力强;
05 有良好的独立编译机制。

7.1.2 编码风格

  1. 程序内部的文档
  2. 恰当的标识符
  3. 语句构造
  4. 输入/输出
  5. 效率
    ① 程序运行时间
    ② 存储器效率
    ③ 输入/输出效率

7.2 软件测试基础

7.2.1 软件测试的目标

(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试

测试的定义:为了发现程序中的错误而执行程序的过程。

7.2.2 软件测试准则

为了能设计出有效的测试方案,软件工程师必须深入理解并运用指导软件测试的基本准则。

7.2.3 测试方法

黑盒测试

如果已经知道软件应该具有的功能,可以通过测试来检验是否每个功能都能正常使用,这种测试称黑盒测试。也称功能测试。

白盒测试

也称结构测试。
如果知道软件内部工作过程,可以通过测试来检验软件内部动作是否按照规格说明书的规定正常进行,这种测试称为白盒测试。

7.2.4 软件测试的步骤

  1. 模块测试
    模块测试又称单元测试,它把每个模块作为单独的实体来测试。
  2. 子系统测试
    子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。
  3. 系统测试
    系统测试是把经过测试的子系统装配成一个完整的系统来测试。
  4. 验收测试
    验收测试把软件系统作为单一的实体进行测试(利用用户的实际数据测试)。
  5. 平行运行
    平行运行是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。

7.2.5 测试阶段的信息流

第七章 测试

软件测试步骤

第七章 测试
第七章 测试

7.3 单元测试

7.3.1 测试重点

  1. 模块接口
  2. 局部数据结构
  3. 重要的执行路径
  4. 出错处理通路
  5. 边界条件

7.3.2 代码审查

第七章 测试

7.3.3 计算机测试

驱动程序或存根程序
第七章 测试
第七章 测试

1. 对“编辑”功能的测试(存根模块)

第七章 测试

2. 对“编辑”功能的测试(驱动模块)

第七章 测试

例题

第七章 测试

7.4 集成测试

1)非渐增式测试方法
先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。
2)渐增式测试方法
每次增加一个待测试模块,把它同已经测试好的那些模块结合起来进行测试,反复进行直到完成所有模块测试的方法

7.4.1 自顶向下集成

1)深度优先策略
2)宽度优先策略

7.4.2 自底向上集成

自底向上集成方法是从软件结构最底层模块开始进行组装和测试,它与自顶向下结合方法相反,需要驱动程序,不需要存根程序

7.4.3 不同集成测试策略的比较

第七章 测试

7.4.4 回归测试

回归测试用于保证由于调试或其他原因引起的程序变化,不会导致额外错误的测试活动。

7.5 确认测试

7.5.1 确认测试的范围

• 也称为验收测试,目标是验证软件的有效性
• 如果软件的功能和性能符合用户的期待,软件就是有效的。
软件规格说明书是进行确认测试的基础

7.5.2 软件配置复查

确认测试一般使用黑盒测试法
目的:保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,而且已经编好
目录。

7.5.3 Alpha和Beta测试

Alpha测试:用户在开发者的场所进行测试,并且在开发者的指导下进行,测试在受控环境中进行,开发者记录发现的错误和问题;
Beta测试:用户在一个或多个客户场所进行测试,不受开发者控制,测试者记录发现的问题和错误,定期将问题报告发送给开发者。

7.6 白盒测试技术

7.6.1 逻辑覆盖

1. 语句覆盖

设计的测试用例能使程序中每条语句至少执行一次。如果遵循这个规定则说明达到了100%的语句覆盖。
第七章 测试
语句覆盖是最弱的逻辑覆盖准则,它发现不了判断中逻辑运算符的错误。

2. 判定覆盖

判定覆盖是指:选取足够的测试用例,使得程序中每个判断的可能结果都至少执行一次,也就是说使
程序的每个判断分支至少通过一次。
第七章 测试
比语句覆盖稍强的逻辑覆盖准则,它任然发现不了判断中逻辑运算符的错误。

3. 条件覆盖

条件覆盖是指:选择足够的测试用例,使得程序中每个判定表达式的每个条件都取到各种可能的结果。即每个判定中的所有条件取值组合都被至少执行一次

第七章 测试

4. 判定/条件覆盖

选取足够的测试用例使得同时满足判定覆盖和条件覆盖的要求。
第七章 测试

5. 条件组合覆盖

条件组合覆盖指:选取足够的测试用例,使得每个判定表达式中条件的各种可能的组合都至少出现一次。
第七章 测试

测试

第七章 测试
第七章 测试

7.7 黑盒测试技术

测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明,又叫做功能测试或数据驱动测试。

7.7.1 等价划分(等价类划分)

等价类划分是一种黑盒测试技术。
第七章 测试
等价类某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
第七章 测试

7.7.2 边界值分析

  1. 程序通常在处理边缘情况时容易出现错误,如等价类与等价类之间的边界值。
  2. 边界值分析测试法属黑盒测试

7.7.3 错误推测

  1. 错误推测法在很大程度上靠直觉和经验进行。
  2. 基本思想:列举出程序中可能的错误和容易发生错误的特殊情况,且根据它们选择测试方案。如:输入、输出为0时容易出错;输出记录为0条时容易出错;等等。
  3. 在进一步测试时要着重测试哪些发现了较多错误的组合情况。

例题

第七章 测试
第七章 测试
第七章 测试

7.8 调试

7.8.1 调试过程

第七章 测试

7.8.2 调试途径

  1. 蛮干法:打印内存的内容,从中寻找错误的线索,是效率最低的程序调试方法。
  2. 回溯法:从发现问题的程序段开始人工地往回追踪分析程序代码,直到找到错误。
  3. 原因排除法包括:对分查找法、归纳法、演绎法

7.9 软件可靠性

7.9.1 基本概念

对故障可修复系统,应同时使用可靠性可用性来衡量。

  1. 软件可靠性定义
    软件可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
  2. 软件的可用性
    软件可用性是:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。

可靠性和可用性的区别是:可靠性是在0到t时间间隔内,系统没有失效的概率。而可用性是在t时刻,
系统是正常运行的概率。

如果引入系统平均无故障时间MTTF和平均维修时间MTTR的概念,则上面公式的系统稳态可靠性变成:
平均维修时间MTTR是修复一个故障平均需要用的时间,取决于维护人员的技术水平和对系统熟悉程度。
平均无故障时间MTTF是系统按照规格说明书规定成功地运行的平均时间,取决于系统中潜伏的错误数量。
第七章 测试

7.9.2 估算平均无故障时间MTTF的方法

1. 符号

估算MTTF时使用到下列符号
ET——测试之前程序中故障总数;
IT——程序长度(机器指令总数);
τ——测试(包括调试)时间;
Ed(τ) ——在0至τ期间发现的错误数;
Ec(τ) ——在0至τ期间改正的错误数;

2. 基本假定

第七章 测试

3. 估算平均无故障时间MTTF

第七章 测试

4. 估计故障总数ET的方法

1)植入故障法
第七章 测试
2)分别测试法
第七章 测试
第七章 测试

小结

1.实现包括编码和测试两个阶段。
2.高级程序设计语言较汇编语言有很多优点。
3.通常软件测试至少分为单元测试、集成测试和验收测试3个基本阶段。
4.软件测试不仅仅指利用计算机进行的测试,还包括人工进行的测试(例如,代码审查)。
5.白盒测试和黑盒测试是软件测试的两类基本方法,设计白盒测试方案的技术主要有,逻辑覆盖和控
制结构测试;设计黑盒测试方案的技术主要有,等价划分、边界值分析和错误推测。
7.及时改正测试过程中发现的软件错误就是调试的任务。
7.程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。文章来源地址https://www.toymoban.com/news/detail-481032.html

到了这里,关于第七章 测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第七章 图论

    第七章 图论 一、数据结构定义 图的邻接矩阵存储法 图的邻接表存储法 把所有节点存储为节点数组,每个节点里有自己的数据和一个边指针,这个边指针相当于一个链表的头指针,这个链表里存放所有与这个节点相连的边,边里存放该边指向的节点编号和下一条边指针 图的

    2024年02月14日
    浏览(35)
  • 第七章 函数矩阵

    和矩阵函数不同的是,函数矩阵本质上是一个矩阵,是以函数作为元素的矩阵。 矩阵函数本质上是一个矩阵,是以矩阵作为自变量的函数。 函数矩阵和数字矩阵的运算法则完全相同。 不过矩阵的元素 a i j ( x ) a_{ij}(x) a ij ​ ( x ) 需要是闭区间 [ a , b ] [a,b] [ a , b ] 上的实函数

    2024年02月04日
    浏览(33)
  • 第七章金融中介

             金融中介是通过向资金盈余者发行 间接融资合约( 如存款单),并和资金短缺者达成 间接投资合约 (发放信贷)或购买其发行的证券,在资金供求方之间融通资金,对资金跨期、跨域进行优化配置的金融机构。         金融体系由金融市场和金融中介构成,以银行业为

    2024年02月04日
    浏览(35)
  • python第七章(字典)

    一。字典(类型为dict)的特点: 1.符号为大括号 2.数据为键值对形式出现 3.各个键值对之间以逗号隔开 格式:str1={\\\'name\\\':\\\'Tom\\\'}  name相当于键值(key),Tom相当于值 二。空字典的创建方法 三。字典的基本操作(增删改查) 1.字典的增加操作:字典序列[key] = 值 注意点:如果存

    2024年01月24日
    浏览(39)
  • 数据结构第七章

    图(Graph)G由两个集合V和E组成,记为G=(V, E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集合,这些顶点偶对称为边。V(G)和E(G)通常分别表示图G的顶点集合和边集合,E(G)可以为空集。若EG)为空,则图G只有顶点而没有边。 子图:假设有两个图G=(V,E)和G1=(V1,E1);如果V1

    2024年02月03日
    浏览(39)
  • [JavaScript] 第七章 对象

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 [Java项目实战] 介绍Java组件安装、使用;手写框架等 [Aws服务器实战] Aws Linux服务器上操作nginx、git、JDK、Vue等 [Java微服务

    2024年02月02日
    浏览(67)
  • C国演义 [第七章]

    力扣链接 给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1: 输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7] 输出:3 解释:长度最长的公共子数组是 [3,2,1] 。 示例 2: 输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0] 输出:5 提示: 1 = nums1.length, num

    2024年02月10日
    浏览(33)
  • OpenCV:第七章、图像变换

    目录 第七章:图像变换 7.1、基于OpenCV的边缘检测 7.1.1、一般步骤 1、滤波 2、增强 3、检测 7.1.2、canny算子 1、canny算子简介 2、canny边缘检测的步骤 7.2、霍夫变换  7.2.2、OpenCV中的霍夫线变换 7.2.3、霍夫线变换原理        7.2.4、标准霍夫变换:HoughLines()函数    7.2.5、累计概率

    2024年02月03日
    浏览(56)
  • 第七章 高级 OOP 特性

    7.3.3 继承与延迟静态绑定 在创建类层次结构时,有时候回遇到这种情况,即父类方法要使用静态类属性,但静态类属性可能在子类中被覆盖。这和 self 的使用有关。我们看一个例子,其中 Employee 类和 Executive 类都做了一些修改: 执行代码如下: Watching Football  因为

    2024年02月11日
    浏览(33)
  • 第七章 正则表达式

    目录 1.1. 概念: 1.2. 基本正则表达式 1.2.1. 常见元字符 1.2.2. POSIX字符类 1.2.3. 示例 1.3. 扩展正则表达式 1.3.1. 概念 1.3.2. 示例 在进行程序设计的过程中,用户会不可避免地遇到处理某些文本的情况。有的时候,用户还需要查找符合某些比较复杂规则的字符串。对于这些情况,如

    2024年03月17日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包