✏️作者:银河罐头
📋系列专栏:JavaEE
🌲“种一棵树最好的时间是十年前,其次是现在”
目录
- 按照对象划分
- 界面测试
- 可靠性测试
- 容错性测试
- 文档测试
- 兼容性测试
- 易用性测试
- 安装卸载测试
- 安全测试
- 性能测试
- 内存泄漏测试
- 按是否查看代码划分
- 黑盒测试
- 白盒测试
- 灰盒测试
- 按开发阶段划分
- 单元测试
- 集成测试
- 系统测试
- 回归测试
- 冒烟测试
- 验收测试
- 按测试实施组织
- α测试和β测试区别
- 第三方测试
- 按是否运行划分
- 静态测试
- 动态测试
- 按是否手工划分
- 手工测试
- 自动化测试
- 按测试地域划分
- 国际化测试
- 本地化测试
按照对象划分
界面测试
什么是界面?
用户肉眼看到的都是界面。
举例:web 站(通过浏览器打开的网站),APP,小程序,公众号。
用户和软件进行交互,都是通过界面和软件进行沟通的。
业界测试页面的时候,参考软件规格说明书,UI 视觉稿。
- 验证界面内容显示的完整性,一致性,准确性,友好性。比如界面内容对屏幕大小的自适应
- 验证整个界面布局和排版是否合理
- 对界面不同控件的测试,比如,对话框,文本框,滚动条,选项按钮等是否可以正常使用
- 界面的布局和色调符合当下时事的发展。(比如清明节灰色界面)
可靠性测试
可靠性(Availability)即可用性,是指系统正常运行的能力或者程度,一般用正常向用户提供软件服务 的时间占总时间的百分比表示。
可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)*100%
系统非正常运行的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的。
容错性测试
容错性测试是指系统能够处理异常,用户的错误操作而不至于系统崩溃,从而能够提高系统的可用性。
-
输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好,系统只给出提示或内 部消化掉,而不会导致系统出错甚至崩溃。
-
灾难恢复性测试。 通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失,系统和数据 是否能尽快恢复。
文档测试
测试文件,开发文件,产品文件。
兼容性测试
-
系统自身版本的兼容,用户已有数据的兼容
-
测试与应用环境的兼容性,比如操作系统
-
测试与第三方系统以及第三方数据的兼容性(比如假设手机上不能同时运行美团和饿了么)
易用性测试
1,标准性和规范性
2,直观性
3,灵活性
4,舒适性
安装卸载测试
软件不同的安装和卸载方式;
应用是否可以在不同的环系统,版本下安装(安装兼容性)
安装或者卸载过程中是否可以手动暂停,或者取消
安装空间不足的时候系统是否有提示
是否可以正常的卸载,以及应用软件的各种卸载方式
卸载和安装过程中出现环境问题,软件是否可以正常并且合理的应对,比如死机,断电,断网等
安全测试
输入域,如输入恶性或者带有病毒的脚本或长字符串;
代码中的安全性问题,如SQL/XML注入
不安全的数据存储或者传递
有问题的访问控制,权限分配等
性能测试
常见的性能问题如下: 资源泄露,资源瓶颈,线程死锁,线程阻塞,查询速度慢或效率低,受外部系统影响越来越大。
衡量一个系统性能好坏的关键性指标有,用户响应时间,事务平均响应时间(TPS),吞吐率,每秒点击次数,内存和CPU使用率等。
内存泄漏测试
造成内存泄露的原因有很多,最常见的有以下几种:
分配完内存之后忘了回收。
程序写法有问题,造成没办法回收(如死循环造成无法执行到回收步骤)。
某些API函数的使用不正确,造成内存泄露。
内存泄漏的检测方法:
人工静态法:代码走读,人工查找未被回收的内存。
自动工具法:借助相应测试内存泄漏的工具,如Visual Leak Detector,记录每次内存分配,清楚 告诉用户内存是如何泄漏的。
按是否查看代码划分
黑盒测试
黑盒测试就是在完全不考虑程序逻辑和内部结构的情况下,检查系统功能是否按照需求规格说明书的规定正常使用、是否能适当的接收输入数据而输出正确的结果,满足规范需求。 所以,黑盒测试又称之为数据驱动测试,只注重软件的功能。
优点:
不需要了解程序内部的代码以及实现,不关注软件内部的实现。
从用户角度出发设计测试用例,很容易的知道用户会用到哪些功能,会遇到哪些问题,锻炼测试人员的产品思维。
测试用例是基于软件需求开发文档,不容易遗漏软件需求文档中需要测试的功能。
黑盒测试的缺点是不可能覆盖所有代码。
黑盒测试用到的测试方法有,等价类,边界值,因果图,场景法,错误猜测法等。
白盒测试
白盒测试又称为结构测试或逻辑测试,它一般用来分析程序的内部结构,针对程序的逻辑结构来设计测试用例进行测试。
主要包含六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
优点:代码覆盖率较高。
缺点:业务功能覆盖较低。
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输 出、输入的正确性,同时也关注程序内部的情况。
按开发阶段划分
测试金字塔
单元测试
单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设 计的最小单位:模块。又称为模块测试
这里的模块指的是 Java 里的一个类。
测试阶段:编码后或者编码前(TDD)
测试对象:最小模块
测试人员:白盒测试工程师或开发工程师
测试依据:代码和注释+详细设计文档
测试方法:白盒测试
Java 中如何进行 单元测试?
Junit, TestNG
集成测试
集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口 及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。
测试阶段:一般单元测试之后进行
测试对象:模块间的接口
测试人员:白盒测试工程师或开发工程师
测试方法:黑盒测试与白盒测试相结合
系统测试
将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。
测试对象:整个系统(软、硬件)
测试人员:黑盒测试工程师
测试方法:黑盒测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
冒烟测试
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后由测试人员和开发人员进行冒烟测试,保证基本功能正常,不阻碍后续的测试。
如果冒烟测试通过,则测试人员开始进行正式的系统测试,如果不通过,则测试人员可以让开发人员重 新修复代码直到冒烟测试通过,再开始进行系统测试.
冒烟测试是在系统测试之前完成。
验收测试
验收测试是部署软件之前的最后一个测试操作。这是产品上线之前最后一个测试流程。
测试阶段:系统测试通过之后
测试对象:整个系统(包括软硬件)。
测试人员:主要是最终用户或者需求方。
测试依据:用户需求(软件规格说明书)、验收标准(测试人员写的)
测试方法:黑盒测试
按测试实施组织
α测试和β测试区别
环境:α测试是在公司内部进行测试,β测试环境不确定。
测试人员类型:α测试是公司内部人员,β测试测试人员是用户。
测试人员数量:α测试测试人员较少,β测试测试人员较多。
阶段:α测试是在β测试之前测试的。
测试周期:α测试测试周期较短,β测试测试周期较长。
第三方测试
介于开发方和用户方间的组织的测试。
按是否运行划分
静态测试
所谓静态测试(static testing)就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中 可能存在的错误的过程。
动态测试
动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果 和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序
大多数软件测试工作都属于动态测试。
按是否手工划分
手工测试
手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。
自动化测试
自动化测试按照测试对象来分,还可以分为接口测试、UI测试等。
接口测试的ROI(产出投入比)要比UI测试高。
按测试地域划分
什么是软件国际化?
是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,使创建不同语言版本时, 不需要重新设计源程序代码的软件工程方法。
国际化测试
本地化和国际化测试与其他类型的测试存在很多不同之处。
举例:日期、数字格式、货币等是否能适应不同国家的文化习俗。例如,中文是年月日,而英文是月日 年。