软件测试的目的、原则及流程

2023-11-05

一、软件测试的目的

        1)软件测试是为了发现错误而执行程序的过程。

        2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)

        3)一个好的测试用例在于它发现至今未发现的错误。

        4)一个成功的测试是发现了至今未发现的错误的测试。

注意:

        1、测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。

        2、没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。例如Bev Littlewood发现一个经过测试而正常运行了n个小时的系统有继续正常运行n个小时的概率

 二、软件测试的原则

       1)应当把“尽早地不断地进行软件测试“作为软件开发者的座右铭。

       2)测试用例应由测试数据和与之对应的预期输出结果这两部分组成。

       3)程序员应避免检查自己的程序。

       4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

       5)充分注意测试中的群集现象。

       6)严格执行测试计划,排除测试的随意性。

       7)应当对每一个测试结果做全面的检查。

       8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

三、软件测试的流程

       立项阶段-需求阶段----设计阶段----编码和单元测试阶段----集成测试阶段----系统测试阶段-----验收测试阶段-----结项总结阶段


补充:

        根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试
体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。

        单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
        系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。
        黑盒测试不考虑程序内部结构和逻辑结构,主要是用来测试系统的功能是否满足需求规格说明书。一般会有一个输入值,一个输入值,和期望值做比较。
        白盒测试主要应用在单元测试阶段,主要是对代码级的测试,针对程序内部逻辑结构,测试手段有:语句覆盖、判定覆盖、条件覆盖、路径覆盖、条件组合覆盖
        集成测试主要用来测试模块与模块之间的接口,同时还要测试一些主要业务功能。
        系统测试是在经过以上各阶段测试确认之后,把系统完整地模拟客户环境来进行的测试。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_33718563/article/details/73826381

补充:

软件测试基于不同的立场,存在着两种完全不同的目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑用户是否可以接受该产品。而从软件开发者角度出发,则希望测试成为表明软件产品不存在错误的过程,验证该软件已正确地实现了用户需求,确立人们对软件质量的信心。因此他们会选择那些导致程序失效概率小的测试用例,回避那些易于暴露程序错误的测试用例。同时,也不会着意去测试,排除程序中可能包含的付作用。显然,这样的测试对完善和提高软件的质量毫无价值。因为在程序中往往存在着许多预料不到的问题,可能被疏漏,许多隐藏的错误只有在特定的环境下才可能暴露出来。如果不把着眼点放在尽可能查找错误这样的基础上,这些隐藏的错误或缺陷就测试不出来,就会遗留到运行阶段中去。如果站在用户的角度上,替他们设想,就应该把测试活动的目标对准揭露程序中的错误,在选取测试用例时,会从各种角度考虑那些易于发现程序错误的一些测试数据与用例。

有鉴于此,Grenford J.Myers就软件测试目的提出以下观点:

(1)   测试是程序的执行过程,目的在于发现错误;

(2)   一个好的测试用例在于能发现至今未发现的错误;

(3)   一个成功的测试是发现了至今未发现的错误的测试;

测试的目的是想以最少的时间和人力找出软件中潜在的各种错误和缺陷。如果成功地实施了测试,就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符。此外,实施测试收集到的测试结果数据为可靠性分析提供了依据。

根据这样的测试目的,软件测试的原则应该是:

1)应该尽早地和不断地进行软件测试。由于原始问题的复杂性,软件的复杂性和抽象性,软件开发各个阶段的多样性,以及参加开发各种层次人员之间的配合关系等因素,使得开发的每个环节都可能产生错误。所以不能把软件测试看成是软件开发的独立阶段,而应该把它贯穿到软件开发的各个阶段中。坚持软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把软件错误尽量在早期发现,杜绝某些隐患、提高软件质量。

2)测试用例应该由测试输入预置条件和与之对应的预期输出结果这两部分组成。测试之前应该根据测试要求正确选取需要执行的测试用例。

3)程序员应该避免检查/测试自己的程序。测试工作需要严格的作风,客观的态度和冷静的情绪。人们常常由于各种原因具有一种不愿否定自己工作的心态,认为揭露自己程序中的问题总不是一件愉快的事。这一心态就成为测试自己程序的障碍。另外,程序员对软件规格说明理解错误而引入的错误则更难发现。如果由别人来测试程序员编写的程序,可能会更客观、更有效、并且等容易取得成功。要注意的是,这点不能和程序调试相混淆。调试由程序员自己来做可能更有效。

