软件测试必须知道的方法和知识

news2024/12/23 7:18:56

“软件测试技术是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。检查软件产品的bug。写成测试报告,交于开发人员修改。软件测试人员的基本目标是发现软件中的错误。”

图片

01 软件测试步骤

第一步为测试计划。编写测试计划通俗一点讲就是什么人在什么时间做什么事,最后产出什么东西。测试人员要测试哪些模块、在什么期限内,提交哪些文档。

第二步为测试设计与开发。主要是编写测试用例,测试用例就是指导测试的文档,比如我们要测试商城登录、买东西等功能,通过测试方法和策略设计测试用例。评审就是评价审查,不能想当然该怎么测。不能只是输入正确的用户名和密码,能登录进去就完事了。作为软测工程师需要有破坏性,比如密码输错时怎么办,会不会有相应的报错等等。

第三步为执行测试。bug就是缺陷,发现bug之后,要提交给开发人员让他们去修改,然后进行回归测试,验证开发人员有没有改好。

02 软件测试模型-V模型

图片

V模型的阶段包括:需求说明、系统功能设计、概要设计、详细设计、编码、单元测试、集成测试、系统测试、验收测试。

V模型左边表示开发过程中的各阶段,右边表示测试过程中的各阶段

V模型中每个开发阶段对应一个测试阶段

图片

V模型水平虚线上部表明,其需求分析、功能设计和验收测试等主要工作是面向用户,要和用户进行充分的沟通和交流或者是和用户一起完成

V模型水平虚线下部的大部分工作,相对来说,都是技术工作,在开发组织内部进行,由工程师完成

V模型优点

  • 将负责的测试工作按阶段划分为各个小阶段来实现
  • 从多角度测试系统找出更多的缺陷

V模型缺点

  • 软件测试容易误导为软件开发的最后一个阶段
  • 需求、设计阶段产生的问题不能很早发现
  • 质量控制和测试效率无高效发挥

03 软件测试类型

软件测试可以从不同维度进行分类,可以从按照开发阶段划分、按照测试实施组织划分、按照测试技术划分、按照测试执行方式划分、按照测试对象类型划分。

图片

单元测试又称模块测试,是针对软件设计的最小单元(程序模块)进行正确性验证的工作。

单元测试可以作为无错误编码的一种辅助手段,也可以作为规格说明书来工作

单元测试原则

  • 应该尽早地进行软件单元测试
  • 应该保证单元测试的可重复性
  • 尽可能采用测试自动化手段来支持单元测试活动

单元测试包括单元功能测试、单元接口测试、单元局部数据结构测试、单元中重要的执行路径测试、单元的各类错误处理路径测试、单元边界条件测试

集成测试又称组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照设计要求组成子系统或系统进行的测试活动。

集成测试的目的是要找出在模块接口上面,包括整体系统结构上的问题。

集成策略包括增值策略和非增值策略,其优缺点如下

在这里插入图片描述
集成测试包括模块间接口测试、模块间数据传递、全局数据结构测试。

系统测试是对已经集成好的软件系统进行测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。
系统测试的目的是在真实系统工作环境下通过与系统的需求定义作比较,检验完整的软件配置项能否和系统正确连接,发现软件与系统设计文档或软件开发合同规定不符合或与之矛盾的地方。并且还要检验系统的文档是否完成、有效。

系统测试一般使用黑盒测试,并由独立的测试人员完成。

系统测试包括从用户角度对系统做功能性的验证和非功能性的验证。

验收测试是在软件产品完成了功能测试和系统测试之后、产品发布前进行的软件测试活动,是技术测试的最后一个阶段,也被称为交付测试、发布测试或确认测试。

验收测试是按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收系统。

验收测试包括易用性测试、兼容性测试、安装测试、文档(如用户手册、操作手册)等内容。

验收测试完成标准

  • 完全执行了验收测试计划中的每个测试用例
  • 在验收测试中发现的错误已经得到修改并且通过了测试
  • 完成软件验收测试报告

验收测试注意事项

  • 必须编写正式的、单独的验收测试计划
  • 验收测试必须在实际用户运行环境中运行
  • 由用户和测试部门共同执行比较好

验收测试包括对整个系统的测试与评审、根据验收通过准则分析测试结果、决定是否接收系统及测试评价。

