软件测试的分类
测试的目的:
用最少的人力、物力、财力和时间找到软件中的潜在错误(缺陷\bug)并修改,从而降低商业风险!
软件测试的定义:
使用人工或自动化手段对某个软件进行测试的过程,目的在于验证是否满足需求。
单元测试:是指对软件中的最小可测试单元进行检查和验证。C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。
集成测试:集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。前提单元测试已经通过
系统测试:系统测试是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。简单来说就是看成一个整体进行测试,主要包括功能测试、性能测试,软件所运行的软硬件环境下测试和健壮性测试(容错能力和恢复能力),前期测功能,后期测性能兼容性等
验收测试(交付测试):验收测试是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。有时候测试方式是冒烟测试来代替验收测试
α测试 内测版 内部人员自己测试,解决一些严重的bug
β测试 公测版 让用户免费下载使用,收集用户意见(使用性、外观),把多数人提的意见进行修改。
γ测试 上线版 正式版
界面测试:UI测试
白盒测试:测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。常用的软件测试方法有两大类:静态测试方法和动态测试方法。
灰盒测试:介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。
黑盒测试 不看程序内部结构和内部特性的测试,注重于测试软件数据驱动测试的功能需求,只关心软件的输入数据和输出数据, 包括功能测试和性能测试
功能测试:
逻辑功能测试
对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。
界面测试
对UI界面进行测试,分布是否合理,数据显示是否和数据库中一致
易用性测试
用户使用软件时是否感觉方便,比如是否最多点击鼠标三次就可以达到用户的目的。
安装测试
确保该软件在正常情况和异常情况的不同条件下,例如,进行首次安装、升级、完整的或自定义的安装都 能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可立即正常运行。
兼容性测试
检查软件之间能否正确地进行交互和共享信息。
性能测试 :
是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
时间性能: 事务响应时间,时间越短性能越高
空间性能: 系统消耗时间,消耗越少性能越高
一般性能测试 模拟平常的压力,模拟实际中日常的用户数进行操作。
稳定性测试 稳定性测试就测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标,不同环境不同场景是否都能稳定运行。
负载测试 测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
压力测试 (强度测试) 负载上的负载测试 压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。找到程序运行的瓶颈,例如100万人并发访问OK,持续多久就是压力, 说明负载100万人没问题但是强度不好说
容量测试 :确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
基准测试 :比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
静态测试
看文档找问题,不实际操作程序
动态测试
使用测试用例来检测程序
回归测试
是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
回归测试有两种:
1. 版本的迭代开发,每个版本都会测试。
2. 出现问题解决问题。
冒烟测试 两种方向理解
冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性
个人理解成对主要功能的测试,因为如果主要功能都没有通过那就不需要再继续测试。
随机测试(探索测试) 主要是根据测试者的经验对软件进行功能和性能抽查。
把程序中重要的部分和新功能部分,进行二次测试,保证程序的主体功能不出问题
人工测试: 手动测试
自动测试: 通过自动化工具或者代码完成的测试
web自动化: 驱动脚本自动执行测试
移动端自动化: APP自动化测试工具,脚本驱动
接口自动化: 通过工具的设置去测试接口