4)在设计测试用例时,应该包括合理的输入条件和不合理的输入条件。合理的输入条件是指能够验证程序正确的输入条件,而不合理的输入条件是指异常的临界的,可能引起问题异变的输入条件。在测试程序时,人们往往更多的考虑合法的和期望的输入条件,而忽略了不合法和意想不到的输入条件。事实上,软件在投入运行之后,用户的使用往往不遵循事先的约定,使用了一些意外的输入。如果开发的软件遇到这种情况时不能做出适当的反应,给出相应的信息,那么就容易产生故障,轻则产生错误的结论,重则导致软件失效。因此软件系统处理非法命令的能力在测试时也必须考虑。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能够发现更多的错误。

5)充分注意程序测试中的群集现象。测试中不要以为找到程序中的几个错误,问题就已经解决,不需要继续测试了。经验表明,测试后程序中残存的错误数目与该程序中中已发现的错误数目或检错率成正比。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。在测试软件程序时,若发现的错误越多,则残存在程序中的错误数目可能就越多,这种错误群集性现象,已为许多程序的测试实践所证明。例如美国IBM公司的OS/370操作系统中,47%的问题仅与该系统4%的程序模块有关。这种现象对测试很有用。如果发现某一程序模块比其它的程序模块有更多的程序错误趋向时,则应该化更多的时间和代价测试这个程序模块。

6)严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选取,测试的控制方式和过程。系统的组装方式,跟踪规程,以及回归测试的规定等和测试结束准则。

7)应对每一个测试结果做全面检查。这是一条最明显的原则,但常常被忽视。有些错误的征兆在输出实测结果时已经明显地出现了,但如果不仔细地全面检查测试结果,就会使这些错误被遗漏掉。所以在设计测试用例时必须对预期的输出结果明确定义,对实测结果仔细分析检查,抓住征候,充分暴露问题。

8)妥善保存测试计划,测试用例,出错统计和最终分析结果,为维护提供方便。

9)所有的测试应该追溯到用户需求。正如我们所知,软件的测试目标在于揭示错误。而最严重的错误(从用户角度上看)是那些程序不能满足用户需求的错误。

