测试分类总结

目录

一、按开发阶段分

(一)单元测试(模块测试)

(二)集成测试(联合测试(联调)、组装测试)

(三)系统测试(全面)

(1)回归测试

(2)冒烟测试

(四)验收测试

二、按照测试的实施组织 

(一)α测试

(二)β测试

(三)第三方(第三方软件测评机构)

三、按照是否运行去划分

(一)静态测试

(二)动态测试

四、按照是否手工划分

(一)手工测试

(二)自动化测试

五、按是否查看代码划分

(一)黑盒测试(不看代码)

(二)白盒测试(看代码)

(三)灰盒测试

六、按测试地域划分

(一)国际化测试

(二)本地测试

七、按测试对象划分

(一)业务测试

(二)界面测试

(三)容错性测试

(四)文档测试

(五)兼容性测试

(六)易用性测试

(七)安装测试(卸载)

(八)性能测试

(九)内存泄漏测试


一、按开发阶段分

测试金字塔

【注】SDK,全称:SoftWare DeveLopment Kit,一般是指软件工程师特定的软件包建立的开发工具集合。

ROI :投入产出比

为什么测试金字塔越往上投入阐述比越小?

测试人员投入相同的精力,测试成果越来越小

  1. 越往上定位问题越困难
  2. 越往上测试效率越低