图片

开发方测试也叫验证测试或者Alpha测试即α测试。开发方通过检测和提供客户证据,证实软件的实现是否满足规定的需要。

开发方测试特点

  • 由公司内部的用户进行的受控测试
  • 证实软件满足规定的需求
  • 注重产品的界面和特色

用户测试也叫Beta测试(即β测试),该测试是在用户的应用环境下,用户通过运行和使用软件,检测与核实该软件实现是否符合自己预期的要求。

用户测试特点

  • 由最终用户在客户场所进行验证
  • 不受开发者控制
  • 注重产品的支持性

第三方测试也称为独立测试,是介于软件开发方和用户之间的测试组织的测试,其目的是为了保证测试工作的客观性,并且尽量多地发现程序中的错误。

第三方测试特点

  • 介于开发方和用户方间的组织的测试
  • 保证测试工作的客观性
  • 评审需求、设计、用户类文档
  • 单元测试、功能测试、性能测试等

图片

黑盒测试也称为功能测试,在测试中把程序看成一个不能打开的黑盒子,在接口处进行测试而不是考虑程序内部结构。

黑盒测试优点

  • 简单,不需要了解程序内部代码及实现
  • 与软件的内部实现无关
  • 从用户角度出发
  • 基于软件开发文档测试,能了解软件实现了文档的哪些功能
  • 做自动化测试方便

黑盒测试缺点

  • 代码覆盖率较低,只有总代码量的30%
  • 自动化测试的复用性较低

黑盒测试主要用于发现以下几类错误

  • 功能不正确或遗漏
  • 界面措施
  • 输入和输出错误
  • 数据库访问错误
  • 性能错误
  • 初始化和终止错误

黑盒测试包括对界面测试、对功能测试、从用户的角度出发。

白盒测试又称为结构测试,把程序看成是装在一个透明的盒子里,能清楚了解程序结构和处理过程。

白盒测试优点

  • 可以检查内存的泄露
  • 检查异常处理分支语句是否正确
  • 执行了多少逻辑,可以作为衡量测试是否完整的一个指标

白盒测试原则

  • 保证一个模块中的所有独立路径至少被测一次

  • 所有逻辑覆盖均需测试真和假两种情况

  • 检查程序的内部数据结构,保证其结构的有效性

  • 在上下边界及可操作范围内运行所有循环

白盒测试包括检查所有的结构及路径是否正确、检查软件内部动作是否按照规定进行。

灰盒测试是一种综合测试法,它将“黑盒”测试与“白盒”测试结合在一起,是基于程序运行时的外部表现又结合内部逻辑结构来设计用例,执行程序并采集路径执行信息和外部用户接口结果的测试技术。

灰盒测试优点

  • 能够进行基于需求的覆盖测试和基于程序路径覆盖的测试
  • 测试结果可以对应到程序内部路径,便于Bug的定位、分析和解决
  • 能够保证设计的黑盒测试用例的完整性,防止遗漏软件的一些不常用的功能或功能组合
  • 能够减轻需求或设计不详细或不完整对测试造成的影响

灰盒测试缺点

  • 投入的时间黑盒测试大概多20%-40%的时间
  • 对测试人员的要求比黑盒测试高
  • 不如白盒测试深入
  • 不适用于简单系统(只有一个模块的系统)

灰盒测试关注输出对于输入的正确性、关注内部表现、介于白盒和黑盒测试之间。

图片

静态测试是指不运行程序,通过人工对程序和文档进行分析与检查。它实际上是对软件中的需求说明书、设计说明书、程序源代码、用户手册等进行非运行的检查。

静态测试方式包括人工进行和借助软件工具自动进行。

静态测试包括代码检查、静态结构分析、代码质量度量。

动态测试通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率结果与预期的差异,分析运行效率和健壮性等性能。

动态测试包括编写测试用例、执行程序、分析程序输出结果。

静态测试和动态测试的区别

  • 静态测试是用于预防的,动态测试是用于校正
  • 多次的静态测试比动态测试效率要高
  • 静态测试综合测试程序代码
  • 在相当短的时间里,静态测试的覆盖率能达到100%,而动态测试是50%左右
  • 动态测试比静态测试更花时间
  • 静态测试比动态测试更能发现Bug
  • 静态测试的执行可以在程序编码编译前,动态测试只能在编译后才能执行

