软件测试流程

本文详细介绍了软件测试的各个阶段,包括单元测试、集成测试和系统测试,强调了它们的目的、好处与不足。此外,还探讨了软件测试的分类,如静态测试、动态测试、黑盒测试和白盒测试,以及常见的测试方法,如功能测试、性能测试和兼容性测试。文章最后讨论了优秀界面的7要素,包括符合标准、直观性、一致性等,以提升用户体验。
摘要由CSDN通过智能技术生成

软件测试阶段

单元测试

定义:单元测试又称为模块测试,是最小单位测试

  • 单元测试具有独立性,可以与系统其他部分分隔离出来,从而完成测试,其依据是详 细设计
  • 测试对象

其测试对象是软件设计的最小单位模块与组件,类、文件、窗口、函数、菜单、报表 或一个存储过程都可以作为一个单元进行测试

  • 单元测试可以发现的缺陷类型:

计算错误
需求或功能遗漏
程序路径选择错误

  • 执行方法:

代码扫描工具:SonarQube + PMD

测试原则

  • 尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例 中重写模拟方法)
  • 此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求

单元测试的好处

尽早的发现缺陷
利于重构
简化集成

单元测试的不足

  • 不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误
  • 每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡

集成测试

定义

  • 是将已分别通过测试的单元按设计要求组合成系统或子系统,再 进行的测试。目的在于检查这些单元之间的接口是否存在问题。

测试目标:API

  • 对集成的组件之间的接口和组件与组件的协同工作进行测试。

测试依据

  • 软件和系统设计文档
  • 系统架构
  • 定义和描述接口的文档、工作流和用例等

执行方法

工具:Postman
自动化测试框架:python + requests + ddt + nose2

测试原则

  • 尽早集成测试关键模块
  • 尽早测试包含I/O的模块

集成测试的好处

  • 可以检查一系列的环境配置正确与否
  • 可以迅速定位BUG
  • 可以为功能测试和性能测试提供支持

集成测试的不足

  • 难以完成业务场景测试
  • 无法测试前端页面

系统测试

定义:是充分运行软件系统,以验证系统是否满足产品的质量需求

  • 系统测试分为:功能测试、非功能测试
  • 非功能测试

性能测试、容量测试
安全性测试
兼容性测试
可靠性测试

集成测试和系统测试之间的比较

  • 测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个 系统的功能和性能;
  • 测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的 角度进行测试。

验收测试

定义

  • 也称交付测试,是针对用户需求、业务流程进行的正式 的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机 构决定是否接受系统。

验收测试一般会根据产品产品需求(用户故事),严格的逐项的检查产 品,确保所开发的软件产品符合用户预期的各项要求。

软件测试的分类

按测试策略分类

静态测试与动态测试特点

  • 静态测试特点

静态测试不必动态运行程序,也不必进行测试用例设计和结果判断等 工作。
静态测试可以由人工进行,充分发挥人的逻辑思维优势。
静态测试实施不需要特别的条件,容易开展。

  • 动态测试特点

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

黑盒测试

  • 定义:又称为功能测试、数据驱动测试或基于规格说明书的测试

黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么 事情,只能通过输入输出看是否能得到我们所需的来测试。

  • 主要测试方法

等价类划分法、边界值分析法、因果图法、场景法、正交实验设 计法、判定表驱动分析法、错误推测法、功能图分析法等。

白盒测试

定义:白盒测试称为结构测试或逻辑驱动测试

白盒测试是针对被测单元内部是如何进行工作的测试
白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而 我们可以通过去测内部结构来测试

  • 主要测试方法

静态测试&动态测试、单元测试、代码检查、同行评审、逻 辑覆盖、基本路径测试等等

黑盒测试和白盒测试区别

白盒测试的重点是进行代码覆盖,而黑盒测试着重进行功能、性能的测试。
白盒测试中可能不考虑软件的外在表现特性,往往根据运行的代码来判 断测试的结果。而黑盒测试则不关心程序的内部逻辑结构,只提供输入和操 作过程,通过软件运行给出的运行结果来判断测试是否通过。
在实践中,单元测试主要是采用白盒测试方法,而除单元测试之外其他 阶段的测试则大都采用黑盒测试方法。有时并不能完全区分进行的是哪种测 试,往往把两者结合起来会得到更好的测试效果。

