测试分类
- 按照测试目标进行
- 按照测试执行方式
- 按照测试方法
- 按照测试阶段
- 是否手工测试
-
- [手工测试(Manual testing)](#手工测试(Manual testing))
- [自动化测试(Automation Testing)](#自动化测试(Automation Testing))
- 按照实施组织划分
-
- [α测试(Alpha Testing)](#α测试(Alpha Testing))
- [β测试(Beta Testing)](#β测试(Beta Testing))
- 第三方测试
- 按照测试地域划分
软件测试是软件生命周期中一个重要环节,具有复杂性,可以从不同角度加以分类,多角度保证产品质量
按照测试目标进行
界面测试
软件只是一种工具,软件与人进行交互通过界面进行的 ,因此界面的设计决定了用户对这个软件的第一印象,因此好的界面就可以吸引用户,设计合理的页面是很重要的
界面测试(UI测试),按照界面需求 (一般是UI设计稿)和界面设计原则
1 验证页面内容显示的完整性、一致性、准确性、友好性。像页面是否将内容正常显示,界面内容是否可以自适应屏幕大小
2.界面整个布局和排版是否合理,字体设计和图片展示是否合理
3.界面上一些组件是否有效,像文本框,滚动条,选项按钮等是否可以正常使用
4界面颜色是否符合当前趋势(大众喜欢)
............
期望的UI图

开发出来的界面,此时这里要的是百度一下,结果这里开发成百度二下,并且这个按钮颜色也不符合要求

功能测试
对产品各功能进行进行验证,根据功能测试用例,每项都进行测试,检查产品是否达到用户需求的功能
根据产品特性、操作描述和用户方案,测试一个产品特性和可执行操作是否满足设计需求
如何进行呢?
先编写测试用例,参考产品规格说明书编写(需求文档),采用黑盒测试用例的方法,像:等价类法、边界值法、判定表法、正交法、场景法、错误猜测法等
性能测试
大量并发功能是否正常 和 响应时间是否符合预期
打开一个软件时候,可能会存在打不开,或者打开越来越慢,需要很长的时间打开
需要先对产品性能进行分析,基于系统性能需求和系统框架完成性能测试设计和执行,最后进行持续性能调优
可靠性测试
可靠性即可用性,是系统正常运行的能力,一般是服务器正常运行时间占总时间的百分比
可靠性 = 正常运行时间 /总时间 (正常运行时间 + 非正常运行时间) * 100%
可用性指标一般要达到 4 / 5个 9 ,99.99% / 99.999%
比如一个全年运行的服务器,一年365天 525600分钟
如果指标是99.99% ,那服务器不可用时间是 52.56分钟
如果指标是99.999%,那服务器全年不可用时间是 5.256分钟
不同的应用系统要求不一样,非实时性的系统一般要求相对没有这么高,但是一些实时要求就比较高
安全性测试
安全性是指信息安全,计算机系统和网络保护用户数据隐私 ,保证数据正常传输可以抵御病毒和别人的恶意攻击
1.输入文本框中输入恶意或者带有病毒的长字符串
2.代码中存在SQL注入问题
3.不安全数据进行传输
4.访问权限是否出现越权问题
5.对数据进行恶意修改,破坏数据等等
..................
易用性测试
产品不仅要功能方面正常,产品关注用户体验,用户使用舒适,易用体验 ,这些方面统称为易用性测试
主要包含七个因素:符合标准和规范、直观性、一致性、灵活性、舒适性、正确性和实用性
1.符合标准和规范 和一致性
现有软件,其实UI标准已经不知不觉被确认了,多数软件已经习惯并且接受了这些标准和规范,像一些软件类似功能通常显示东西大体都是一致的
所有应用各种信息都符合一定的规范和习惯 ,这样用户使用各种应用比较习惯和舒适
2.直观性
用户界面的直观性,软件清晰易懂。界面布局合理,对操作一些响应应该在用户预期之中
3.灵活性
软件中可以有一些特殊的设定来满足不同用户的需求,但是不可以太灵活,太灵活软件复杂度较高,程序实现和维护成本高
4.舒适性
主要是界面友好,美观,操作正常且流畅,虽然主要是考虑大众,但是也要照顾少数人
按照测试执行方式
静态测试
静态测试就是不实际运行被测软件,只是静态的看程序代码、界面和文档 是否出现错误
不以测试数据的执行对测试对象分析过程,只是通过检查源代码的设计、内部结构、代码风格等检查程序的正确性
动态测试
执行被测数据,输入测试数据,检查实际输出结果和预期结果是否相符
大多数软件测试都是动态测试
按照测试方法
白盒测试
白盒测试(逻辑测试或结构测试)目的主要是通过检查软件内部逻辑结构 ,对逻辑路径中语句进行测试,在一些地方设置检查点,检查程序的状态,判定实际结果和预期结果是否一致
静态测试 :桌面检查、代码审查、代码走查、代码扫描工具
动态测试 :语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖
例如对这个伪代码进行动态测试

语句测试:每个语句至少执行一次 ,都要执行
T表示真,F表示假
A and B,A和B都为T
C or D,至少有一个为T即可
参考用例:A、B、C为T,D为F
............只要符合要求的都可以是测试用例
判定覆盖,if语句要么为真,要么为假
| if语句 | T or F | 成立条件 |
|---|---|---|
| A and B | T | A 和 B都为T |
| C or D | T | C和D至少一个为真 |
| A and B | F | A和B至少一个为假的 |
| C or D | F | C和D为F |
用例1:A = B = T C = T D = F判定条件都为真
用例2:A = T B = F C = F D = F判定条件都为假
条件覆盖 条件全为真/假
A T F
B T F
C T F
D T F
用例1:A = B = C = D = T
用例2:A = B = C = D = F
判定条件覆盖
判定覆盖和条件覆盖结合
判定覆盖是if所有语句 要么全为真要么全为假
条件覆盖是所有条件 要么全为真要么全为假
此时着这种情况结合
用例1:A = B = C = D = T
用例2:A = B = C = D = F
条件组合覆盖
同一个判定里条件进行组合

每一行都是一个测试用例,这里一共有4个测试用例
路径覆盖
以这个为例
语句1和语句2同级
语句3和语句4不是同级

if(x>0 && y>0)判定:P1
if(z<0)判定:P2
x>0:C1
y>0:C2
z<0:C3

| C1 | C2 | C3 | P1 | P2 | 路径 |
|---|---|---|---|---|---|
| T | T | T | T | T | a-b-d-f |
| F | T | T | F | T | a-c-d-f |
| T | T | F | T | F | a-b-e-f |
| F | F | F | F | F | a-c-e-f |
白盒测试主要是用于单元测试阶段
黑盒测试
黑盒测试是完全不考虑程序逻辑,检查功能是否符合需求文档中正常使用 ,是否可以正常接收输入数据和而输出正确结果,只注重软件功能
优点 :不需要了解程序内部代码及其实现,不关注软件内部功能
缺点:是不可能覆盖所有代码
灰盒测试
介于白盒测试和黑盒测试之间,主要是在集成测试中,既关注输入输出、又关注内部实现
单元测试(白盒测试) ------》集成测试(灰盒测试) ------》系统测试(黑盒测试)
按照测试阶段
单元测试
针对最小单元进行测试,主要是白盒测试,这里最小单元是人为规定的
测试内容 :模块接⼝测试、局部数据结构测试、路径测试、错误处理测试、边界测试
依据:详细设计文档 + 代码注释
集成测试
将一些模块组合起来,对其接口及其集成后功能是否正确测试,主要是这些模块接口是否正确
主要内容 :模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模缺陷对系统影响
依据:单元测试 + 概要设计文档
系统测试
对系统进行整体测试,验证系统功能性和非功能性
测试内容 :功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等
依据:需求规格说明⽂档
冒烟测试
这⼀术语源⾃硬件⾏业。对⼀个 或硬件组件进⾏更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试

冒烟测试是第一步,检测系统/程序是否具备可测试性 ,主要是确定软件主要功能和核心流程正常运行
只有当冒烟测试通过也就是可以进行测试,才可以进行系统测试,反之将系统打回
回归测试
回归测试是指修改了旧代码后,重新进行测试确定修改后没有引入新的问题 ,因为修改可能会导致以前功能出现错误
软件是需要不断更新迭代的因此这个在软件测试过程中工作量占很大比重,随着不断迭代,回归测试成本越来越大
因为回归测试需要反复进行,测试者需要重复完成相同测试(每次版本更新只是增加一个功能或者修复一个bug),这样是十分繁琐的,因此通过自动测试实现重复和一致的回归测试,通过自动化测试可以提高回归测试效率,但是大多数测试需要手工来完成
回归测试
阶段:通常在软件开发早期验证基本功能是否正常工作
目的:确保软件主要功能正确,才可以及逆行后续详细的测试
回归测试阶段:软件开发后期,通常是代码修改或新增功能
目的:防止已有功能因为代码修改而出现问题
验收测试
针对用户需求,对系统测试后的软件进行交付性测试
目的 :确保系统符合验收标准,是否符合软件的原始需求,用户或相关机构是否可以接受系统
阶段:通常是部署软件的最后一个测试,也称为交付测试
是否手工测试
手工测试(Manual testing)
手工测试是手动一个一个测试用例输入,观察结果和预期结果进行对比
自动化测试(Automation Testing)
自动化测试是把认为驱动测试行为转化成机器,自动化测试比如:功能测试、性能测试自动化、安全测试自动化。
手工测试
优点 :对测试人员技术相对没有自动化测试高,可以发散性测试
缺点 :效率低,时间成本相对较高
自动化测试
优点 :提高效率,节约时间成本,保证软件质量
缺点:测试人员需要自动化相关技术,不能发散性测试(程序是固定的)
按照实施组织划分
α测试(Alpha Testing)
α测试又称为内测,通常是公司内部的用户模拟实际操作环境进行测试
目的:评估产品的功能、可用性、性能和支持等等
β测试(Beta Testing)
β测试⼜称为公测,通常是部分最终用户使用,他们可以在任意场合使用,通常是通过短信发送验证码邀请用户体验项目新功能,来进行测试
目的:通过最终用户进行测试软件是否存在问题
α测试β测试对比
测试场所不同 :α测试通常是公司内部,β测试通常是用户环境下进行测试α测试 的环境开发者是可以控制 的,用户数量少,时间比较集中 ,β测试是线下环境是不受开发者影响 ,数量较多,时间不集中
测试时机不同 :通常是先进行α测试,再进行β测试
测试时间不同:通常是α测试没有β测试时间长
第三方测试
第三方测试通常是一些第三方公司或组织进行测试活动
通过第三方测试可以让软件尽快上线,节约时间成本
按照测试地域划分
按照测试地域划分,⼀般会将测试划分为国际化测试 和本地测试
软件国际化 :就是测试⼈员需要测试软件在不同语⾔和地区是否能正常⼯作
国内

国际

像拼多多,在国外Temu,两个软件是服务于不同用户
国际测试:国外Temu 页面布局、时间、日期、货币、数字格式 等等都要符合国外一些习惯
本地测试:前面都是本地测试