04 软件测试技术

软件测试技术包括黑盒测试法、白盒测试法。

图片

黑盒测试用例的设计方法包括测试区域确定法、组合覆盖法、逻辑推断法、业务路径覆盖法等。

图片

等价类划分法:该方法把所有可能的输入数据即程序的输入域划分为若干部分(子集),然后从每个子集中选取少数具有代表性的数据作为测试用例。如学生成绩是0-100分,那么0≤X≤100就是有效等价类,X>100和X<0就是两个无效等价类。

边界值分析法:它是对输入或输出的边界值进行测试的一种黑盒测试方法,如重量在10-50kg范围内的包裹,其邮费计算公式为…,作为测试用例,我们应该取10及50,以及10.01、49.99、9.99、50.01等。

组合覆盖市覆盖率很高的一种方法。

因果图法:它适用于描述对于多种输入条件组合的测试方法。

判定表法:是最为严格、最具有逻辑性的测试方法。它能够将复杂问题一一列举出来,简明且避免遗漏,同时能够处理针对不同条件的组合值,进行不同的操作。

大纲法:是着眼于需求的测试方法。

场景分析法:包括四种类型:正常的用例场景、备选的用例场景、异常的用例场景、假定推测的场景。

功能图法:是黑盒白盒混合用例设计方法,包括状态迁移图和逻辑功能模型

图片

白盒测试法包括静态白盒测试、动态白盒测试,静态白盒测试包括代码检查法、静态结构分析法、静态质量度量法,动态白盒测试包括覆盖测试、控制结构测试、其他白盒测试方法等。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

C++ 实现前缀树

一 、前缀树是什么 前缀树是一种查找结构,常用于指定字符串或是数组、线性表等连续信息的存储和查找。他的作用类似于哈希表,但是它相对于哈希表来说,限制更多,通用性较差,但是它的功能更加强大,可定制性也…

c#入门-字段类型访问权限低于字段本身

