关于软件测试分类常用的几种分类方式及其具体方法和内容介绍
目录
(1)alpha内测版本、Beta公测版本、gamma接近于正式发布的版本(第三方测试)
测试用例的万能公式:功能测试+性能测试+界面测试+兼容性测试+易用性测试+安全性测试
按照测试对象划分(10个测试)顺口溜:
- 文档内存兼容性:文档测试、内存泄漏测试、兼容性(浏览器、系统、自身、其他软件、数据兼容性)测试、容错性测试、性能测试;
- 界面易用可双安:界面测试、易用性测试、可靠性测试、安全性、安装卸载测试
1.软件测试分类(重点部分)
测试金字塔与业务测试分析
UI界面层:进行功能验证测试,兼容性与用户测试
业务逻辑层:客户端模拟测试、内外接口测试、SDK(SoftWare DeveLopment Kit)接口测试
数据处理层:单元测试
ROI:投入产出比(投入相同的时间与精力。越往上层,产出越低,定位更难、效率越低 )
1.1按开发阶段分类
(1)单元测试、集成测试、系统测试、验收测试(交付测试)
1)单元测试
从程序内部结构出发设计测试用例,对程序内的最小模块(方法、类)进行测试
- 测试阶段:开发前(TDD)、开发后
- 测试对象:最小模块
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:代码和注释+详细设计文档
- 测试方法:白盒测试
- 测试内容:模块接口测试、局部数据结构测试、路径测试(if-else)、错误处理测试、边界测试
单元测试步骤:
1.在pom.xml添加依赖<dependency></dependency>
2.下载插件file-settings-pliguis-junit
3.创建单元测试类Ctrl+Shift+T
4.单元测试类中写每个方法的单元测试代码
2)集成测试
组装测试在单元测试基础上,,按照一定的逻辑组合单元模块形成一个功能模块,重点关注模块和模块之间的接口
- 测试阶段:一般单元测试之后进行
- 测试对象:模块间的接口
- 测试人员:白盒测试工程师或开发工程师
- 测试依据:单元测试的模块+概要设计文档
- 测试方法:灰盒测试(介于黑盒与白盒之间)
- 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响、模块间功能冲突
3)系统测试
整体测试项目,对功能、性能及软件运行的软硬件环境进行测试,包括回归测试和冒烟测试。
- 测试阶段:集成测试通过之后
- 测试对象:整个系统(软、硬件)
- 测试人员:黑盒测试工程师
- 测试依据:需求规格说明文档
- 测试方法:黑盒测试
- 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
1) 冒烟测试:对软件基本流程和工作做的一个粗略测试,看基本流程是否跑通,一般对研发人员的第一个版本进行冒烟测试,测试系统是否具备可测性。
- 评价系统是否正式进入正式的测试环节依据——准入原则
- 提测用例:针对冒烟测试进行的测试用例,主要针对本次迭代的主要功能和系统核心流程进行测试用例的设计
2) 回归测试:修复一个bug后,把之前的测试用例在新的代码上再次测试(保障本次功能是正确的,且历史功能也是正确的)
- 回归测试策略:评价回归测试的范围、自动化测试
4)验收测试(交付测试)
部署软件前的最后一个测试操作。技术测试的最后一个阶段。确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,满足项目文档需求。相比系统测试多了一个文档测试。
- 测试阶段:系统测试通过之后
- 测试对象:整个系统(包括软硬件)。
- 测试人员:最终用户或者需求方。
- 测试依据:用户需求、验收标准
- 测试方法:黑盒测试
- 测试内容:同系统测试(功能...各类文档等)
1.2按测试实施组织
(1)alpha内测版本、Beta公测版本、gamma接近于正式发布的版本(第三方测试)
- alpha测试是用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试,大型通用软件正式发布前,通常需要执行α和β测试。α测试不能由程序员或测试员完成
- Beta测试是一种验收测试。Beta测试由软件的最终用户在一个或多个场所进行。
- 介于开发方和用户方间的组织的测试
α测试与Beta测试的区别:
测试的场所不同:Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。
测试的环境不同:Alpha测试的环境是受开发方控制的,用户数量相对比较少,时间较集中。beta测试的环境则相反,是不受开发方控制,用户数量相对比较多,时间不集中。
测试的时间不同:alpha先于beta测试。通用的软件产品需要较大规模的beta测试,测试周期比较长。
1.3按是否运行划分
(1)静态测试、动态测试
1)静态测试(依赖经验)
不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序是否有误。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。 检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。
静态质量:度量所依据的标准是ISO25010。即功能性(Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植性(Portability)。
代码静态分析和文档测试都属于静态测试
2)动态测试
写测试用例,运行被测程序,检查运行结果与预期结果的差异,分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
大多数软件测试工作都属于动态测试。
1.4自动测试
就是在预设条件(正常、异常)下运行系统或应用程序,评估运行结果。
自动化测试:功能测试自动化、性能测试自动化、安全测试自动化。(通常说的自动化是指功能测试自动化) 接口测试的ROI(产出投入比)要比UI测试高。
自动化测试按照测试对象分:接口测试、web自动化、APP自动化、UI测试等。
回归测试是自动化测试最好的用处
适用场合:
- 项目周期长、不停的迭代
- 需求比较稳定的项目
自动化测试实施步骤:
1.完成功能测试,版本基本稳定
2.根据项目特性,选择适合项目的自动化工具,并搭建环境
3.提取手工测试的测试用例转化为自动化测试的用例
4.通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
5.生成自动测试报告
6.持续改进,脚本优化。
1.5按是否查看代码划分
(1)黑盒测试、白盒测试
- 黑盒测试也称功能测试,只测试功能,不关注功能的具体实现方法
- 白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试,不仅关注功能,也关注代码的内部结构和实现。对程序内部逻辑、结构、功能进行测试。接口测试也是白盒测试的一种
白盒测试方法:语句覆盖法、逻辑覆盖法(含路径覆盖、判定覆盖、判定组合覆盖、条件覆盖)、循环覆盖法
1.6按测试地域划分
软件本地化和国际化测试是一个综合了翻译行业和软件测试行业的测试类型。要求测试人员具备一定的翻译能力、语言文化,同时具备测试人员的基本技能。
本地化和国际化测试的一些要点:
- 1、本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否整齐等
- 2、是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等。
- 3、在不同的屏幕分辨率下界面是否正常显示。
- 4、是否存在不同的字体大小,字体设置是否恰当。
- 5、日期、数字格式、货币等是否能适应不同国家。如,中文年月日,英文是月日年。
- 6、排序的方式是否考虑了不同语言的特点。
- 7、在不同的国家采用不同的度量单位,软件是否能自适应和转换。
- 8、软件是否能在不同类型的硬件上正常运行,尤其注意在当地市场销售的流行硬件上。
- 9、软件是否能在Windows或者其他操作系统的当地版本上正常运行。
- 10、联机帮助和文档是否已经翻译,翻译后的链接是否正常。正文翻译是否正确、恰当。
1.7按测试对象划分
(1)业务测试
测试人员把系统各个模块串接起来运行、模拟真实用户实际的工作流程,满足用户需求定义的功能来进行测试的过程。关注需求和用户
(2)界面测试
界面测试(UI测试),测试用户界面的功能模块的布局(文字、图片、控件)是否合理、整体风格是否一致、各控件放置位置是否符合人体工学;关注整体的协调,整体布局清晰
响应式测试:系统页面随屏幕分辨率不同而自适应,需注意:
- 页面文字随屏幕分辨率变化的时候不会重叠、遮挡、消失
- 页面图片随屏幕分辨率变化的时候不会重叠、遮挡、消失、模糊
- 页面功能随屏幕分辨率变化的时候没有消失
- 页面功能随屏幕分辨率变化的时候可以正常使用
- 严格遵循UI设计图
- 页面在不同的屏幕分辨率进行衔接、衔接是否四化、不出现断层
(3)容错性测试
当系统由于外部环境的影响或用户的误操作导致系统发生错误,但系统可以进行自我处理,使其正常稳定运行。
容错性测试包括两个方面:
1)输入异常数据或进行异常操作,检验系统的保护性:如果系统的容错性好,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。
比较温柔的容错性测试通常构造一些不合理的输入来引诱软件出错,例如:
(1)数据级别:日期、货币、时间
(2)验证级别:查询信息前后空格,trim(),验证码输入错误,同一个系统前后信息的容错处理
环境容错处理:系统运行时出现断电、断网,服务器故障的时候,可以随时切换电源、网络、备用服务器,而用户无感知。
界面容错处理:进行一些危险或用户禁止操作时,有无提示或者把功能屏蔽
(4)文档测试
测试文档和软件系统的一致性:文档的术语、正确性、完整性、一致性、易用性
(5)兼容性测试
包括平台测试、浏览器测试、软件本身能否向前或者向后兼容、数据兼容性、测试软件能否与其它相关的软件兼容的测试。最常见的是浏览器的兼容性测试,不同浏览器内核不一样,在css,js解析上的不同,会导致页面的显示不同。
(6)易用性测试
是交互的适应性、功能性和有效性的集中体现,符合标准和规范、直观性、灵活性、舒适性、实用性,易用性属于人体工程学。
(7)安全测试
web的安全测试,需要熟悉各种网络协议TCP\HTTP,防火墙,CDN,熟悉各种操作系统的漏洞,熟悉路由器等;
从软件来说,熟悉各种攻击手段,例如SQL注入、Xss等。作为web入门测试,可以IBM的appscan。
(8)性能测试
检查系统是否满足需求规格说明书中规定的性能。通常表现在以下几个方面:
- 响应时间:3/5/10s
- 吞吐量(TPS):每秒处理的事务(消息)数量,系统在单位时间内处理的信息量
- 点击率:每秒向服务器发送HTTP请求的个数
- 系统在运行时占用资源的情况:CPU、内存、磁盘、网络带宽、耗电量
为什么进行性能测试?
- 希望用户体验好,系统能快速响应用户的需求
- 系统能处理预期的用户负载、事务数量
- 在满足以上指标的情况下,可以稳定运行
(9)内存泄漏测试
内存泄露是会累积的,只要执行的次数足够多,最终会耗尽可用内存,使软件的执行越来越慢,最后停止响应。造成内存泄露最常见的有以下几种:
- 分配完内存之后忘了回收。
- 程序写法有问题,造成没办法回收。
- 某些API函数的使用不正确,造成内存泄露。
- 没有及时释放
1.8其他分类
随机测试:对软件中的重要功能进行复测
探索性测试:一边了解学习项目,一边进行测试
2.测试报告的输出
在项目测试完毕后,需要出具测试报告:
- 测试概况
- 测试过程分析
- 缺陷分析
- 测试结论
- 缺陷清单
整个测试过程:
需求分析(需求串讲、验证、从设计需求中提取)--测试计划(测试方案、测试策略)-测试用例编写(需求测试)--测试执行(冒烟测试、系统测试、回归测试,交叉测试、自由测试)--测试报告(缺陷分析、测试结论)
测试执行过程中,每收到一个测试版本都需要进行冒烟测试
版本发布之后,要跟踪、收集反馈信息
3.常用测试管理工具
对测试需求、计划、用例和实施过程进行管理、对[软件缺陷进行跟踪处理的工具。记录、规范、统计、分析、回溯、改进,测试管理工具应该具有的基本功能如下:
- 1、测试需求管理
- 2、测试用例管理
- 3、测试过程管理(计划、任务等)
- 4、缺陷管理
- 5、报表统计
- 6、权限管理
工具:
QC/ALM:基于Web的测试管理工具
CQ:商业版本,专注于配置管理工作中的变更管理工具
JIRA:项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
TestLink开源:TestLink 是sourceforge用于管理测试用例和测试过程,缺少缺陷管理的功能
禅道国产开源:专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,实现了软件的完整生命周期管理。
启动禅道注意!!!
配置端口:修改Apache端口非8080,修改MySQL端口非3306
登录用户默认admin,密码123456
4.禅道的使用
一款项目管理工具,管理软件开发的生命周期:需求分析——计划——设计——编码——测试——运行维护——测试用例管理——bug管理——报表统计
例题:如何测试一个APP??
从如下几部分考虑:
5.常见基础功能测试
1.安装和卸载
一旦出错就是紧要重要的缺陷:主要关注以下几点:
- 应用是否正常安装(命令行安装、手机助手、应用商店等第三方软件、apk/ipa安装)
- 应用是否在不同系统(iOS、Android),版本、机型上安装(安装兼容性测试)
- 安装过程中出现暂停后,是否能继续安装
- 遇到网络中断或不稳定时,是否有提醒
- 安装空间不足时是否有提示,提示是否友好
- 是否可以正常删除卸载应用(桌面删除、第三方软件删除、命令行删除)
- 卸载后所有安装文件是否全部删除
- 卸载中出现死机,断电重启等意外情况,待环境恢复后是否还能继续删除
- 卸载是否支持取消功能,取消之后是否还能够正常运行
2.运行
- 安装完成后是否可以正常打开,稳定运行
- APP的速度是否合理,切换是否流畅
- 网络异常时,应用是否会崩溃(正常应该是提示网络异常,而不是系统错误)
3.注册和登录
- 账号密码注册登录
- 手机号注册登录
- 第三方授权登录
- 二维码登录
- 刷脸登录
- 指纹登录
4.日历控件
5.权限设置
6.软件更新
强制更新和非强制更新
7.网络环境
中国电信、中国移动、中国联通
8.兼容性
二.例题分析——淘宝购物车页面的测试