测试分类:详解各类测试方式与方法

前言:

为什么要将测试进行分类呢?

软件测试是软件生命周期中的⼀个重要环节,具有较高的复杂性,对于软件测试,可以从不同的角度加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试工作进行更好的执行和管理测试的分类方法。

按照测试目标进行分类

界面测试

肉眼所能看见的任何元素都要进行测试。

  • 验证界⾯内容显示的完整性,⼀致性,准确性,友好性。⽐如界⾯内容对屏幕大小的自适应,换 行,内容是否全部清晰展示;
  • 验证整个界⾯布局和排版是否合理,不同板块字体的设计,图⽚的展示是否符合需求;
  • 对界⾯不同控件的测试,比如,对话框,⽂本框,滚动条,选项按钮等是否可以正常使用,有效 和无效的状态是否设计合理;
  • 界面的布局和⾊调符合当下时事的发展。

功能测试

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要 求的功能。

如何进行功能测试? 设计功能测试用例,参考产品规格说明书进行用例的编写,具体的测试用例需要使用黑盒设计测试用例的方法,如等价类、边界值、判定表法、正交法、场景法、错误猜测法等。

性能测试

我们在使用软件的时候有时会碰到软件网页打开时越来越慢,查询数据时很长时间才显示列表,软件运行越来越慢等问题,这些问题都是系统的性能问题引起的。

要进行软件产品的性能问题,要对产品的性能需求进行分析,然后基于系统的性能需求和系统架构, 完成性能测试的设计和执行,最后要进行持续的性能调优。

可靠性测试

可靠性(Availability)即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件 服务的时间占总时间的百分比表示。 可靠性=正常运行时间/(正常运行时间+非正常运行时间)*100%

系统⾮正常运⾏的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的,这些因素能让系统停止⼯作,或者连接中断不能被访问,或者性能急剧降低导致不能使⽤软件现有的服务 等。

可用性指标⼀般要求达到4个或5个“9”,即99.99%或者99.999%,如果可用性达到99.99%,对于⼀个全年不间断(7*24的⽅式)运行的系统,意味着全年 (252600min)不能正常⼯作的时间只有52min,不到⼀个小时。如果可用性达到99.999%,意味着全年不能正常⼯作的时间只有5min。不同的应⽤系统,可用性的要求是不⼀样的,非实时性的信息系统或⼀般网站要求都很低,99%和 99.5%就可以了,但是军事系统,要求则很高;

安全性测试

安全性是指信息安全,是指计算机系统或网络保护用户数据隐私,完整,保护数据正常传输和抵御 黑客,病毒攻击的能力。

  • 安全性测试属于非功能性测试很重要的⼀个方面,系统常见的安全漏洞和威胁如下
  • 输⼊域,如输⼊恶性或者带有病毒的脚本或长字符串;
  • 代码中的安全性问题,如SQL/XML注⼊
  • 不安全的数据存储或者传递
  • 数据文件,邮件文件,系统配置文件等⾥⾯有危害系统的信息或者数据;
  • 有问题的访问控制,权限分配等
  • 假冒ID:⾝份欺骗
  • 篡改,对数据的恶意修改,破坏数据的完整性

安全性测试的方法有代码评审,渗透测试,安全运维等,常⽤的静态安全测试工具有,Coverity, IBM、Appscan、Source,HPFortify,常用的动态安全测试有OWASP的ZAP,HP、WebInspect等。其 中静态安全测试是常用的安全性测试的方法。

易用性测试

许多产品都应用人体工程学的研究成果,是产品在使用起来更加灵活和,舒适。软件产品也始终关注用户体验,让用户获得舒适,易⽤的体验,针对软件这方面的测试称之为易用性测试。

易⽤性在ISO25020标准中指容易发现,容易学习和容易使⽤。易⽤性包含七个要素:符合标准和规范,直观性,⼀致性,灵活性,舒适性,正确性和实⽤性。我们主要讨论以下几个方面

1.标准性和规范性

对于现有的软件运⾏平台,通常其UI标准已经不知不觉地被确⽴了,成为⼤家的共识。多数用户已 经习惯并且接受了这些标准和规范,或者说已经认同了这些信息所代表的的含义。⽐如安装软件的 界⾯的外观,在什么场合使⽤恰当的对话框等。