灰盒测试

  • 是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试 阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰 盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻 辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。
  • 灰盒测试关注的是一个模块或模块之间的接口问题

手工测试与自动化测试

  • 手工测试:就是由人去一个一个的输入用例,然后观察结果,和 机器测试相对应,属于比较初级但是必须的一个步骤。
  • 自动化测试:通过将测试执行部分或者全部交由机器执行的一种 测试,叫做自动化测试。这种测试不需要人的实时参与。同时这 种测试在小规模应用时会比手动测试昂贵许多。
  • 自动测试优点:

> 对程序新版本运行前一版本执行的测试,提高回归测试效率
> 可以运行更多更频繁的测试,比如冒烟测试
> 可以执行手工测试困难或不可能做的测试,比如大量的重复操作或者性能测试,如处理 精确的事务、大数据量事务、并发事务

  • 自动测试局限:

*> 不能取代手工测试,自动化测试只能提高测试效率,不能提高测试有效性,即不可能发 现更多缺陷,手工测试比自动测试发现的缺陷更多

对测试设计依赖性极大,测试设计的不好会遗漏问题
自动化测试对软件开发具有很大的依赖性,开发上出现变更可能导致前面的自动化测试 完全失效
工具本身并不具备想象力,工具不具有智能
开发、维护脚本工作量大、费用高*

  • 适合使用自动化测试的情况

版本稳定、项目周期长、脚本可复用

  • 不适合使用自动化测试的情况

定制型项目(一次性的)
项目周期很短的项目
涉及业务规则复杂的对象
关于美观、声音、易用性的测试
很少运行的测试
测试的软件不稳定
涉及物理交互的测试

测试自动化

  • 这是一种让测试过程脱离人工的一次变革。对于 控制成本,控制质量,回溯质量和减少测试周期都有积极影响 的一种研发过程。

冒烟测试

  • 冒烟测试是在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件 基本功能进行确认验证的手段,并非对软件版本包的深入测试。冒烟测试也是针对软件版 本包进行详细测试之前的预测试,执行冒烟测试的主要目的是快速验证软件基本功能是否 有缺陷。如果冒烟测试的测试用例不能通过,则不必做进一步的测试。
  • 冒烟测试执行,与正式测试的区别在于二者侧重点不同,冒烟测试关注的是阻塞型缺陷, 包括但不限于流程不通、主要功能未实现等,而正式测试则属于全面、细致的测试,需要 尽可能的发现全部缺陷并按其严重性进行区分。
  • 冒烟测试过程中,需要注意的是:

开发协同
注重效率
评估用例

回归测试

过一段时间以后再回过头来对以前修复过的缺陷重新进行测试,看该缺陷是否会重新出现
修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误
回归测试贯穿整个测试活动,且占据很大的工作量
选择回归测试策略应该兼顾效率和有效性两个方面。

  • 常用的选择回归测试的方式包括:

再测试全部用例
基于风险选择测试:选择最重要、最常用、存在风险的功能进行测试
基于操作剖面选择测试:操作剖面是操作的集合以及各种使用方式的出现概率
再测试修改的部分

  • 回归测试可遵循下述基本过程进行:

识别出软件中被修改的部分;
从原基线测试用例库T中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有 效的测试用例,其结果是建立一个新的基线测试用例库T0。
依据一定的策略从T0中选择测试用例测试被修改的软件。
如果必要,生成新的测试用例集T1,用于测试T0无法充分测试的软件部分。
用T1执行修改后的软件。
第(2)和第(3)步测试验证修改是否破坏了现有的功能,第(4)和第(5)步测试验证 修改工作本身。

常见测试方法

功能测试

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

性能测试

  • 观察系统在一个给定的环境和场景中的性能表现是否与预期目标 一致,评判系统是否存在性能缺陷,并根据测试结果识别性能瓶颈,改善系统性 能的完整的过程。

负载测试:在一定的软件、硬件及网络环境下,通过改变系统负载方式、增加负 载等来发现系统中所存在的性能问题。用于确定系统所能承载的最大用户数、最 佳用户数。关注不同用户数下的系统响应时间及服务器的资源利用率。
压力测试:在一定的软件、硬件及网络环境下,通过模拟大量的虚拟用户向服务 器产生负载,使服务器的资源处于极限状态下长时间连续运行。目的测试服务器 在高负载情况下是否能够稳定工作,挖掘系统最脆弱的位置。
稳定性测试(可靠性测试):在一定的软件、硬件及网络环境下,模拟一定数量 虚拟用户运行一种或多种业务,长时间的运行(7*24小时)系统。目的是检测系统 在长时间运行下的稳定性和性能相关指标是否符合预期。