10)测试应该从“小规模”开始,逐步转向“大规模”即渐增式build测试。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件测试的目的、原则及流程 的相关文章

  • 范数和正则化

    概念 范数是具有 长度 概念的函数 在向量空间内 为所有的向量的赋予非零的增长度或者大小 不同的范数 所求的向量的长度或者大小是不同的 举个例子 2维空间中 向量 3 4 的长度是5 那么5就是这个向量的一个范数的值 更确切的说 是欧式范数
  • 什么是正则表达式?

    什么是正则表达式 1 什么是正则表达式 2 基本匹配 3 元字符 1 什么是正则表达式 正则表达式是 组由字 和符号组成的特殊 本 它可以 来从 本中找出满 你想要的格式的句 个正则表达式是 种从左到右匹配主体字符串的模式 Regular
  • Python基础第二话:列表+元组+字典+集合,学基础还得是这....

    Python基础知识第二话 Python基础知识第一话 这一章的知识紧接上一章 零基础的小伙伴可以从上 一章学起来 当然 你也可以收藏起来慢慢学习 学习是不可操之过急的啦 列表 Python学习交流Q群 906715085 print 创建
  • 一文搞懂状态模式

    原理 状态机有三个组成部分 状态 事件 动作 遇到不同的事件会触发状态的转移和动作的执行 不过动作不是必须的 可能只有状态的转移 没有动作的执行 状态模式的目的就是实现状态机 案例带入 比如 超级马里奥 在游戏中 马里奥可以变身为多种形态
  • layout_weight属性的用法和意义

    一直没理解在LinearLayout中的layout weight属性的意义 使用的时候都是将子控件的layout width或者layout height设置为0 然后在设置layout weight的权重值 以至于在被问到如果设置了la
  • 如何用python远程探查每天的网页访问记录

    前言 利用Python制作远程查看别人电脑的操作记录 与其它教程类似 都是通过邮件返回 利用程序得到目标电脑浏览器当中的访问记录 生产一个文本并发送到你自己的邮箱 当然这个整个过程除了你把python程序植 入目标电脑外 其它的操作都是自动
  • Vue2.7.14、vuecli@5.0.8 升级 vite@4.4.8

    项目背景 Vue2 7 14 vuecli 5 0 8 element ui 2 15 13 node14 18 3 本项目内部项目 不涉及CDN加速 vite安装 pnpm add vite 4 4 8 D 入口文件index html
  • 比较对象相等性的四种方法

    比较对象相等性的四种方法 System Object定义了3个不同的方法 来比较对象的相等性 ReferenceEquals 和两个版本的Equals 再加上比较运算符 实际上是有四种比较相等的方式 在编程中实际上我们只需要这两种比较 c
  • java使用URLconnection下载文件 getContentLength()为-1 的解决办法

    一 起因 APP想要从远程服务器下载一个文件 不想使用网络请求框架 想了解一下原生的实现 于是简单了解了一下URLconnection类的使用 加上参考了网络上的实现 简单实现了文件下载操作 代码如下 long downloadLength
  • 汇编语言基础知识

    文章目录 80386常用寄存器 一 常用寄存器 1 1 通用寄存器 1 2 段寄存器 1 3 程序状态与控制寄存器 二 常用基本指令 2 1 数据传送指令 2 2 算术运算指令 2 2 1 加法指令 2 2 2 减法指令 2 2 3 乘法指
  • Python人员信息管理系统(简直期末人福音)

    1 涉及模块 datetime os random sys PyQt5 2 运行效果 支持功能 添加信息 修改信息 删除信息 查询信息 文件存储数据 每次运行都会加载显示之前的信息 3 部分源码 创建字体对象 用来对要显示的文字进行设定fo
  • Linux网络编程基础

    Linux网络编程基础 1 协议的概念 什么是协议 典型协议 网络程序设计模式 分层模型 TCP IP四层模型 实际开发中常用模型 通信过程 协议的概念 从应用的角度出发 协议可理解为 规则 是数据传输和数据的解释的规则 假设 A B双方欲
  • 2020-08-27

    java 1 编译java程序的命令是javac 该命令的文件是javac exe 2 jsp表达式的写法 3 3 Math round 11 5 为 11 四舍五入是向数值大的方向入 4 float与int做除法运算时 会将int转化为f
  • c++中如何只保留float型的小数点后两位

    float spd 22 518744 char buf 10 sprintf buf 2f spd sscanf buf f spd 记录一下 有时候我们需要float类型只保留两个有效小数 但是在实际应用中会发现一些现象 如 1 5 在
  • 程序的基本结构

    程序的基本结构 1 顺序结构 2 选择结构 选择结构如下图所示 当条件成立时 执行模块A否则执行模块B 3 循环结构 循环结构又两种形式当型循环和直道型循环 当型循环 先判断条件 条件成立就反复执行程序模块 当条件不成立时结束循环 当型循环
  • MOS管使用的条件

  • 在HTML中怎么去掉超链接(标签 a)的下划线?

    转自 http zhidao baidu com question 253614370 html qbl relate question 0 word a 20 C8 A5 CF C2 BB AE CF DF a href 超链接 a
  • [数据库] MySQL基础知识之日期判断及添加排序序号

    这篇文章主要记录MySQL中遇到的几个基础问题 希望文章对你有所帮助 包括 1 日期类型的判断 2 decode函数的替代方法 3 查询语句中添加一个排序的序号 4 子函数查询select a 1 日期类型判断 日期类型主要是 DATE 显
  • TCP 拥塞控制算法

    转自 https mp weixin qq com s NIFandX8w Cynnbl f2Lwg 拥塞 路由器因无法处理高速到达的流量而被迫丢弃数据信息的现象称为拥塞 为什么有了流量控制 还需要拥塞控制 流控只简单地表明了接收方的处理能
  • Byte位元组单位-KB KiB MB MiB GB GiB区别

    一般而言大部份都只知道KB MB GB TB 等 倒是沒聽過KiB MiB 等 現在搞懂 原來分為以1000位元組或用1024位元組來計算之 這就是為什麼我們平時買硬碟或隨身碟的容量與實際真實的容量不同 像是我了8GB的隨身碟 實際為8 3