所以用户界⾯上的各中信息应该符合规范和习惯,否则用户使⽤起来会不舒适,并得不到⽤⼾的认 可。测试⼈员需要把与标准规范,习惯不⼀致的问题报告为缺陷

举个例子:八宝粥都是罐装的,你一下整个盒装的,用户已经潜移默化的适应了罐装的,这时候就容易出现用户反馈。

2.直观性 

用户界面的直观性,要求软件功能特性易懂,清晰。用户界⾯布局合理,对操作的响应在用户的预期 之中。比如数据统计结果⽤报表的形式(条形图,扇形图等)展⽰清晰直观;现在主流的很多搜索引 擎和日历的设计也有直观性的特点;

3.灵活性

软件可以有不同的选项以满⾜不同使⽤习惯的⽤⼾来完成相同的功能。但是灵活性的设计要把握好 度,不然可能由于太多的⽤⼾状态和⽅式的选择,增加了软件设计的复杂性,和程序实现的难度。

例如 ⼿机键盘有九宫格和全键盘,还⽀持⼿写,满⾜了不同⽤⼾的需求

4.舒适性

舒适性主要强调界⾯友好,美观,操作过程顺畅,⾊彩⽤运恰当,按钮的⽴体感等。例如左⼿⿏标的 设置给习惯⽤左⼿的⼈带来了便利,也为右⼿⼗分劳累时提供了另⼀种途径; 舒适性主要强调界⾯友好,美观,操作过程顺畅,⾊彩⽤运恰当,按钮的⽴体感等。例如左⼿⿏标的 设 置给习惯⽤左⼿的⼈带来了便利,也为右⼿⼗分劳累时提供了另⼀种途径;

按照执行方式进行分类

静态测试

静态测试 就是不运行程序,而是通过检查代码、设计文档或者其他软件结构来找出潜在的问题。就像你在做作业之前,先认真读一遍题目,确保每个细节都没错。这种方式的好处是你不用实际运行程序,就能找到一些明显的错误。

动态测试

动态测试 则是实际运行程序,输入数据,查看输出结果是否符合预期。这就像你完成了作业后,直接去考试,看看自己在实际情境下表现得如何。动态测试是大多数软件测试的主要方式。

按照测试方法进行测试

白盒测试

白盒测试也称为结构测试或逻辑测试,主要关注程序内部结构,通过分析程序的逻辑路径来设计测试用例。它的目的是确保软件的各个逻辑路径被覆盖,程序能够按照预期运行。

常见的白盒测试方法

  • 语句覆盖:确保程序中的每个语句至少被执行一次。

  • 判定覆盖:测试程序中的条件判断语句,确保每个条件都得到了测试。

  • 路径覆盖:确保程序的每条执行路径都被测试。

  • 条件组合覆盖

  • 条件覆盖

 

总结

  • ⽩盒测试主要应⽤于单元测试阶段
  • 先执⾏静态设计⽤例的⽅法,再执⾏动态设计测试⽤例的⽅法
  • 设计⽤例⼀般使⽤路径测试,重点模块追加使⽤逻辑覆盖⽅法

黑盒测试

黑盒测试与白盒测试不同,它不关注程序的内部实现,而是关注软件的功能是否满足需求。黑盒测试的重点是验证软件的输入和输出是否符合预期,确保软件能够按照需求正常工作。

常见的黑盒测试方法

  • 等价类划分:通过将输入数据分为多个等价类来减少测试数据的数量。

  • 边界值分析:特别关注输入数据的边界值,比如最大值、最小值、越界值等。

  • 因果图法:根据需求规格定义输入和输出之间的关系,设计测试用例。

举个例子:假设你有一个登陆表单,黑盒测试时,你会测试以下几种情况:

  • 输入正确的用户名和密码,检查是否能够成功登陆。

  • 输入错误的用户名或密码,检查是否会给出错误提示。

灰盒测试

灰盒测试是介于白盒测试和黑盒测试之间的一种方法。它通常用于集成测试阶段,不仅关注输出和输入的正确性,还会检查程序的内部情况。灰盒测试可以基于部分内部实现进行设计,但不需要完全了解程序的内部结构。

