软件测试基础理论(二)


前言

最后编辑时间为2024-06-11,阅读本文前请注意最后编辑时间,文章内容可能与目前最新的技术发展情况相去甚远。欢迎各位评论与私信,指出错误或是进行交流等。


1、软件测试的分类

1.1 按照开发阶段划分

在这里插入图片描述

1、UI界面层(用户界面测试):功能性验证测试、兼容性与用户测试
2、业务逻辑层(API层面):客户端模拟测试、内外接口测试、SDK接口测试(Software Development Kit一般指的是软件工程师特定的软件包建立的开发工具的集合)
3、数据处理层:单元测试

单元测试

单元测试是对软件组成进行的测试。其目的是检验软件基本组成单位的正确性。测试对象是软件设计的最小单元:模块,又称为模块测试。
测试阶段:编码后或者编码前 (TDD - Test Driven Development - 测试驱动开发)
测试对象:最小模块(一个接口方法, 单一功能的模块)
测试人员:白盒测试工程师或开发人员
测试依据:代码和注释+设计详细文档
测试方法:白盒测试

要注意单元测试是白盒测试, 但是白盒测试不是单元测试.

集成测测

集成测试(也称联合测试,联调)、组装测试,在单元测试的基础上,将多个模块组装起来进行测试,重点关注模块的接口部分。
测试阶段:一般的单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试依据:单元测试模块+概要设计文档
测试方法:黑盒测试和白盒测试相互结合
测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能的正确性

集成测试:增量式集成测试
对各个模块一边组装一边测试,是一种逐步集成和逐步测试的方法,把可能出现的错误分散暴露出来,便于找到问题和修改。

集成测试:非增量式集成测试
对每个单元进行充分测试后,把所有单元全部集成起来,一次性进行集成测试

系统测试

在真实系统运行环境下,包括对功能、性能以及软件所运行的硬软件环境进行测试。系统测试阶段还包括回归测试和冒烟测试。

测试阶段:集成测试之后
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试依据:需求规格说明文档
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全等

回归测试
回归测试是指在发生修改之后,重新对之前的用例进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。在整个软件开发过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。自动回归测试将大幅降低系统测试, 维护升级等阶段的成本。

冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是先确认软件的基本功能和核心流程是正常的,随后进入进入正式的测试环境,开展完整的测试工作。

验收测试

验收测试是部署软件之前的最后一个测试操作,也叫做交付测试,验收测试的目的是保证软件的准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件的购买者展示该软件的需求。

测试阶段:系统测试之后
测试对象:整个的系统(包括软硬件)
测试人员:最终的用户或者需求方
测试依据:用户需求和验收标准
测试方法:黑盒测试
测试内容:同系统测试一样

1.2 按实施测试的组织划分

α测试

α测试是由一个用户在开发环境下进行测试, 也可以是公司内部的用户模拟实际操作环境下进行的测试, α测试的目的是评价软件产品的FLURPS(即功能, 局域化, 可使用性, 可靠性, 性能和支持).

β测试

β测试由软件的最终的用户们在一个或者多个场所进行的测试。

α测试和β测试的区别:
测试的场所是不同的:α测试是把用户请到开发方的场所进行的测试,β测试是指用户在其自身要使用该软件的实际场所进行测试。

α测试的测试环境是由开发方进行控制的,用户的数量是相对比较少的,时间也是相对比较集中的。β测试的测试场所不是由开发方进行控制的,用户的数量是相对比较多的,时间也不是很集中的。

第三方测试

介于开发方和用户方之间的组织的测试, 该测试是有第三方测评机构来进行的, 严格按照软件行业的标准规范进行测试的, 就类似于国家指定的食品安全标准, 它都是有规定指标的, 测试行业也是存在这样的指标的.

1.3 按照代码是否运行划分

静态测试

静态测试 (static testing) 不实际运行被测软件, 只静态地检查程序代码, 界面或文档中可能存在的错误的过程; 通过分析和检查源程序的语法、逻辑、结构、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、流程图分析、符号执行来进行找错。

动态测试

动态测试 (dynamic testing), 指的是实际运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性的等性能。判断一个测试属于动态测试还是静态的, 唯一的标准就是看是否运行程序.大多数软件测试工作都属于动态测试.

1.4 按是否手工执行划分

手工测试:是由人一个一个的输入测试用例,然后观察结果、和机器测试相对应,属于比较原始,大事需要一个一个步骤进行测试。

优点:可以进行自动化测试无法替代的探索性测试、发散思维类无既定结果的测试。
缺点:执行的效率比较慢。量大易错。

自动化测试:就是按照人为预设条件下运行系统或应用程序, 评估运行结果, 预先条件应包括正常条件和异常条件; 简单说, 自动化测试是把手工的测试行为转化为机器执行的一种过程.
自动化测试比如: 功能测试自动化, 性能测试自动化, 安全测试自动化.
自动化测试按照测试对象来分, 还可以分为接口测试, UI测试等.

自动化实施步骤

完成功能测试, 版本基本稳定
根据项目特性, 选择适合项目的自动化工具, 搭建测试环境
将手工测试的测试用例转化为自动化测试的用例
通过工具、代码实现自动输入, 自动检测输出结果是否符合预期
生成自动测试报告
持续改进, 优化测试脚本

1.5 按测试对象划分

业务测试

