目录
一、测试金字塔
二、按照开发阶段划分
1、单元测试
2、集成测试
3、系统测试
4、验收测试
三、按照测试的实施组织划分
1、α测试
2、β测试
3、第三方
四、按照是否运行划分
1、静态测试
2、动态测试
五、按照是否手工划分
1、手工测试
2、自动化测试
六、按照是否查看代码划分
1、黑盒测试
2、白盒测试
3、灰盒测试
七、按照测试对象划分
1、业务测试
2、界面测试
3、容错性测试
4、文档测试
5、兼容性测试
6、易用性测试
7、性能测试
8、安装、卸载测试
9、安全性的测试
10、内存泄漏测试
八、按照测试地域划分
1、国际化测试
2、本地化测试
一、测试金字塔
1、每层的含义
(1)ui界面层就是界面测试;同一个系统不同层面的测试。
(2)业务逻辑层就是业务测试;主要是接口的测试,一个接口需要不同的方法组合在一起才能实现这个接口的具体功能。
(3)数据处理层就是单元测试;测试系统或者程序的最小单元,一般是具体功能的方法(代码)。
2、测试金字塔的特点
(1)越往上测试投入产出比越低;
(2)越往上测试效率越低;
(3)越往上测试定位问题越困难;(所以测试的时候主要精力都是在单元测试上)
二、按照开发阶段划分
单元测试、集成测试、系统测试、验收测试
1、单元测试
单元测试就是对系统或者程序的最小的功能单元进行测试;一般指一个具体功能的测试方法。
(1)测试阶段(时间):编码后;编码前(TDD)(TDD指的是测试驱动开发,先写好测试用例,再写代码);
(2)测试对象:程序中最小的单元;
(3)测试依据:详细设计文档和代码注释;
(4)测试方法:白盒测试;
(5)测试人员:开发人员或者白盒测试人员;
(6)测试内容:方法参数(类型,个数,顺序)、路径(if else)、异常、边界、局部数据结构;
2、集成测试
把单元模块按照一定的策略组合起来形成一个大的功能模块,对这个功能模块进行测试。
(1)测试阶段:单元测试之后;
(2)测试对象:模块间的接口;
(3)测试人员:黑盒测试工程师/白盒测试工程师;
(4)测试依据:单元测试的模块+概要设计文档;
(5)测试方法:灰盒测试;
(6)测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响;
3、系统测试
将软件系统看成是一个系统的测试。包括对功能、性能、环境等的测试。时间大部分在测试执行阶段,包括回归测试和冒烟测试。
(1)测试阶段:集成测试通过之后;
(2)测试对象:整个系统(软、硬件)
(3)测试人员:黑盒测试工程师;
(4)测试依据:需求规格说明书;
(5)测试方法:黑盒测试;
(6)测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全等;
回归测试和冒烟测试属于系统测试:
回归测试:增加新功能、修改BUG时、对程序引入新的代码的时候,除了要看修改后的旧代码,还有要看新引入的代码对旧代码功能有没有影响。
(为了提高效率,采用自动回归测试将大幅降低系统测试、维护升级等阶段的成本。)
冒烟测试:在测试人员正式介入测试之前,测试人员或者开发人员要对系统的主要功能或者核心的流程进行测试。
4、验收测试
用户来对系统进行全面测试,按照项目合同、任务书、双方约定的验收依据文档进行测试;
(1)测试阶段:系统测试之后;
(2)测试对象:整个系统(包括软硬件);
(3)测试人员:主要是最终用户或者需求方;
(4)测试依据:用户需求、验收标准;
(5)测试方法:黑盒测试;
(6)测试内容:与系统测试相同;
三、按照测试的实施组织划分
α测试、β测试、第三方
1、α测试
α测试就是在开发环境下,让非开发人员和非测试人员来进行系统的测试(例如:手机出厂前最后一次测试,开发和测试人员不参与)。
2、β测试
β测试是一种验收测试。β测试由软件的最终用户们在一个或多个场所进行。(例如:新手机购买回来,参与测试的人是购买者,使用的场所及环境已不再是厂商的环境及场所)。
α测试与β测试的区别:
测试场所不同:α测试在开法方的场所;β测试在一个或多个用户的场景进行测试。
测试环境不同:α测试环境受开发方控制,用户少,时间集中;β测试环境不受开发方限制,用户多,时间不集中。
α测试要先于β测试,测试周期比较长。
3、第三方
第三方是第三方软件测评机构按照一定的标准规范进行软件测试。是介于开发方和用户方间的组织的测试。
四、按照是否运行划分
静态测试和动态测试
1、静态测试
不运行代码,检查(代码走向,code review),看代码的书写规范,风格是否符合公司标准,看代码的逻辑结构、功能是否符合需求。
测试的依据:静态质量:即功能性 (Functionality)、可靠性(Reliability)、可用性(Usability)、有效性(Effiffifficiency)、可维护性(Maintainability)、可移植性(Portability)。
2、动态测试
指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。
这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。 包括手工或者自动化脚本之类的测试。
五、按照是否手工划分
手工测试和自动化测试
1、手工测试
由人去一个一个的输入用例,然后观察结果。
- 优点:可以探索性的测试;具有一定的灵活性,可根据实际情况随时改变测试思路。
- 缺点:效率低,量大容易出错。
2、自动化测试
简单说就是把以人为驱动的测试行为转化为机器执行的一种过程。
- 优点:效率高,不会出错,除非机器本身的故障。
- 缺点:只有功能比较稳定的系统适合自动化测试。
六、按照是否查看代码划分
黑盒测试、白盒测试、灰盒测试
1、黑盒测试
不关注软件内部的结构,逻辑,代码的实现,只关心输入和输出,看相应的输入是否对应着和需求一致的输出。
黑盒测试的设计用例的方法:等价类、边界值、因果图、场景法、错误猜测法、正交法。
2、白盒测试
主要测试系统内部的逻辑结构是否符合要求,关注代码实现功能,对代码进行测试。
白盒测试的框架:Junit框架。
白盒测试的方法:语句覆盖、路径覆盖、条件覆盖、判定覆盖、条件组合覆盖、判定组合覆盖。
3、灰盒测试
介于黑盒测试和白盒测试之间;多用于集成测试。
七、按照测试对象划分
业务测试、界面测试、容错性测试、文档测试、兼容性测试、易用性测试、安装测试、安全测试、性能测试、内存泄露测试
1、业务测试
就是根据需求的设定,把不同的功能点按照一定的策略组合起来,形成一个业务流;利用场景法模拟用户实际操作的流程来进行测试。
2、界面测试
测试用户界面的功能模块的布局是否合理、整体风格是否一致、各个控件的放置位置是否符合需求;
还要测试界面操作便捷性、导航简单易懂性、页面元素的可用性、界面文字是否正确、页面是否美观、文字、图片组合是否完美等。
3、容错性测试
容错性测试就是检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段。系统出错时,能否在指定时间内修正错误并且重新启动。
数据级别的容错性:限制输入长度;限制输入大小等;
校验级别:输入框前后空格自动去除;大小写不敏感;填写信息前后不一致提交有提示;
界面级别:下拉框;复杂操作提供提示;
环境级别:断电,断网,服务器瘫痪,要有备选方案。
4、文档测试
文档的术语、正确性、完整性、一致性、易用性。
5、兼容性测试
兼容性主要是指软件之间能否很好的运作,会不会有影响、软件和硬件之间会不会影响导致系统的崩溃。
1)系统的兼容性:包括Web系统和App系统。
(1)Web系统中,不同浏览器的不同版本上是否都可以正常使用;
(2)App系统中,不同的手机系统以及不同品牌的手机上是否可以正常使用。
2)系统本身的兼容性
系统本身前后的兼容性:系统本次迭代的功能不能影响系统之前的功能,也不能影响系统以后新增的功能。
3)系统和其他相关软件的兼容性
不同软件之间有些是有关联的;
例如:不是腾讯系列的APP,但却可以用微信或者QQ直接登录;这是通过开发者文档:接口 实现的。
4)数据的兼容性
不同软件之间也可以共享数据;
例如:淘宝可以用支付宝支付,淘宝的物流信息,支付宝也可以看到。
为什么要测试系统在浏览器上的兼容性?
因为不同浏览器内核不一样,解析出来的前端代码就不一样,所以在不同浏览器上显示的效果就不一样。
6、易用性测试
软件满足用户使用的标准和规范,满足用户的使用习惯,使得用户使用软件的时候更加方便,得心应手;
(1)直观性:用户能够第一眼看到自己想要的操作;
(2)灵活性:给不同的用户群体提供不同的使用功能的方式;可能会带来系统设计的复杂性,两者之间做一个平衡;
(3)实用性:系统的功能和系统的设计关联;系统本身的功能和展示给用户的画面、信息一致。
(4)适用性:面向一类用户群体的系统要适用于这类用户群体。
7、性能测试
检查系统是否满足需求规格说明书中规定的性能。
1)系统是否可以快速响应用户的请求;在系统使用的用户高峰期,系统是否可以处理所有的用户请求;系统使用高峰期,系统是否可以正常运行并且处理请求;系统可以处理预期事务的数量。
2)进行性能测试主要看的指标:响应时间、每秒事务处理数(吞吐量TPS)、点击率(HPS)、对资源利用的精确度量等;
3)系统的软硬件配置会对系统性能的影响。
8、安装、卸载测试
1)不同安装方式的测试:
(1)用户:应用商店、安装包、第三方、扫码...
(2)测试人员:命令行安装(adb)、软件包安装(apk、ipa)测试包
(2)不同卸载方式的测试
利用相关管理软件卸载、系统自带、设置中卸载...
9、安全性的测试
SQL注入、Xss注入、防攻击、放爬虫、防病毒等
SQL注入:就是恶意用户通过在web表单中填写包含有关SQL关键字的数据来使数据库执行非常规代码的过程。
10、内存泄漏测试
在设计系统的时候,内存分配好之后没有及时释放、或者由于错误的使用一些API函数(应用程序接口),导致无法释放内存,系统就会运行越来越慢,直到崩溃。
1)导致内存泄露的原因(一般都是代码级别的):
分配内存,忘记回收;分配内存的方式有问题,造成内存无法回收的情况;API函数使用不正确,导致内存无法回收;
2)防止内存泄露:走查代码、使用工具进行检测。
八、按照测试地域划分
国际化测试、本地测试
1、国际化测试
软件在进行设计开发的时候使用了一种工程技术可以使软件在适用不同的国家语言或者风俗习惯的时候不需要改变源码,可以直接转换使用。
2、本地化测试
软件进行本地化后的版本就是本地化测试的对象,测试内容就是之前说到的不同方面的测试。