举个例子:你正在测试一个电商平台的购物车功能,灰盒测试人员知道购物车和支付模块如何交互,但不需要完全了解支付模块的内部实现。测试的重点是确保数据能够正确从购物车模块流向支付模块。

按照测试阶段进行分类

单元测试

与编码同步进⾏,针对软件最⼩组成单元进⾏测试,主要采⽤⽩盒测试⽅法,从被测对象的内部结构出发设计测试⽤例

所谓的最小单元就是人为规定的方法、接口、功能。

  • 测试阶段:编码后或者编码前(TDD)
  • 测试对象:最小模块
  • 测试⼈员:白盒测试⼯程师或开发⼯程师
  • 测试依据:代码和注释+详细设计⽂档
  • 测试⽅法:⽩盒测试
  • 测试内容:模块接⼝测试、局部数据结构测试、路径测试、错误处理测试、边界测

集成测试

集成测试也称联合测试(联调)、组装测试,将程序模块采⽤适当的集成策略组装起来,对系统的接⼝及集成后的功能进⾏正确性检测的测试⼯作。集成主要⽬的是检查软件单位之间的接是否正确。

  • 测试阶段:⼀般单元测试之后进⾏
  • 测试对象:模块间的接⼝
  • 测试⼈员:⽩盒测试⼯程师或开发⼯程师
  • 测试依据:单元测试的模块+概要设计⽂档
  • 测试⽅法:⿊盒测试与⽩盒测试相结合
  • 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模缺陷对系统的影响

系统测试

在软件开发生命周期中,系统测试是确保软件系统整体功能和性能达到预期要求的关键环节。它不仅验证了软件各个模块的正确性,还确保不同模块之间的协作无缝进行,从而提升了软件的可靠性和稳定性。

系统测试的目标

  • 全面检查功能:系统测试的首要目标是验证软件是否按照需求文档所描述的功能执行。

  • 验证集成模块的协同工作:系统测试会检查所有子系统或模块是否能够顺利协作,确保系统在集成后的运行效果。

  • 性能与安全性验证:除了基本功能外,系统测试还包括对性能的测试(如负载测试、压力测试)以及安全性的检测。

系统测试的分类

系统测试通常分为几类不同的测试方式:

  1. 冒烟测试(Smoke Testing)

    • 定义:冒烟测试又称为基本功能测试,通常在开发过程中或新版本发布时进行,目的是验证软件是否能够顺利启动并且执行最基本的操作。

    • 目的:通过冒烟测试,开发团队能够迅速发现显而易见的重大问题。

    • 实施方式:通常由开发人员进行,测试的重点是是否能顺利打开系统,执行一些基本的功能。

  2. 回归测试(Regression Testing)

    • 定义:回归测试用于确认新代码的变更没有破坏现有功能。

    • 目的:保证代码的修改没有引入新的问题,确保软件的稳定性。

    • 实施方式:每当系统更新时,回归测试会重新测试相关功能,确保系统在更新后依旧能够正常工作。

验收测试

针对⽤⼾需求,对通过系统测试的软件进⾏交付性测试,以确定系统是否满⾜验收标准,由⽤⼾或其他授权机构决定是否接受系统。验收测试是部署软件之前的最后⼀个测试操作。它是技术测试的最后⼀个阶段,也称为交付测试。验收测试的⽬的是确保软件准备就绪,按照项⽬合同、任务书、双⽅约定的验收依据⽂档,向软件购买都展⽰该软件系统满⾜原始需求。

  • 测试阶段:系统测试通过之后
  • 测试对象:整个系统(包括软硬件)。
  • 测试⼈员:主要是最终⽤⼾或者需求⽅。
  • 测试依据:⽤⼾需求、验收标准
  • 测试⽅法:⿊盒测试
  • 测试内容:同系统测试(功能...各类⽂档等)

单元测试,集成测试,系统测试,回归测试之间的关系

类比开上小汽车的过程

造⻋需要原材料,如⻋轮、发动机等零部件不是⻋企⾃⼰制造出来的,⽽是通过购买零部件来造⻋。对买来的零部件进⾏检查,零部件是否符合造⻋标准(单元测试)

零件确认完毕,接下来就是复杂的造⻋⼯艺,将零部件集成起来构成了⼀辆⻋,并初步检查拼⻋的⻋是否能正常运作(集成测试)

