【软件工程】测试

目录

  • 前言
  • 软件测试的目标
  • 测试准则
  • 测试方法
  • 测试方案(重点)
  • 白盒测试(重点)
    • 逻辑覆盖测试
      • 语句覆盖
      • 判定覆盖(分支覆盖)
      • 条件覆盖
      • 判定/条件覆盖
      • 条件组合覆盖
      • 总结
    • 基本路径覆盖法
  • 黑盒测试
    • 等价类法
    • 边界值分析法
  • 软件测试
    • 单元测试
      • 单元测试基本测试方法
    • 集成测试
      • 回归测试

前言

软件工程生命周期分为八个阶段:
问题定义—>可行性研究—>需求分析—>概要设计—>详细设计—>编码与单元测试—>综合测试—>软件维护

这节我们讲的是软件开发流程中的一个阶段,测试阶段。


软件测试的目标

  • 测试是为了发现程序中的错误而执行的过程
  • 好的测试方案是尽可能发现迄今为止尚未发现的错误的测试方案;
  • 成功的测试是发现了至今为止尚未发现的错误的测试。

测试准则

  • 所有测试都应该能追溯到用户需求;(测试用例设计依据)
  • 应该远在测试开始之前就制定出测试计划;
  • 80%的错误很可能是由20%的模块造成。
  • 应该从“小规模”测试开始,并逐步进行“大规模”测试;
  • 穷举测试是不可能的;
  • 为了达到最佳的测试效果,可以找独立的第三方公司进行测试工作。

测试方法

软件测试方法分为两种

  • 静态测试
    不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量质量的软件测试技术。也称为静态分析技术。
  • 动态测试
    实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。
    动态测试有三种
    • 黑盒测试
      在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。
    • 白盒测试
      在知道程序内部结构的情况下采用的测试技术或策略。
    • 灰盒测试
      黑盒测试方法和白盒测试方法综合的策略。

测试方案(重点)

  • 所谓测试方案包括:
    • 具体的测试目的(例如,预定要测试的具体功能)
    • 应该输入的测试数据
    • 预期的结果
  • 通常又把测试数据和预期的输出结果称为测试用例。(记忆)
    在这里插入图片描述

白盒测试(重点)

白盒测试适用于:对单一模块测试内部结构是否和详细设计相同。
常见白盒测试法:逻辑覆盖法、基本路径覆盖法

逻辑覆盖测试

语句覆盖

选择足够的测试用例,使得程序中每一条可执行语句至少被执行一次。

分析:
执行语句sacbed
测试用例:
A=2,B=0,X=任意实数
覆盖sacbed
在这里插入图片描述
语句覆盖特点:
语句覆盖对程序的逻辑覆盖很少。
语句覆盖不能走过所有支路。(没有语句的分支不执行不走)
语句覆盖是很弱的逻辑覆盖标准。

判定覆盖(分支覆盖)

不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。

分析:
所有判定分支:
(1) a点判定为T
(2) a点判定为F
(3) b点判定为T
(4) b点判定为F
覆盖上面四种需要两个用例
Ⅰ. 满足(aTbF)
A=3,B=0,X=3
覆盖sacbd 结果: x=1
Ⅱ. 满足(aFbT)
A=2,B=1,X=1
覆盖sabed 结果: x=2
在这里插入图片描述

条件覆盖

不仅每个语句至少执行一次,判定表达式中的每个条件都取到各种可能的结果。

分析:
所有条件:
(1)A>1 (2)A≤1
(3)B=0 (4)B≠0
(5)A=2 (6)A≠2
(7)X>1 (8)X≤1
测试用例:
Ⅰ. 满足(1)(3)(5)(7)
A=2,B=0,X=4
覆盖sacbed
Ⅱ. 满足(2)(4)(6)(8)
A=1,B=1,X=1
覆盖sabd
在这里插入图片描述

判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。

判定/条件覆盖

选择足够的测试用例,使得同时满足判定覆盖和条件覆盖。

分析:
所有判定
aT aF bT bF
所有条件:
(1)A>1 (2)A≤1
(3)B=0 (4)B≠0
(5)A=2 (6)A≠2
(7)X>1 (8)X≤1
测试用例:
Ⅰ. 满足条件(1)(3)(5)(7)
和判定(a真,b真)
A=2,B=0,X=4
结果:A=2,B=0,X=3
Ⅱ. 满足条件(2)(4)(6)(8)
和判定(a假,b假)
A=1,B=1,X=1
结果: A=1,B=1,X=1
在这里插入图片描述

条件组合覆盖

选择足够的测试用例,使得每个判定表达式中条件中的各种可能组合都至少出现一次。
在这里插入图片描述
在这里插入图片描述
特点:

  • 条件组合覆盖是前述几种覆盖标准中最强的。
  • 满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
  • 但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。(测试数据都没有测试到sacbd )

