前言
这是初学者对软件测试学习的记录博客,如有错误,欢迎指正,如有同行者,希望共同探讨进步。
一、软件测试总体流程图
二、软件测试的分类
1、按技术划分:
-
黑盒测试:
注重程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。 -
白盒测试:
全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
与黑盒测试相反,在测试中,盒子是透明的,能看到内部结构以及里面是如何运行的。 -
灰盒测试:
介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部的运行状态。 -
自动化测试:
把以人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试步骤,通过执行程序语言编制的测试脚本自动驱动测试软件并给出测试结果,包括了所有测试阶段,它是跨平台兼容的,并且是进程无关的。
2、按开发阶段划分:
- 单元测试
单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 - 集成测试
集成测试是在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。集成测试是检验程序单元或部件的接口关系。 - 系统测试
对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方。这种测试可以发现系统分析和设计中的错误。 - 验收测试
部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
3、按是否执行程序划分
-
静态测试:
不运行程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来寻找程序代码中可能存在的错误或评估,程序代码的过程。 -
动态测试:
实际运行被测程序输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性,可靠性和有效性,并分析系统运行效率和健壮性的性能。
4、按测试类型划分
- 功能测试:
主要针对产品需求说明书对软件进行测试,验证软件功能是否符合需求,包括对原定功能的检验以及测试软件是否存在冗余功能、遗漏功能。 - 用户界面测试:
主要对系统的界面进行测试,测试用户界面是否友好,软件是否方便易用、系统设计是否合理、界面位置是否正确等问题。 - 兼容性测试:
测试软件产品在不同的平台、不同的工具软件或者相同工具软件不同的版本下的兼容性。 - 流程测试:
按操作流程进行测试,主要有业务流程、数据流程、逻辑流程、正反流程、检查软件在按流程操作时能否正常走通。 - 接口测试:
检查系统能否与外部系统或外部设备等是否接口正常。 - 安装卸载测试:
测试软件是否能正确安装、运行、卸载以及操作过程和操作前后对系统资源的使用情况(大多数情况下指的是对设备内存的影响)。 - 性能测试:
主要测试系统的性能是否满足用户需求,即在特定的运行条件下验证系统的能力状态。性能测试主要是通过自动化的测试工具模拟正常、峰值、异常负载状况、对系统的各项性能指标进行测试。 - 负载测试:
通过改变系统负载方式、增加负载等来发现系统中所存在的性能问题 - 压力测试:
通常是在高负载情况下来对系统的稳定性进行测试,更有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐患等。 - 容量测试:
使测试对象处理大量的数据,以确定是否达到了将使软件发生故障的极限。 - 可靠性测试 :
对软件的稳定性、容错性、易恢复性的测试。 - 安全性测试:
检查系统安全、是否达到安全需求,是否存在安全隐患。
注:现有的测试方法有很多,包括但不限于以上列举内容,我这里只是举了一些典型例子进行说明。