软件工程-软件测试

基本概念

广义上讲软件测试是对软件需求分析,设计说明和编码进行复审的软件质量保证工作

狭义上讲软件测试是为了发现错误而执行程序的过程。换言之,软件测试是根据软件开发各个阶段的规格说明和程序内部结构精心设计的测试用例,并利用这些测试用例运行程序发现错误的过程。

**测试(testing)**的目的与任务:

目的:发现程序潜在的错误

任务:通过执行程序,暴露潜在的错误

**排错(debugging)**的目的和任务:

目的:定位于纠正错误

任务:消除软件故障,保证程序稳定运行

测试用例

为测试程序而专门设计的数据

测试的对象

源程序/目标代码

各个开发阶段的资料

  • 需求规格说明
  • 概要设计说明
  • 详细设计说明
  • 其它相关文档

测试的特性

挑剔性:

抱着为证明程序有错误的目的去测试

复杂性:

需要设计测试用例

不彻底性:

有一句名言"程序测试只能证明错误的存在,不能证明错误的不存在"

经济性:

在测试时考虑测试所需的人力成本

测试的分类

静态测试(不执行程序)

  • 静态分析器
  • 代码复审(code review)

动态测试(执行程序)

黑盒测试

测试程序功能

白盒测试

测试程序结构

测试的文档

测试计划

  • 测试项目的名称
  • 各项测试的目的、进度、步骤
  • 测试用例的设计

测试报告

  • 测试项目的名称
  • 测试结果与预期结果的比较
  • 发现的问题
  • 测试达到的效果

白盒测试

对软件的过程性细节做细致的检查,允许测试人员根据程序的内部结构和相关信息,设计测试用例,对程序所有路径进行测试。

逻辑覆盖法

用流程图来设计测试用例

5条标准(排序按发现错误的能力由弱到强):

  1. 语句覆盖:每条语句至少执行一次
  2. 判定覆盖:每一个判定的分支至少执行一次
  3. 条件覆盖:每一个判定中的每一个条件按"真"和"假"各至少执行一次
  4. 判定/条件覆盖:同时满足判定覆盖和条件覆盖的要求
  5. 条件组合覆盖:求出判定中所有条件可能的组合值,每一种条件组合至少执行一次

基本路径法

根据软件过程中的控制流程导出一组测试用例,确保每个路径都至少被执行一次

流程图------》流图

环路复杂性度量V(G)

流图

把流程图中的结构化构件用一般有向图表示

其中代表条件判断的分支结点成为谓词结点

环路复杂性度量V(G)

等于程序中独立路径的条数

三个计算公式:

  1. V(G)= 流图中区域的个数
  2. V(G)=E-N+2,E是流图中的边数,N是流图中的结点数
  3. V(G)=P+1,P是流图中谓词结点的个数

文章内图片均来自于网络

黑盒测试

把测试对象看作黑盒,不考虑程序内部的逻辑结构和内部特性,只依据程序的规格需求说明,在特定的条件下输入,输入相应的数据,检查程序的输出是否符合它的规格说明。

等价分类法

把输入数据的可能值划分为若干个等价类,大致分为有效等价类和无效等价类。每一个无效等价类至少需要一个测试用例

边界值测试法

使被测程序在边界值及其附近运行,从而更有效地暴露程序中潜在的错误

错误猜测法

猜测被测程序在哪些地方容易出错

针对可能的薄弱环节设计测试用例

对比测试法

多模块程序的测试策略

测试的阶段性

单元(模块)测试

综合(集成)测试

自顶向下的测试

深度优先

宽度优先

能比较块地发现错误

自底向上的测试

能比较全面地测试模块

混合方式测试

对上层利用自顶向下的测试

对底层模块或者子模块使用自底向上的测试

确认测试

α测试:公司内部测试版本

β测试:对外测试版本

系统测试

程序错误的类型

语法错误

结构性错误

功能性错误

接口错误

相关推荐
雾江流15 小时前
小米堆叠桌面6.01.05.1991 | 提前享受丝滑堆叠桌面,仅限小米手机
智能手机·软件工程
爱思德学术1 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):SPIN 2026
软件工程·软件开发
赫尔·普莱蒂科萨·帕塔1 天前
智能体工程
人工智能·机器人·软件工程·agi
雾江流1 天前
BiliPai 5.0.5 | B站开源第三方应用,纯净无广流畅
软件工程
JMchen1231 天前
AI编程与软件工程的学科融合:构建新一代智能驱动开发方法学
驱动开发·python·软件工程·ai编程
muddjsv2 天前
软件工程:职业全景与前景深度解析
软件工程
明洞日记2 天前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
muddjsv2 天前
软件工程编程语言学习:从入门到工程化的路线与建议
软件工程
宇钶宇夕3 天前
CoDeSys入门实战一起学习(二十八):(ST)三台电机顺起逆停程序详解
运维·学习·自动化·软件工程
学嵌入式的小杨同学3 天前
【Linux 封神之路】进程进阶实战:fork/vfork/exec 函数族 + 作业实现(含僵尸进程解决方案)
linux·开发语言·vscode·嵌入式硬件·vim·软件工程·ux