测试人员将系统的各个模块串接起来运行、模拟真实用户实际的工作流程,满足需求定义的功能进行测试的过程。

界面测试

我们平时在使用网站/APP时, 直接通过肉眼看到的页面就是界面, 用户是通过界面和软件之间进行交互的,界面测试也称为UI测试。可以从以下几个方面进行界面测试:

  1. 界面中的文字是否正确,命名是否统一,文字和图片组合、页面是否美观,整体风格是否一致。
  2. 测试用户界面的功能模块布局是否合理,是否符合客户的使用习惯。
  3. 测试界面的自适应性, 界面适应不同的页面大小, 界面必须功能完整, 文字完整, 图片完整, 不出现叠加, 消失; PC端和移动端之间最大的区别就是屏幕的尺寸不同, 如果对移动端使用PC端显示的界面, 很明显尺寸上是不匹配的, 很可能会导致页面显示错乱!
  4. 界面的控件功能是否正常, 控件就是页面上看到的最小化的图型 (对话框, 滚动条, 各类按钮…), 按钮的有效状态和失效状态是否可以区分(有效状态:按钮高亮; 无效状态: 按钮置灰, 不能进行点击操作)
可靠性测试

指软件正常运行的能力, 可靠性通常是用百分之来表示的, 即

可靠性 = 正常运行时间 / (正常运行时间 + 非正常运行时间) \ 100%
百分比越高, 可靠性越强, 反之就越低.

容错性测试

系统发生异常, 或者由于用户的错误操作导致软件系统发生错误, 软件自我消化掉错误, 或者进行修改/修复, 不让客户感知到系统内部的情况, 就叫做系统的容错性.

文档测试

针对与软件开发相关的文档(开发文档、用户文档、管理文件)所进行的测试.

文档测试的关注点:

  1. 文档的术语, 因为这是给业内人士看的, 就可以不用把一些东西写的太过于详细
  2. 文档的完整性, 将一个软件的所有的功能描述完整, 切勿遗漏重要功能!
  3. 文档的一致性,
  4. 文档的易用性
  5. 文档的正确性
兼容性测试

兼容性测试主要指的就是软件之间、软件和硬件之间会不会有影响。可以考虑以下几个方面:

软件系统自身的兼容性, 软件 “向前向后” 的兼容性, 软件开发的新功能, 不能影响旧功能的使用, 同时, 也不能影响后续功能的开发.

软件对应用平台的兼容性, 比如: 安装的软件环境 (Windows, iOS, Linux等操作系统), 安装的硬件环境(电脑/手机配置是否能支持软件的运行), APP环境(手机的应用商店等), 如果是网页, 要考虑浏览器的版本

一个软件的使用不能影响其他软件的正常使用

易用性测试

软件产品需关注用户体验, 让用户获得舒适, 易用的体验, 针对软件这方面的测试称之为易用性测试.

可以从以下几个方面考虑:

  1. 标准性和规范性: 对于现有的软件运行平台, 通常其UI标准已经不知不觉地被确立了, 成为大家的共识; 比如: 安装软件的界面的外观, 在什么场合使用恰当的对话框…
  2. 直观性: 求软件功能特性易懂, 清晰; 用户界面布局合理, 对操作的响应在用户的预期之中.
  3. 灵活性: 软件可以有不同的选项, 用来满足不同使用习惯的用户来完成相同的功能, 但是灵活性的设计要把握好度, 不然可能由于太多的用户状态和方式的选择, 增加了软件设计的复杂性, 和程序实现的难度.例如: 手机键盘有九宫格和全键盘, 还支持手写, 满足了不同用户的需求
  4. 舒适性:舒适性主要强调界面友好, 美观, 操作过程顺畅, 色彩用运恰当, 按钮的立体感等; 例如: 左手鼠标的设置给习惯用左手的人带来了便利
安装卸载测试

测试程序的安装、卸载, 考虑以下方面:

  1. 应用是否可以在不同的系统, 版本下安装(安装兼容性)
  2. 安装或者卸载过程是否可以手动暂停, 或者取消, 并且后续还可以正常安装和卸载
  3. 安装所需的内存空间不足的时候, 系统是否有提示
  4. 是否可以正常的卸载, 以及应用软件的各种卸载方式, 并且如果在执行取消卸载命令之后, 软件可以正常使用(数据恢复)
  5. 卸载和安装过程中出现环境问题, 软件是否可以正常并且合理的应对, 比如死机, 断电, 断网等情况
安全测试

安全测试是一个相当于来说独立的领域,需更多的专业知识,例如Web的安全测试、需要熟悉各种网络协议,Tcp/Http,防火墙、CDN、熟悉各种操作系统的漏洞。 熟悉路由器等。从软件来说熟悉各种的攻击手段,例如sql注入、Xss等

性能测试

检查系统是否满足需求规格说明书中规定的性能
通常表现在以下的几个方面

  • 对资源的利用(如内存、CPU等)
  • 对执行间隔、日志文件(如中断、报错)
  • 响应时间
  • 吞吐量(TPS)
  • 辅助存储区(例如缓冲区、工作区的大小)
内存泄漏测试

内存泄露只要执行的次数足够多, 最终会耗尽所有可用内存, 使软件的执行越来越慢, 最后停止响应

  • 内存分配完了忘记进行了回收
  • 程序写法有问题
  • 某些API函数的使用不正确,造成内存泄漏
  • 没有及时的进行释放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值