第七章 测试

文章目录

  • 第七章 测试
    • 7.1 编码
      • 7.1.1 选择程序设计语言
        • 1. 计算机程序设计语言基本上可以分为汇编语言和高级语言
        • 2. 从应用特点看,高级语言可分为基础语言、结构化语言、专用语言
      • 7.1.2 编码风格
    • 7.2 软件测试基础
      • 7.2.1 软件测试的目标
      • 7.2.2 软件测试准则
      • 7.2.3 测试方法
        • 黑盒测试
        • 白盒测试
      • 7.2.4 软件测试的步骤
      • 7.2.5 测试阶段的信息流
        • 软件测试步骤
    • 7.3 单元测试
      • 7.3.1 测试重点
      • 7.3.2 代码审查
      • 7.3.3 计算机测试
        • 1. 对“编辑”功能的测试(存根模块)
        • 2. 对“编辑”功能的测试(驱动模块)
      • 例题
    • 7.4 集成测试
      • 7.4.1 自顶向下集成
      • 7.4.2 自底向上集成
      • 7.4.3 不同集成测试策略的比较
      • 7.4.4 回归测试
    • 7.5 确认测试
      • 7.5.1 确认测试的范围
      • 7.5.2 软件配置复查
      • 7.5.3 Alpha和Beta测试
    • 7.6 白盒测试技术
      • 7.6.1 逻辑覆盖
        • 1. 语句覆盖
    • 2. 判定覆盖
        • 3. 条件覆盖
        • 4. 判定/条件覆盖
        • 5. 条件组合覆盖
      • 测试
    • 7.7 黑盒测试技术
      • 7.7.1 等价划分(等价类划分)
      • 7.7.2 边界值分析
      • 7.7.3 错误推测
      • 例题
    • 7.8 调试
      • 7.8.1 调试过程
      • 7.8.2 调试途径
    • 7.9 软件可靠性
      • 7.9.1 基本概念
      • 7.9.2 估算平均无故障时间MTTF的方法
        • 1. 符号
        • 2. 基本假定
        • 3. 估算平均无故障时间MTTF
        • 4. 估计故障总数ET的方法
    • 小结

第七章 测试

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.程序中潜藏的错误的数目,直接决定了软件的可靠性。通过测试可以估算出程序中剩余的错误数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/30753.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

边缘智能:边缘计算驱动实时深度学习

边缘智能 作为人工智能领域的当红炸子鸡,深度学习技术近年来得到了学术界与产业界的大力追捧。目前,深度学习技术已在计算机视觉、自然语言处理以及语音识别等领域大放异彩,相关产品正如雨后春笋般涌现。由于深度学习模型需要进行大量的计算…

Delta 一个新的 git diff 对比显示工具

目录 介绍git diff 介绍delta介绍 一、安装1.下载 Git2.下载 delta3.解压4.修改配置文件5. 修改主题6.其他配置和说明 二、对比命令1.在项目中 git diff 常用命令2.对比电脑上两个文件3.对比电脑上的两个文件夹 三、在Git 命令行中使用效果四、在idea 的Terminal命令行中使用效…

linux 内核版本和发行版本

当要明确自己的Linux系统的版本号时,大多数情况是用命令确定Linux内核版本的。不过这个还是要与CentOS的版本号(就是你使用的Linux系统的发行版本)区分开来,这两个不是一个东西。 一、发行版本号 比如当时安装CentOS时&#x…

MySQL是什么,如何整合SpringBoot,以及使用优势

目录 一、MySQL是什么 二、如何整合SpringBoot 三、MySQL使用优势 一、MySQL是什么 MySQL是一种开源的关系型数据库管理系统,采用客户机/服务器模式实现数据存储和管理。其最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems收购,最终…

【Python 随练】寻找完数

题目: 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 61+2+3.编程找出 1000 以内的所有完数。 简介: 在本篇博客中,我们将解决一个数学问题:如何找出 1000 以内的所有…

AI绘画基于 Kaggle 10 分钟搭建 Stable Diffusion(保姆级教程)

AI绘画基于 Kaggle 10 分钟搭建 Stable Diffusion(保姆级教程) 一、引言二、安装教程1. 注册 Kaggle2. Edit My Copy3. 进行手机号的验证4. 打开 “internet off” 开关,并选择显卡5. 开启 session,运行脚本 三、主界面介绍四、注…

Windows提示“找不到rgss202j.dll”怎么办?