字段类型访问权限低于字段本身 现在假设你有一个小兵类,他的访问权限是仅限当前程序集。 internal class 小兵 {public int hp 12;public int atk 10;public int def 5; }然后声明一个兵营,用来创造小兵 public class 兵营 {public 小兵 模板;publ…

深度学习课件-实验1_PyTorch基本操作实验

文章目录一、Pytorch基本操作考察1.11.21.3二、动手实现 logistic 回归2.12.2三、动手实现softmax回归3.13.2一、Pytorch基本操作考察 使用 𝐓𝐞𝐧𝐬𝐨𝐫 初始化一个 𝟏𝟑 的矩阵 &a…

第五、六章

第五章程序控制结构 5.1switch分支结构 每一个分支结构最后要记得加break;表示退出。 import java.util.Scanner; public class Switch01 { //编写一个 main 方法 public static void main(String[] args) { /* 请编写一个程序,该程序可以接收一个字符&#xff0…

我逛遍各大论坛,分享这份大厂招聘总结:涵盖Java岗位95%+真题

我们程序员这一群体,大家都知道最好的涨薪方法是通过跳槽,在你把一个公司的精华都吸收完之后,有追求的肯定会跳去更好的公司发展自己,特别在金三银四,金九银十这样的招聘旺季里 ,会有很多需要准备的面试会有…

Snort入侵检测系统使用示例

1998年,Martin Roesch用C语言开发了开源的入侵检测系统Snort。现如今Snort已发展成为一个具有多平台、实时流量分析、网络IP数据包记录等特性的强大的网络入侵检测/防御系统,是世界最顶尖的开源入侵检测系统。Snort IDS利用一系列的规则去定义恶意网络活…

Qt-数据库开发-QDataWidgetMapper(5)

Qt-数据库开发-使用QDataWidgetMapper将数据库数据映射到小部件 文章目录Qt-数据库开发-使用QDataWidgetMapper将数据库数据映射到小部件1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容👉个人内容分类汇总 👈👉数据库开发 &#x1…

MYSQL数据库-复合查询

MYSQL数据库-复合查询零、前言一、基本查询二、多表查询三、自连接四、子查询1、单行子查询2、多行子查询3、多列子查询3、在from子句中使用子查询五、合并查询1、union2、union all零、前言 本章主要讲解学习MYSQL数据库中的复合查询,前面我们讲解的mysql表的查询都…

嵌入式分享合集119

一、传感器的数据处理算法 在传感器使用中,我们常常需要对传感器数据进行各种整理,让应用获得更好的效果,以下介绍几种常用的简单处理方法: 加权平滑:平滑和均衡传感器数据,减小偶然数据突变的影响。 抽取…

502问题怎么排查?

刚工作那会,有一次,上游调用我服务的老哥说,你的服务报"502错误了,快去看看是为什么吧"。 当时那个服务里正好有个调用日志,平时会记录各种200,4xx状态码的信息。于是我跑到服务日志里去搜索了一下502这个数…

【负荷预测】基于贝叶斯网络的考虑不确定性的短期电能负荷预测(Python代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

408 考研《操作系统》第二章第四节:进程同步和进程互斥

文章目录教程1. 进程同步2. 进程互斥3. 总结4. 进程互斥的软件实现方法4.1 单标志法4.2 双标志先检查法4.3 双标志后检查法4.4 Peterson算法4.5 总结5. 进程互斥的硬件实现方法5.1 中断屏蔽方法5.2 TestAndSet指令5.3 Swap指令5.4 总结教程 进程同步和进程互斥 https://www.bi…

【OpenCV学习】第11课:图像金字塔 - 上采样与降采样(高斯金字塔,放大与缩小图像)

仅自学做笔记用,后续有错误会更改 理论 参考文章链接:https://blog.csdn.net/qq_54185421/article/details/124350723 图像金字塔的概念: 从上往下(采样点越来越多):上采样 从下往上(采样点越来越少)&a…

代码随想录刷题|LeetCode 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形

目录 503.下一个更大元素II 思路 下一个更大元素|| 42. 接雨水 思路 双指针法 动态规划 单调栈 接雨水 双指针法 动态规划 单调栈 84.柱状图中最大的矩形 思路 柱状图最大的矩形 动态规划 单调栈 503.下一个更大元素II 题目链接:力扣 思路 与 739. 每日温度 基本相…

STM32 | hex文件、bin文件、axf文件的区别?

已剪辑自: https://mp.weixin.qq.com/s/1EQRooYYpDeKvHpqguik6w 在STM32开发中,经常会碰到hex文件、bin文件与axf文件,这些都是可以烧写到板子里运行的文件。这三个文件有什么区别呢?在这之前,先来一起回顾一下C语言编译的过程&a…

详解c++---模板(初阶)

这里写目录标题为什么会有模板函数模板如何解决类型不同而导致模板无法实例化的问题类的模板为什么会有模板 c语言在面对同一个功能不同的类型的数据时得创建出来多个不同名的函数来依次达到目的&#xff0c;比如说我们下面的代码&#xff1a; #include<stdio.h> int a…

计算机毕业设计ssm+vue基本微信小程序的手机预约维修系统

项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势&#xff1a;对于电脑维修预约当然也不能排除在外,随着网络技术的不断成熟,带动了电脑维修预约,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活…

通俗理解数据治理之主数据

1. 定义 1&#xff09;国家标准GB/T 36073-2018 《数据管理能力成熟度评估模型》中对主数据的定义&#xff1a;主数据是组织中需 要跨系统、跨部门进行共享的核心业务实体数据。 2&#xff09;IBM 公司在其有关主 数据管理的红皮书《Master Data Manangement:Rapid Deploymen…

软件测试web自动化测试

今天目标 1、自动化相关概念 2、自动化相关环境搭建 3、元素定位 课程大纲 1.核心重点&#xff08;第二章&#xff09; 2,提高代码质量&#xff0c;自动化水平(第三、四、五、六章) 3.项目实战&#xff08;第七章&#xff09; 4.理论及环境与定位&#xff08;第一章&am…

Linux服务器读写python环境变量

在公司项目开发过程中&#xff0c;代码都是放在服务器中进行运行的&#xff0c;使用本地的idea工具连接到服务器。 如python开发中&#xff0c;将使用pycharm工具连接服务器&#xff0c;如下图所示&#xff1a; 在项目中有线上正式环境、测试环境等&#xff0c;都是用不同环境变…