易用性测试

  • 指用户使用软件时是否感觉方便,也称为用户体验测试

安装易用性
功能易用性
界面易用性 https://baike.baidu.com/item/易用性测试
辅助系统易用性

界面测试

  • 定义:测试用户界面的布局是否合理、整体风格是否一致、各个控件的 放置位置是否符合客户使用习惯,此外还要测试界面操作便捷性、导航简单 易懂性,页面元素的可用性,界面中文字是否正确,命名是否统一,页面是 否美观,文字、图片组合是否完美等。
  • 测试目标

通过用户界面 (UI) 测试来核实用户与软件的交互。UI测试的目标在于确保用户 界面向用户提供了适当的访问和浏览测试对象功能的操作。除此之外,UI 测试 还要确保 UI 功能内部的对象符合预期要求,并遵循公司或行业的标准。

安装测试

  • 定义:确保该软件在正常情况和异常情况的不同条件下都能进行安装。 https://baike.baidu.com/item/安装测试
  • 安装:首次安装、重复安装
  • 卸载
  • 升级

文档测试

  • 定义:检验各种文档的完整性、正确性、一致性、易理解性、易浏览性。 • 软件产品的文档分为三大类
  • 开发文档
  • 用户文档
  • 管理文档

兼容性测试

  • 定义:指检查软件之间能否正确地进行交互和共享信息。软件兼容性 测试工作的目标是保证软件按照用户期望的方式进行交互。
  • 兼容性分类

向前兼容与向后兼容:向前兼容是指可以使用软件的未来版本,向后兼容是指可 以使用软件的以前版本
硬件兼容:与整机兼容、与外设兼容
软件兼容:操作系统/平台、应用软件之间的兼容、不同浏览器的兼容、数据库的 兼容、软硬件配合兼容
数据兼容:不同版本间的数据兼容、不同软件间的数据兼容

安全测试

  • 定义:指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程
  • 安全性测试方法

功能验证:权限管理、加密、认证等
漏洞扫描:使用工具
模拟攻击试验:跨站攻击
侦听技术:在数据通信或数据交互过程中,对数据进行截取分析的过程

恢复测试

  • 定义:主要检查系统的容错能力。当系统出错时,能否在指定时间间隔 内修正错误并重新启动系统。
  • 应该检验以下内容

自动恢复:重新初始化、数据恢复以及重新启动是否正确
人工恢复:还需估测平均修复时间,确定其是否在可接受的范围内

优秀界面的7要素

符合标准和规范

  • 最重要的用户界面要素是软件符合现行的标准和规范
  • 平台也可能没有标准,也许测试的软件就是平台本身。 在这种情况下, 设计小组可能成为软件易用性标准的创立者。

直观性

  • 用户界面是否洁净、不唐突、不拥挤?
  • UI的组织和布局合理吗?
  • 有多余功能吗?
  • 帮助系统有效吗?

一致性

  • 被测试的软件本身必须与其他软件保持一致性
  • 同一个程序中的相同操作更要保持一致
  • 如果软件或者平台有一个标准,就要遵守它。如果没有,就要注意软件的 特性,确保相似的操作以相似的方式进行。

快捷键和菜单选项
术语和命名

灵活性

  • 用户喜欢灵活选择做什么和怎样做

为了在Word中插入文字,可以用键盘输入、粘贴、从文件中读入、作为对 象插入等方式,用户可以决定用哪种方式来操作
多种视图的选择

舒适性

  • 软件应该用起来舒适,而不应该为用户工作制造障碍和困难

严肃的商业软件使用绚丽的色彩和音效
删除文件之前没有给出警告信息
读取文件缓慢,没有提示用户正在操作或反馈操作时间

正确性

  • 测试正确性,就是测试界面是否做了该做的事

错别字
语义表达是否正确
WYSIWYG(所见即所得)

实用性

  • 优秀用户界面的最后一个要素是实用性

软件的某项特性是否实用?
该特性对软件是否具有实际价值?
它们有助于用户执行软件设计的功能吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值