Rgss202j.dll文件是Windows操作系统最重要的系统文件之一,它包含了一组程序和驱动函数。如果此文件丢失或损坏,驱动程序将无法正常工作,并且相应的应用程序也将无法正常启动且运行。通常情况下,造成Rgss202j.dll文件无法找到的原因…

计算机的工作过程和主要性能指标

一、计算机的工作过程 为使计算机按预定要求工作,首先要编制程序。 程序是一个特定的指令序列,它告诉计算机要做哪些事,按什么步骤去做。 指令是一组二进制信息的代码,用来表示计算机所能完成的基本操作。 编制好的程序放在主存中…

redis 的基本介绍以及 五种 数据类型

一、redis是什么? 一句话:redis 是一个开源的、使用C语言编写的、支持网络交互,基于内存也可持久化的 key-value (非关系型)数据库 redis作者博客,有兴趣的小伙伴可以去逛一逛:http://github.…

Android 9 蓝牙协议初始化

先讲一下Application类的使用 要使用自定义的Application,首先就是要自己新建一个Application的子类,然后把它的名字写在manifest文件里面的application标签里的android:name属性就行,如我的Application子类名字是BaseApplication&#xff0c…

Selenium 环境配置

如果你做过 Web 测试的工作,那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试。自动化测试,顾名思义就是让浏览器自动运行,而无需手动操作。这和我们爬虫工作原理有些相似,我们爬虫也需要让浏览器运行网址来获取我们需…

基于QFT的量子加法器的原理与实现-mindspore quantum

1 量子Fourier变换 离散Fourier变换以一一个复向量 x 0 , . . . , x N − 1 {x_0},...,{x_{N - 1}} x0​,...,xN−1​为输入,输出的数据是如下复向量 y 0 , . . . , y N − 1 {y_0},...,{y_{N - 1}} y0​,...,yN−1​: y k ≡ 1 N ∑ j 0 N − 1 x j …

Debian12.0.0更换系统语言中文到英文

6月10号,Debian12.0.0更新,想尝尝鲜,在虚拟机里安装好,想将中文改为英文,因为Terminal下输入命令,中文切换麻烦。 一、步骤如下 #1、查看当前语言环境 env | grep LANG #2、en表示语言,US表示…

ffmpeg capture decklink

确保decklink设备已经接入 lspci | grep Blackm02:00.0 Multimedia video controller: Blackmagic Design DeckLink SDI Micro 确保decklink驱动已经正确安装 lsmod | grep blackmagicblackmagic_io 2068480 2 确保ffmpeg已经启用decklink,如何配置之前的博文已经…

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统

岩土工程监测案例:完整链条的振弦传感器、采集仪和在线监测系统 在岩土工程监测中,振弦传感器被广泛应用于测量土体或岩体的振动情况,以了解地震或其他振动事件对结构物或地基的影响。振弦传感器具有高精度、快速响应、易于安装和低成本等优…

C语言指针初阶+进阶(看这一篇就够了)

目录 本章重点 1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 8. 字符指针 9.数组指针 10. 指针数组 11数组传参和指针传参 12. 函数指针 13. 函数指针数组 14. 指向函数指针数组的指针 15. 回调函数 16 指针和数组面试题的解…

c++lambda函数笔记

1、labmda函数用途: 用于简短功能函数的定义,并传递到std算法中。 2、一般函数与lambda函数比较示例 3、如何定义lambda 如下为lambda通用定义式子: [capture] (params) opt->ret{body;}; capture——捕获列表,[]为不捕获变量…

制造执行系统(MES)的核心功能是什么?

制造执行系统(MES)的核心功能是什么? 01 什么是MES 制造执行系统(MES)是一种用于监控、控制和优化制造过程的软件系统。它通过与企业资源计划(ERP)系统和自动化系统的集成,实现对生产过程的管…

基于MATLAB的无人机遥感数据预处理与农林植被性状估算

在新一轮互联网信息技术大发展的现今,无人机、大数据、人工智能、物联网等新兴技术在各行各业都处于大爆发的前夜。为了将人工智能方法引入农业生产领域。首先在种植、养护等生产作业环节,逐步摆脱人力依赖;在施肥灌溉环节构建智慧节能系统&a…

DBSyncer安装_配置postgresql和mysql_sqlserver_oracel全量增量同步---数据全量增量同步之DBSyncer001

国内做开源的大神做的,用了一下还可以,就是不能和Phoenix这种操作hbase等数据库一起用, https://gitee.com/ghi/dbsyncer#postgresql 这个是官网,下载安装非常简单,官网也有中文详细说明. 直接下载安装包: 然后解压到某个地方,主要要用unzip dbsyncer.zip -d /opt/module这样…