总结

  • 语句覆盖发现错误能力最弱。
  • 判定覆盖包含了语句覆盖,但它可能会使一些条件得不到测试。
  • 条件覆盖对每一条件进行单独检查,一般情况它的检错能力较判定覆盖强,但有时达不到判定覆盖的要求。
  • 判定/条件覆盖包含了判定覆盖和条件覆盖的要求,但实际上不一定达到条件覆盖的标准。
  • 条件组合覆盖发现错误能力较强, 凡满足其标准的测试用例,也必然满足前 4 种覆盖标准。
  • 以上五种覆盖方法,基本上是依次增强的(除少数如:条件覆盖和判定覆盖) 。随覆盖级别的提高,所需设计的测试用例数量也急剧增加,开销数量级的加大。

在这里插入图片描述

基本路径覆盖法

设计足够的测试用例,使得程序中的所有可能路径都至少被执行一次。

路径覆盖标准最高,但是测试用例数量级以幂次方增加测试用例数量。

分析路径:
(1)Sacbed (2)Sacbd
(3)Sabed (4)Sabd

(1)A=2,B=0,X=1
预期结果: x=3
(2)A=3 B=0 X=3
预期结果:x=1
(3)A=3,B=0, X=4
预期结果:x=5
(4)A=3,B=1,X=1
预期结果: x=1
在这里插入图片描述

黑盒测试

在这里插入图片描述
常用黑盒测试方法:

  • 等价类法
  • 边界值分析

等价类法

等价类有:有效的等价类,无效的等价类。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 设计测试用例时两个步骤:
    • 设计一个新的测试用例以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;
    • 设计一个新的测试用例,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。
      在这里插入图片描述
      在这里插入图片描述

边界值分析法

边界值:指输入等价类和输出等价类边界上的数据

  • 思想:设计边界值测试方案进行分析
    在这里插入图片描述
  • 边界值分析法步骤
    • (1)划分等价类
      (2) 找等价类的边界
  • 一个用例尽量覆盖多的有效边界
  • 一个用例只能覆盖一个无效边界
    在这里插入图片描述

软件测试

单元测试

1、目的
保证每个模块作为一个单元能正确运行;
发现的往往是编码和详细设计的错误。
2、基于的文档和测试方法:
详细设计说明书、
主要使用白盒测试技术

单元测试基本测试方法

  • 模块本身不是一个程序,不能直接运行,需要靠其它模块来驱动和调用,因此需要为其设计驱动程序(模拟其功能)。
  • 同时,一个模块运行中又调用到它的下属模块,则需为其设计多个存根程序(支持模块)。
    在这里插入图片描述

集成测试

  • 在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
    1)功能性测试。使用黑盒测试技术针对被测模块的接口规格说明进行测试。
    2)非功能性测试。对模块的性能或可靠性进行测试。

  • 基于文档及使用方法:
    概要设计说明书
    黑盒测试法

  • 由模块组装成程序时有两种方法:

    • 非渐增式测试方法
      在这里插入图片描述

    • 渐增式测试方法
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述

回归测试

在软件生命周期的任何一个阶段,只要软件发生了改变,就可能给软件带来问题。
(1)可能源于发现了错误并做了修改。
(2)也可能是因为在集成或维护阶段加入了新的模块。
回归测试:重新执行已经做过的测试的某个子集。以保证上述这些变化没有带来非预期的副作用。(已测过的一部分黑盒和白盒)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导数和偏导数练习

导数题目列表 偏导数题目列表 这里是上述50个导数和偏导数练习题的答案: 导数答案列表 偏导数答案列表 更多问题咨询 Cos机器人

Linux之命令行参数与环境变量

命令行参数&环境变量 命令行参数 main函数也是一个函数,其实也可以携带参数的 int main( int argc, char *argv[ ], char *envp[ ] ) {program-statements } 那这里是有三个参数的: 第一个参数: argc 是个整型变量,表示命令行参数的个数…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

关于Docker的数据管理

文章目录 一、Docker的数据管理1、数据卷1.1 数据卷定义1.2 数据卷配置 2、数据卷容器2.1 创建数据卷容器2.2 使用--volume-from来挂载luck02 二、端口映射三、容器互联1、创建容器互联2、进入luck02测试(ping 容器名/别名) 四、Docker镜像的创建1、基于…

Java类文件.class详解

一、编译型语言和解释型语言的区别 1、编译型语言: 在编译型语言中,源代码会被整个编译成机器码或者中间代码(比如Java的字节码),生成可执行文件。 运行程序时,不需要再对源代码进行解释,而是…

RockChip Android13 NFC SL6320移植

环境:RK3568 Android13 一:驱动移植 1、驱动 将SL6320驱动代码拷贝至kernel-5.10/drivers/misc/sl6320/ 特殊说明:勿将驱动代码放置于kernel-5.10/drivers/nfc/目录下,会导致sl6320驱动生成设备节点时因/dev/nfc节点以创建而加载失败。 2、DTS 本次硬件设计电路走I2C协…