(一)单元测试(模块测试

单元测试是对软件组成单元进行测试
目的:检验软件基本组成单位的正确性
测试的对象是软件设计的最小单位:模块
  • 测试阶段:编码后或编码前(TDD)                                                     TDD:测试驱动开发,Test-Driven-Development(先写测试用例,再跑测试用例,然后开发人员根据测试用例产生的异常去补充开发代码)
  • 测试对象:最小模块
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:代码和注释+详细设计文档(V模型)
  • 测试方法:白盒测试
  • 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

Java单元测试框架:Junit

模块接口测试:主要注意输入的参数,参数个数、参数类型,参数顺序要符合接口文档,输出要与预期一致

  • 局部数据测试
  • 边界测试:for、while等有边界
  • 错误处理测试:try catch finally
  • 路径测试:if else  switch等有路径

使用方法:安装插件(JUnit);找到要进行单元测试的类,选中类名,Ctrl+Shift+t创建单元测试类;最后写单元测试方法

注:

@Test:每一个单元测试方法上必须有,不然不会被认为是单元测试方法,不会被执行

@Ignore:忽略一个单元测试

@Before:在执行每一个单元测试方法之前执行

@After:在执行每一个单元测试方法之后执行

局部数据结构属于单元测试

(二)集成测试(联合测试(联调)、组装测试)

将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作
集成主要目的:检查软件单位之间的接口是否正确
  • 测试阶段:单元测试之后进行
  • 测试对象:模块间的接口
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:单元测试的模块+概要设计文档
  • 测试方法:黑盒测试与白盒测试相结合
  • 测试内容:接口之间数据的传输模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

(三)系统测试(全面)

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统
测试执行阶段,包括回归测试和冒烟测试。
  • 测试阶段:开发完成后,集成测试通过之后
  • 测试对象:整个系统(软、硬件)
  • 测试方法:黑盒测试
  • 测试人员:黑盒测试工程师
  • 测试依据:需求规格说明文档
  • 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等

(1)回归测试

当系统代码进行了修改的时候,为了防止新添加的代码对系统引入系统引入新的错误而进行的测试
  添加新需求和修改BUG时需要进行回归测试
 自动化测试能提高效率
回归测试的策略很重要:评估回归测试的范围,自动化测试

(2)冒烟测试

---》对系统的核心功能和主要流程进行测试
 准入原则(决定测试人员是否接收系统进行正式测试的依据)
提测用例:很少,主要是针对本次迭代的主要功能和系统的核心流程进行测试用例的设计

(四)验收测试

  • 测试阶段:系统测试之后,主要是用户进行测试
  • 测试对象:整个系统(软、硬件)
  • 测试方法:黑盒测试
  • 测试人员:黑盒测试工程师  
  • 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性、文档(功能说明文档、开发文档、使用说明书)

二、按照测试的实施组织 

(一)α测试

把用户(除开发和测试以外,公司其他人)请到开发现场进行测试
优点:能及时解决发现的问题,测试时间比较集中
缺点:环境受开发环境的限制

(二)β测试

用户在正常的使用环境下进行测试,通常在一个周期测试完成后,把问题整理成文档,反馈给开发人员

优点:用户在真实的使用环境下进行测试,测试结果更加可靠

缺点:测试时间比较分散

【注】β测试在α测试之后

β测试在α测试对比

地域不一样:α测试是在开发情况下,β测试是在用户实际使用环境下

时间集中程度不一样:α测试测试时间相对比较集中,β测试测试时间相对比较分散

(三)第三方(第三方软件测评机构)

根据行业里面的一些标准和规范进行测试

三、按照是否运行去划分

(一)静态测试

静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。 对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错
软件的质量用以下几个方面来衡量:功能性 (Functionality)、可靠性(Reliability) 、可用性 (Usability) 、有效性 (Effiffifficiency) 、可维护性(Maintainability )、可移植性 (Portability)、兼容性(Compatibility)、安全性(Security)
【注】代码静态分析和文档测试都属于静态测试

(二)动态测试

动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能
组成:构造测试用例、执行程序、分析程序的输出结果
【注】大多数软件测试工作都属于动态测试

四、按照是否手工划分

(一)手工测试

设计测试用例,运行程序,一步一步手动执行测试用例,对系统进行测试

优点:比较灵活,可以进行发散性的测试

缺点:如果进行大量测试就容易出错,执行效率慢

手工测试可以被自动化测试代替吗?不可以

(二)自动化测试

把手工测试的测试用例转化为自动化脚本,让机器去执行脚本;给定预先设计好的条件和结果的预判去执行

有接口自动化、性能自动化、web自动化、app自动化

前提:在系统功能比较稳定的前提下才可以进行自动化测试

自动化测试的最大价值:脚本的重复利用率,重复利用率越高价值越大

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

自动化的意义?

  答:解放双手,提高测试效率,节省大量的人力和时间资源

如何判断一个自动化脚本是否有价值?

  答:看自动化脚本的使用率,使用频率越高越有价值

什么项目可以使用自动化?

  答:项目周期长,需要不停的迭代;适用于需求比较稳定的项目

五、按是否查看代码划分

(一)黑盒测试(不看代码)

不关心软件内部的逻辑、结构,只关心输入和输出是否达到我们的预期,相当于把测试的软件看成一个只有输入和输出的黑色盒子
黑盒测试设计测试用例的方法:
  1. 等价类
  2. 边界值
  3. 因果图法
  4. 正交法
  5. 场景设计法
  6. 错误猜测法

(二)白盒测试(看代码)

研究软件内部的程序、逻辑和结构,验证是否满足软件需求,相当于把软件当成一个白色(透明)的能看见内部结构的盒子

白盒测试的方法

  1. 语句覆盖(把每一条语句都执行)
  2. 逻辑覆盖(创造一个异常,看是否能catch异常,或者不创造异常,看是否执行finally;switch)
  3. 路径覆盖(if else;switch 每一条路径都走过去)
  4. 判定覆盖(判定为真为假,每个判定条件都走过去
  5. 条件覆盖
  6. 判定和条件的组合
  7. 判定组合
  8. 条件组合

(三)灰盒测试

介于白盒和黑盒之间,既关心输入输出,又关心程序内部结构(集成测试、接口)

六、按测试地域划分

(一)国际化测试

软件国际化:在设计软件的时候采用一种工程技术,使得软件在转换不同国家的语言、风俗习惯的时候不需要修改源码的技术

如何进行软件国际化测试? 

  1. 本地化后的软件在外观上与原来版本是否存在很大的差异,外观是否整齐、不走样
  2. 是否对所有界面元素都进行了本地化处理,包括对话框、菜单、工具栏、状态栏、提示信息(包括声音的提示)、日志等
  3. 在不同的屏幕分辨率下界面是否正常显示
  4. 是否存在不同的字体大小,字体设置是否恰当
  5. 日期、数字格式、货币等是否能适应不同国家的文化习俗,例如,中文是年月日,而英文是月日年
  6. 排序的方式是否考虑了不同语言的特点。例如,中文按照第一个字的汉语拼音顺序排序,而英文按照首字母排
  7. 在不同的国家采用不同的度量单位,软件是否能自适应和转换
  8. 软件是否能在不同类型的硬件上正常运行,特别是在当地市场上销售的流行硬件上
  9. 软件是否能在Windows或者其他操作系统的当地版本上正常运行
  10. 联机帮助和文档是否已经翻译,翻译后的链接是否正常,正文翻译是否正确、恰当, 是否有语法错误

(二)本地测试

之前所讲

本地测试和国际化测试相互依存

七、按测试对象划分

(一)业务测试

场景设计法:正常流程,异常流程

对测试人员的要求:了解业务

(二)界面测试

考虑:文字:大小、字体、排版、颜色、粗细,是否加下划线,是否是链接等

           图片:清晰度、大小、排版、是否重叠、色彩等

           页面整体排版、信息提示弹出框、控件、对话框、滚动条、弹出框

           按钮亮度的显示(有效按钮高亮展示,无效按钮置灰)

           备注,提示说明语言表达是否清晰

响应式测试:页面可以随着屏幕大小的不同而变换

响应式页面的测试

  • 文字在不同分辨率下能够完成并且清晰展示
  • 图片在不同分辨率下能够正常排版、清晰展示、不重叠
  • 界面的功能在不同分辨率下可以正常使用
  • 界面在不同分辨率切换的时候,是平滑的过度
  • 不同的分辨率下,界面的展示要严格按照UI设计稿来展示

界面测试常见的错误:

不合适的快捷键、文字消失(没有正常展示)、重叠展示、重复的快捷键、未对齐等

(三)容错性测试

当系统出现一些异常,或者用户输入错误的信息,进行异常的操作,系统可以自我处理这些错误情况,不会出现崩溃、页面异常的情况,可以给用户一个很好的体验

数据容错性:时间、日期、数字

校验容错性:查询信息前后空格会去掉、大小写转换、验证码、数据信息一致性的校验、

信息级别:填写表单时,异常关闭(网络,电力,人为)是否会自动保存

                  同一个数据被不同人操作的时候是否会锁定

                  同一个信息在不同平台上被操作(同一账号下),信息同步

界面容错性:复杂操作会有说明提示、用户在执行有风险操作的时候有提示,或者把这些功能处理掉

环境容错性:网络、电源、服务器、无缝切换备用网络,电源或者服务器就能保证用户无感知

灾难恢复性测试:人为的让服务器或者服务器所依赖的环境发生故障,测试系统的自我修复能力

       1. 系统能不能恢复

       2. 系统碰到这些极端情况的时候,恢复系统功能和信息所需的时间用户能否接受

(四)文档测试

对软件开发过程中产生的文档(软件设计文档,流程图文档,功能分析文档,用户使用手册等)进行测试

主要测试文档的完整性、一致性、易用性、正确性、术语是否专业等

(五)兼容性测试

系统所在平台的兼容性

例如测试一个web系统,首先各种操作系统(Windows,iOS),不同的操作系统要测试,不同操作系统的版本要测试,浏览器要装在不同的操作系统上,需要测试不同的浏览器(Chrome、Firefox、edge、IE、360、搜狗、QQ浏览器)下网页是否可以正常展示和使用

【注】不同的浏览器内核不一样,对同一个页面的解析不一样

APP本身不同机型的不同操作系统(IOS,Android),不同操作系统的主流版本上进行测试 

iPhone  华为 oppo vivo...

兼容性测试在不同平台上测试的功能都是一样的,所以可以自动化测试

软件本身向前或向后的兼容性(软件是一期一期的迭代的,迭代功能要有兼容性)

软件和其他相关软件的兼容性(同一个手机上不同APP的第三方登录,使用微信登录,其微信昵称会同步)

数据兼容性:同一个软件上的数据兼容性

(六)易用性测试

用户体验性测试,遵循一定的易用性标准(经过前期积累经验,越来越符合人的使用习惯和使用需要)开发软件  

测试符合标准规范,直观性,灵活性,舒适性、实用性等

 软件的展示要和软件定位相关

(七)安装测试(卸载)

APP(应用商店、安装包、命令行)、系统(官网)的安装

APP、系统的卸载

安全性的测试

病毒,SQL注入、xSS OS攻击

木马病毒

(八)性能测试

为什么要进行性能测试?

  1. 能够快速的响应用户的请求(358原则:3s/5s/8s)
  2. 系统能够负载所需要的用户数量
  3. 能够处理系统所需要的事务数量
  4. 在负载和事务处理的高峰期,系统可以稳定运行
  5. 在系统能够处理的最高用户负载和用户数量的时候,用户可以获得良好的体验

测试哪些方面?

对资源的利用率(CPU、GPU、内存、硬盘、网络、电源、耗电量)

响应时间:用户发送请求到用户所期待的响应(页面、信息)展示出来

吞吐量:系统在单位时间处理的信息量(按字节算、按事务处理量计算,单位时间内处理的HTTP请求数计算)

日志的级别:info  debug   warn(警告)  error 

(九)内存泄漏测试

系统在使用一些内存的时候,没有及时的释放,无法释放,造成系统占用的内存越来越大,系统运行越来越慢,影响了它的APP的运行速度

造成内存泄漏的原因:分配了内存忘记回收;写法有问题导致分配的内存无法回收;错误的使用一些API造成内存无法回收

如何检查?静态测试;用一些专门的工具

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值