随机推荐

  • Unix时间戳和北京时间的相互转换(C语言实现 )

    一 问题背景 最近物联网项目中需要上传包含时间戳的设备数据到服务器平台 原本想把 年 月 日 时 分 秒 分别用一个 uint8 t 的数据类型去存储 即占用6个字节 但是在平台配置协议时 只有一种叫 Unix时间戳 的数据类型 Unix时
  • Restful API思路

    1 通过服务器重写规则 将所有请求走一个入口方法 例如index php的run 方法 2 通过 SERVER 找到请求方法 请求路径 请求参数 进行初始化参数 3 根据请求路径 走不同model处理 根据请求方法不同 走不同的处理方法 4
  • SystemVerilog 验证-测试平台编写指南学习笔记(3):连接设计和测试平台

    文章目录 1 为什么需要更高层次的方法连接 Testbench 与 DUT 2 SystemVerilog 接口 2 1 什么是接口 2 2 接口怎么连接 2 3 接口的优缺点 3 SystemVerilog 控制通信中时序问题地结构 3
  • 教你快速搭建个人网站

    一 搭建环境 云主机 华为云 操作系统 centos 7 x 源码 GitHub wyt1215819315 autoplan 这是一个自动化的托管系统 目前支持网易云 bilibili 米游社原神签到 测试地址https auto old
  • vue项目在ie11 浏览器运行出现错误解决方法

    一 基础配置 vue cli 版本 5 0 1 配置 browserslistrc 文件 gt 1 last 2 versions not dead ie gt 10 2 配置vue config js 配置 transpileDepend
  • C++堆栈详解

    前言 我们经常听见一个概念 堆 heap 和栈 stack 其实在数据结构中也有同样的这两个概念 但是这和内存的堆栈是不一样的东西哦 本文也会说明他们之间的区别的 另外 本文的只是是以C C 为背景来说明 不同的语言在内存管理上面会有区别
  • java实现只能有一个相同用户登录的功能

    需求 使用相同用户名登录系统 确保同名用户登录顶掉之前用户登录或者返回登录的功能 实现效果图 java实现 首先 1 web xml中配置监听器
  • CMD 查杀端口详细

    1 netstat aon findstr pid 2 taskkill pid id f 杀死端口 注 pid 后面的pid 事 查询的进程id
  • 多元回归预测

    文章目录 效果一览 文章概述 部分源码 参考资料 效果一览 文章概述 多元回归预测 Matlab贝叶斯算法 bayes 优化随机森林的数据回归预测 bayes RF回归预测 多变量输入模型 评价指标包括 MAE RMSE和R2等 代码质量极
  • 工程(二)——DeeplabV3+语义分割训练自制数据集

    目录 1 配置环境 1 1 利用conda新建一个环境并激活 1 2 安装pytorch 1 3 更新bashrc环境 2 安装DeeplabV3 2 1 克隆代码 2 2 下载数据集和预训练模型 3 测试算法 4 制作VOC数据集 4 1
  • windows查看进程,以及是哪个功能启用当前的服务的

    windows查看进程 理论 实战 理论 查看进程启动的详细信息 1 tasklist v 2 wmic process get caption commandline value 可以获取进程启动的命令行参数信息等 获取具体某个信息 1
  • 将经纬度坐标在ArcGIS软件中生成系列矢量数据

    目录 环境介绍 操作内容 操作步骤 1 将经纬度坐标值编辑在excel中 注意x y对应的分别是经度和纬度 2 打开ArcMap软件 加载 xls数据 3 需要选择地理坐标系 4 点矢量数据生成 5 线矢量数据生成 6 面矢量数据生成 环境
  • 【HBZ分享】Mysql的binlog格式分类(STATEMENT, ROW, MIXED)

    STATEMENT格式 全名Statement Based Replication SBR 会记录每一条SQL语句 即SQL怎么写的 他就会怎么记录 无论更改多少行 该格式都不在乎 他只会记录SQL 优点 由于只记录sql 不会记录每一行变
  • 【转】Lwip 断连,连接几次后不通及偶尔不通的问题.

    https blog csdn net hecong kit article details 24415693 新加这个函数 并在tcp in函数里调用一下 出现不通的原因是在网络状态不流畅的情况下 连续连接N次后 LWIP默认不在连接 新
  • 保持ssh会话不掉线

    客户端 sudo vim etc ssh config 之类的文件名 添加 ServerAliveInterval 20 ServerAliveCountMax 9999 服务器端 sudo vim etc ssh sshd config
  • 解决问题:jinja2.exceptions.UndefinedError: ‘form‘ is undefined

    在flask开发的过程中 我遇到了题目上的报错 现放出自己的代码 login py login html 在运行过程中 网址显示 由此可见 login html中存在问题 在终端的报错中可以看到 最后一项报错为 为解决该问题 我在网上搜集了
  • ant-design table 表格头增加tooltip注释

    ant design table 表格头增加tooltip注释 注意屏蔽掉columns中的title属性才会有效果
  • 【一台服务器】【Web服务器】【DNS服务器配置】测试访问

    本次实验仅使用了一台服务器系统虚拟机 后续会在两台服务器系统虚拟机中进行 1 Windows Sever 2008 基本网络参数设置 如果不能解析域名 则需设置红框里面的DNS服务器地址 2 Web服务器网站设置 3 DNS服务器设置 3
  • 单元测试、集成测试、系统测试和验收测试、冒烟测试、回归测试、随机测试、探索性测试和安全测试

    单元测试 集成测试 系统测试和验收测试 冒烟测试 回归测试 随机测试 探索性测试和安全测试 前言 项目前期 中期至发布后测试启动前后我们一般要经历的几种测试方法 1 gt 单元测试 是指对软件中最小可测试单元进行检查和验证 单元测试当一段代
  • 软件测试的目的、原则及流程

    一 软件测试的目的 1 软件测试是为了发现错误而执行程序的过程 2 测试是为了证明程序有错 而不是证明程序无错 发现错误不是唯一目的 3 一个好的测试用例在于它发现至今未发现的错误 4 一个成功的测试是发现了至今未发现的错误的测试 注意 1