服务器数据恢复—多块磁盘离线导致阵列瘫痪,上层lun不可用的数据恢复案例

服务器存储数据恢复环境: 某品牌MSA2000存储,该存储中有一组由8块SAS硬盘(其中有一块热备盘)组建的RAID5阵列,raid5阵列上层划分了6个lun,均分配给HP-Unix小型机使用,主要数据为oracle数据库和O…

【LeetCode刷题】34. 在排序数组中查找元素的第一个和最后一个位置

1. 题目链接 34. 在排序数组中查找元素的第一个和最后一个位置 2. 题目描述 3. 解题方法 找到元素的第一个位置,也就是找大于等于目标的最小值找到元素的最后一个位置,也就是找小于等于目标的最大值可以利用2次二分查找来解决 3.1. 第一次查找 3.2. …

今日详解,教你如何不直播在视频号卖货

大家好,我是电商笨笨熊 视频号作为背靠微信的平台,从不需要考虑自身的流量问题, 因此在视频号推出之后就有大批的主播从其他平台转入视频号; 而这时候很多普通人应该也发现了新的机会,不再去内卷抖音、快手直播&…

【Git】Github创建远程仓库并与本地互联

创建仓库 点击生成新的仓库 创建成功后会生成一个这样的文件 拉取到本地 首先先确保本地安装了git 可以通过终端使用 git --version来查看是否安装好了git 如果显示了版本信息,说明已经安装好了git,这时候我们就可以进入我们想要clone到问目标文件夹 …

python-正则表达试-实践1

匹配html标签中的任意标签内数据 匹配所有包含’oo’的单词 import re text "JGood is a handsome boy, he is cool, clever, and so on..." re.findall(r\w*oo\w*, text) 匹配 html中title里面的内容 原文: import re file r./202304.html f open(…

2023数维杯A题原创完整论文思路和求解代码

河流对地下水有着直接地影响,当河流补给地下水时,河流一旦被污染,容易导致地下水以及紧依河流分布的傍河水源地将受到不同程度的污染,这将严重影响工农业的正常运作、社会经济的发展和饮水安全。在地下水污染中最难治理和危害最大的是有机污染,因而对有机污染物在河流-地下…

WordPress Automatic插件 SQL注入漏洞复现(CVE-2024-27956)

0x01 产品简介 WordPress Automatic(又称为WP Automatic)是一款流行的WordPress插件,旨在帮助网站管理员自动化内容创建和发布。该插件可以从各种来源(如RSS Feeds、社交媒体、视频网站、新闻网站等)获取内容,并将其自动发布到WordPress网站。 0x02 漏洞概述 WordPres…

从论文中看AI绘画

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 主要看是看Diffusion Models,CLIP,ControlNet,IP-Adapter这种经典论文,尝试总结论文写作的一些方式以及图像生成模型的一些内在思想. 对于其中的数学原理和代码不过深究. DDPM 使用扩散模型得到高质量图像,证明了这…

“给力”用日语怎么说?柯桥成人日语培训

在日语中,给力这个词可以翻译成几个不同的表达方式,具体取决于语境。以下我将给出几个常见的日语翻译以及例句帮助理解: スゴイ 这个词意思为“太棒了”,是表达给力的最常见说法。 例如: これはスゴイ映画だね。这电影太给力了! 最高 意思为“最棒的”,也可以用来表达给力。 例…

连锁店收银系统为什么贵

连锁店收银系统会比单机收银系统价格高一些,主要有三个方面的原因: 复杂的功能需求 连锁店收银系统需要管理多个分店的进销存、库存调拨、门店订货等操作,以及会员管理,商淘云连锁收银系统还提供了连锁线上商城等功能。这些功能的…

“胖猫”事件

1.她自以为手段高明,不过是他心甘情愿罢了。 2. 可惜他在最后一刻,也没怨恨过她。 3.她反复确定用不用还,他反复确定有没有爱。 4. 他才21岁,只想见你一面,有什么错。 5. 希望你学会爱的时候,爱的第一个人是…

csrf攻击(跨站请求伪造)【2】

1.DVWA中csrf漏洞验证low (1)受害者将密码更改为password,显示更改成功 (2)受害者未退出登录状态,打开了新链接(黑客设计好的修改密码为admin123(原本为passwrod)的链接),导致受害者密码被更改&#xff0c…

Python-VBA函数之旅-pow函数

目录 一、pow函数的常见应用场景 二、pow函数使用注意事项 三、如何用好pow函数? 1、pow函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页:神奇夜光杯-CSDN博客 一、pow函数的常见应用场景 Py…

【Web】CTFSHOW 中期测评刷题记录(1)

目录 web486 web487 web488 web489 web490 web491 web492 web493 web494 web495 web496 web497 web498 web499 web500 web501 web502 web503 web505 web506 web507 web508 web509 web510 web486 扫目录 初始界面尝试文件包含index.php&am…