⼀辆⻋成型之后并不意味着就可以直接销售给客⼾了,需要⻋企专业的测试⼈员进⾏详细⽽完整的测试。(系统测试)

专业的测试⼈员对企业测试完毕,通过测试的汽⻋将会在⻋展或者4S店进⾏展⽰,供⽤⼾进⾏选择和购买。⽤⼾在选择汽⻋的过程中也会对⻋外观以及性能等⽅⾯进⾏校验(验收测试)

按照是否手工测试

手工测试

⼿⼯测试就是由⼈去⼀个⼀个的输⼊⽤例,然后观察结果,和机器测试相对应,属于⽐较原始但是必须的⼀个步骤。

自动化测试

就是在预设条件下运⾏系统或应⽤程序,评估运⾏结果,预先条件应包括正常条件和异常条件。简单说

⾃动化测试是把以⼈为驱动的测试⾏为转化为机器执⾏的⼀种过程。

⾃动化测试⽐如功能测试⾃动化、性能测试⾃动化、安全测试⾃动化。

⾃动化测试按照测试对象来分,还可以分为接

测试、UI测试等。接⼝测试的ROI(产出投⼊⽐)要⽐UI测试⾼。(这⾥了解⼀下,等到将⾃动化的时候再详细展开)

测试类型优点缺点
自动化测试- 节省成本 - 提高测试人员执行工作效率 - 保障软件的质量- 对测试人员技术要求较高 - 不能进行发散性测试
手工测试- 对测试人员技术要求较低 - 可以进行发散性测试- 效率低 - 人员和时间成本较高,相比自动化测试更为昂贵

按照实施组织划分

α测试

β测试

测试类型Alpha测试Beta测试
实施地点在公司内部进行在用户环境中进行
测试人员内部开发团队或QA团队真实用户或外部参与者
测试阶段软件开发的初期阶段接近产品发布时进行
测试目标检查核心功能和性能收集用户反馈,检查软件是否满足用户需求
测试规模小规模、内部测试大规模、面向真实用户
技术要求对测试人员的技术要求较高测试人员的技术要求较低,主要关注用户体验

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

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

相关文章

新手docker安装踩坑记录

最近在学习docker,安装和使用折腾了好久,在这里记录一下。下载# 依赖安装 sudo apt update sudo apt install -y \ca-certificates \curl \gnupg \lsb-release# 使用清华镜像源(Ubuntu 24.04 noble) echo \"deb [arch$(dpkg …

TOGAF指南1

1.TOGAF标准简介 TOGAF(The Open Group Architecture Framework)就像是一个企业架构的“操作手册”。它帮助企业设计、搭建和维护自己的“系统地图”,确保不同部门、技术、业务目标能像齿轮一样协调运转。 它的核心是: 用迭代的方…

[Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables

目录 一、防火墙基础:netfilter 与 iptables 的关系 1️⃣什么是 netfilter? 2️⃣什么是 iptables? 二、iptables 核心:五链四表与规则体系 1️⃣什么是 “链”(Chain)? 2️⃣ 什么是 “…

函数fdopendir的用法

以下是关于 fdopendir 函数的详细解析,结合其核心功能、参数说明及典型应用场景:🔍 ‌一、函数功能与原型‌‌核心作用‌将已打开的目录文件描述符(fd)转换为目录流指针(DIR*),用于后…

[源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析

声明:文章为本人真实测评博客,非广告,并没有推广该平台 ,为用户体验文章 一起来轻松玩转文心大模型吧👉 文心大模型免费下载地址 一、引言:文心4.5开源——开启多模态大模型新时代 2025年6月30日&#x…

微信小程序无法构建npm,可能是如下几个原因

安装位置的问题,【npm安装在cd指定位置】小程序缓存的问题退出小程序,重新构建即可

从 MyBatis 到 MyBatis - Plus:@Options 注解的那些事儿

在 MyBatis 以及 MyBatis - Plus 的开发过程中,注解的使用是提升开发效率和实现特定功能的关键。今天我们就来聊聊 Options 注解,以及在 MyBatis - Plus 中它的使用场景和替代方案。 一、MyBatis 中的 Options 注解 在 MyBatis 框架中,Option…

转换图(State Transition Diagram)和时序图(Sequence Diagram)画图流程图工具

针对程序员绘制状态转换图(State Transition Diagram)和时序图(Sequence Diagram)的需求,以下是一些好用的工具推荐,涵盖在线工具、桌面软件和基于文本的工具,适合不同场景和偏好。这些工具在易…

基于php的在线酒店管理系统(源代码+文档+PPT+调试+讲解)

课题摘要在旅游住宿行业数字化转型的背景下,传统酒店管理存在房态更新滞后、预订渠道分散等问题。基于 PHP 的在线酒店管理系统,凭借其开发高效、兼容性强的特点,构建集客房管理、预订处理、客户服务于一体的综合性管理平台。 系统核心功能包…

视频质量检测中卡顿识别准确率↑32%:陌讯多模态评估框架实战解析

原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,禁止未经授权的转载与改编。一、行业痛点:视频质量检测的现实挑战在实时流媒体、在线教育、安防监控等领域,视频质量直接影响用户体验与业务可信度。…

流式输出阻塞原因及解决办法

流式输出不懂可看这篇文章:流式输出:概念、技巧与常见问题 正常情况,如下代码所示: async def event_generator():# 先输出数字1yield "data: 1\n\n"# 然后每隔2秒输出数字2,共输出10次for i in range(10):…

linux系统----Ansible中的playbook简单应用

目录 Playbooks中tasks语法使用 1、file 创建文件:touch 创建目录:directory 2、lineinfile 修改文件某一行文本 3、replace 根据正则表达式替换文件内容(指定换字符串) 5、template/copy 模板作用类似于copy&#xff0…

bmcweb工作流程

在openbmc中,bmcweb是一个web服务程序,类似于lighttpd,提供web服务。本文将简单介绍这个服务进程的执行流程。 bmcweb的入口函数main(). main() -> run() run()先注册routes,最后调用app.run(). 第一个注册的route为crow::webassets:requestRoutes(). crow::webasse…

伞状Meta分析重构癌症幸存者照护指南:从矛盾证据到精准决策

还记得你第一次做出Meta分析时的成就感吗?那种从海量文献中抽丝剥茧,最终得出可靠结论的感觉,简直不要太爽!但是,时代在进步,科研在卷动,Meta分析也有它的"升级版"——伞状Meta分析&a…

IOMMU Client设备DMA配置过程分析(九)

1.设备树 cp0_pcie0是一个PCIe RC控制器,使用SMMU将PCIe设备的IOVA转换成物理地址,使用iommu-map-mask和iommu-map定义PCIe设备使用的Stream ID。设备树定义如下所示。 [arch/arm64/boot/dts/marvell/armada-ap80x.dtsi] smmu: iommu100000 {compatibl…

使用node-cron实现Node.js定时任务

1. 简介 node-cron 是一个轻量级的Node.js库,用于在指定时间或间隔执行任务。它是Unix系统cron工具的JavaScript实现,适用于需要定时执行脚本的场景(如数据备份、定期爬虫等)。 2. 安装 npm install node-cron # 或 yarn add node…

前缀和-525.连续数组-力扣(LeetCode)

一、题目解析1、只包含0、1的二进制数组2、找到含有相同数量的0和1,并返回其子数组长度二、算法原理解法1:暴力枚举 时间复杂度O(N^2)解法2:前缀和哈希表对于统计子数组中的0和1的数量有点困难,我们可以将其转化一下转化&#xff…

汽车电子控制系统开发的整体安全理念

1. 摘要在汽车制造商和一级供应商避免责任的背景下,公认的技术规则作为法律要求的标准具有重要的实际意义。道路车辆电子控制单元的安全性目前主要通过 ISO 26262 的要求和流程来保障。特别是随着道路交通自动化程度的不断提高以及现代车辆随之而来的复杂性&#xf…

IDEA重新安装常用设置

IDEA重新安装常用设置 展示固定导航栏 项目构建和运行操作委托给maven 参考:IDEA build委托到Maven build

微服务的编程测评系统9-竞赛新增-竞赛编辑

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1. 竞赛新增1.1 竞赛基本信息增加-后端开发1.2 竞赛新增题目-后端1.3 竞赛基本信息-前端1.4 竞赛新增题目-前端2. 竞赛编辑2.1 竞赛详情-后端2.2 竞赛详情-前端2…