一.按照测试策略分析
黑盒测试(用户视角)
- 核心:关注输入输出,不关心内部实现
- 常用方法:
- 等价类划分:例如注册功能的密码字段,将6-18位字母数字组合设为有效类,小于6位/含特殊字符设为无效类。
- 边界值分析:针对数值型输入(如年龄范围18-60岁),测试17/18/19和59/60/61等边界值。
- 错误猜测法
- 场景法:基于用户操作流设计用例。例如电商下单流程:登录→选商品→支付→查看订单状态。
- 项目案例:在毕业设计的图书馆系统中,用等价类+边界值覆盖了图书借阅天数的12个用例,发现2个临界值错误。
- 优点:不需要了解程序内部的代码以及实现,不关注软件内部的实现。
-
缺点:是不可能覆盖所有代码。
白盒测试(开发者视角)
- 核心:基于代码结构设计用例,覆盖逻辑分支
- 常用方法:
- 语句覆盖:确保每行代码至少执行一次
- 判定覆盖:每个逻辑判断的True/False分支均覆盖
- 路径覆盖:覆盖所有可能的代码执行路径(复杂度高,一般仅核心模块使用)
- 判定条件覆盖
- 条件组合覆盖
- 路径覆盖
学习实践:自学Python的Coverage.py工具,对核心算法模块实现了90%的语句覆盖率。
灰盒测试(混合视角)
核心:结合黑盒与白盒,常用于接口测试
示例:通过抓包工具(如Postman)验证API的输入输出,同时检查数据库状态变化。
灰盒测试多用于集成测试阶段
开发⼈员主要用白盒测试和灰盒测试,测试人员主主要用白盒测试和黑盒测试。对于测试人员来说,相较于白盒测试,黑盒测试用的更多⼀些
二.按技术实现划分
手工测试
- 适用场景:探索性测试、用户体验测试、复杂业务流验证
- 项目经验:在实习期间,通过探索性测试发现某金融App的转账页面在横竖屏切换时出现布局错位。
自动化测试
- 适用场景:回归测试、数据驱动测试、性能测试
- 技术栈:
- UI自动化:Selenium(Web)、Appium(App)
- 接口自动化:Postman+Newman、Requests+Pytest
- 学习成果:用Selenium+Python搭建了电商登录模块的自动化脚本,实现每日冒烟测试,执行效率提升70%。
三.按测试阶段划分
单元测试
与编码同步进行,针对软件最小组成单元进行测试,主要采用白盒测试方法,从被测对象的内部结构出发设计测试用例;
- 测试阶段:编码后或者编码前(TDD)
- 测试对象:最小模块
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:代码和注释+详细设计文档
- 测试方法:白盒测试
- 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试
集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
- 测试阶段:一般单元测试之后进行
- 测试对象:模块间的接口
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:单元测试的模块+概要设计文档
- 测试方法:黑盒测试与白盒测试相结合
- 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块
- 缺陷对系统的影响
系统测试
对通过集成测试的系统进行整体测试,验证系统功能性和非功能性需求的实现。
- 测试阶段:集成测试通过之后
- 测试对象:整个系统(软、硬件)
- 测试人员:黑盒测试工程师
- 测试依据:需求规格说明文档
- 测试方法:黑盒测试
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
四.冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
如果冒烟测试通过,则测试人员开始进行正式的系统测试,如果不通过,则测试人员可以让开发人员重新修复代码直到冒烟测试通过,再开始进行系统测试。
五.回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。随着系统的庞大,回归测试的成本越来越大,通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
回归测试主要由人工测试和自动化测试进行。
在实际工作中,回归测试需要反复进行,当测试者一次又一次地完成相同的测试时,这些回归测试将变得非常令人厌烦,而在大多数回归测试需要手工完成的时候尤其如此,因此,需要通过自动测试来实现重复的和一致的回归测试。通过测试自动化可以提高回归测试效率。为了支持多种回归测试策略,自动测试工具应该是通用的和灵活的,以便满足达到不同回归测试目标的要求。
六.验收测试
针对用户需求,对通过系统测试的软件进行交付性测试,以确定系统是否满足验收标准,由用户或其他授权机构决定是否接受系统。验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。
- 测试阶段:系统测试通过之后
- 测试对象:整个系统(包括软硬件)。
- 测试人员:主要是最终用户或者需求方。
- 测试依据:用户需求、验收标准
- 测试方法:黑盒测试
- 测试内容:同系统测试(功能...各类文档等)
🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻
😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩
😍😁谢谢你的阅读。😸😼