软件测试基本概念

1、测试概述

本文彻底参考 https://www.cnblogs.com/lihou...
  • 软件测试是为了发现错误而执行程序的过程
  • 软件测试的基本原则是尽早地和不断地进行软件测试
    clipboard.png

2、测试分类

一、根据测试方法划分

1.1 黑盒测试

把被测的软件看做是一个黑盒子,咱们不去关心盒子里面的结构是什么样子的,只关心软件的输入数据和输出结果。html

它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。数据库

采用黑盒技术设计测试用例的方法有安全

  • 等价类划分
  • 边界值分析
  • 错误推测
  • 因果图
  • 综合策略

1.2 白盒测试

把盒子盖子打开,去研究里面的源代码和程序结果。网络

它是按照程序内部的结构测试程序,经过测试来检测产品内部动做是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都可以按预约要求正确工做。数据结构

1.3 灰盒测试

介于黑盒与白盒测试之间并发

能够这样理解,灰盒测试关注输入对于输出的正确性,同时也关注内部表现,但这种关注不像白盒那样详细、完整,只是经过一些表征性的现象、事件、标志来判断内部的运行状态。有时候输出是正确的,但内部其实已经错误了,这种状况很是多,若是每次都经过白盒测试来操做,效率会很低,所以须要采起这样的一种灰盒方法。工具

二、根据测试流程/开发阶段划分

  • 单元测试性能

    • 对软件中的基本组成单位进行的测试
    • 目的是检验软件基本组成单位的正确性
  • 集成测试单元测试

    • 在系统集成过程当中所进行的测试
    • 目的是检查软件单位之间的接口是否正确
  • 系统测试测试

    • 对已经集成好的软件系统进行完全的测试
    • 目的是验证软件系统的正确性和性能等是否知足规约指定的要求
  • 验收测试

    • 部署软件以前的最后一个测试操做
    • 目的是确保软件准备就绪,向软件购买者展现该软件系统知足其用户的要求

2.1 单元测试阶段

模块接口测试
经过所测模块的数据流进行测试。调用所测模块时的输入参数与模块的形式参数的个数、属性和顺序是否匹配。

局部数据结构测试
是为了保证临时存储在模块内的数据在程序执行过程当中完整、正确,模块的局部数据结构每每是错误的根源。

路径测试
是指对模块中重要的执行路径进行测试。

错误处理测试
比较完善的模块设计要求能预见出错的条件,并设置适当的出错处理,以便一旦程序出错时能对出错程序从新安排,保证其逻辑上的正确性。

边界条件测试
大量的错误是发生在输入或输出的边界上。所以针对各类边界状况设计测试用例,能够查出更多的错误。

2.2 集成测试阶段

在集成测试中,咱们主要关注如下内容:

  • 把各个模块链接起来,穿越模块接口的数据是否会丢失。
  • 各个子模块组合起来,可否达到预期要求的功能。
  • 一个模块的功能是否会对另外一个模块的功能产生不利影响。
  • 全局数据结构是否有问题。
  • 单个模块的偏差积累起来是否会被放大,从而达到不可接受的程度。

2.3 系统测试阶段

通常系统的主要测试工做都集中在系统测试阶段。根据不一样的系统所进行的测试种类也不少,例如:

  • 功能测试,是对产品的各功能进行验证,以检查是否知足需求的要求。
  • 性能测试,是经过自动化测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能进行测试。
  • 安全测试,检查系统对非法入侵的防范能力。
  • 兼容测试,主要是测试系统在不一样软硬件环境下可否正常的运行。

2.4 验收测试阶段

  • 功能确认测试
  • 安全可靠性测试
  • 兼容性测试
  • 易用性测试
  • 可扩充性测试
  • 资源占用率测试
  • 用户文档资料验收

3. 根据测试的侧重划分

3.1 功能测试

功能测试检查实际的功能是否符合用户的需求。

功能测试又能够细分为不少种:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试等。

功能测试
在规定的一段时间内运行软件系统的全部功能,以验证这个软件系统有无严重错误。

易用性测试
从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。

安装测试
安装测试的目的不是找软件错误,而是找安装错误。

兼容性测试
这类测试主要想验证软件产品在不一样版本之间的兼容性。有两类基本的兼容性测试:

  • 向下兼容,测试软件新版本保留它早期版本的功能
  • 交错兼容,验证共同存在的两个相关但不一样的产品之间的兼容性

恢复测试
证明在克服硬件故障(包括掉电、硬件或网络出错等)后,系统可否正常地进行工做,并不对系统形成任何损害。为此,可采用各类人工干预的手段,模拟硬件故障,并由此检查:

  • 错误探测功能(系统可否发现硬件失效或故障)
  • 可否切换或启动备用的硬件
  • 在故障发生时可否保护正在运行的做业和系统状态
  • 在系统恢复后可否从最后记录下来的无错误状态开始继续执行做业等

若是系统的恢复时自动的(由系统自身执行),则应对从新初始化、数据恢复、从新启动等逐个进行正确性评价。若是恢复须要人工干预,就须要对恢复的平均时间进行评估以及判断它是否在容许的范围以内。

文档测试
检查用户文档(如用户手册)的清晰性和精确性。确保叙述正确无误。

可支持性测试
验证系统的支持策略对于公司与用户方面是否切实可行。它所采用的方法是试运行支持过程(如对有错部分打补丁的过程等),对其结果进行质量分析,评审诊断工具、维护或称、内部维护文档;衡量修复一个明显错误所需的平均最少时间。还有一种经常使用的方法是,在发行前把产品交给用户,向用户提供支持服务的计划,从用户处获得对支持服务的反馈。

互连测试
验证两个或多个不一样的系统之间的互连性。这类测试对支持标准规格说明或承诺支持其余系统互连的软件系统有效。

3.2 性能测试

性能测试是经过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

软件的性能包括不少方面,主要有时间性能和空间性能两种。

  • 时间性能,主要是指软件的一个具体的响应时间。好比一个登录所需的时间,一个交易所须要的时间等。
  • 空间性能,主要指软件运行时所消耗的系统资源。好比硬件资源、CPU、内存、网络带宽消耗等。

性能测试方法是经过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否知足生产性能要求。通俗地说,这种方法就是要在特定的运行条件下验证系统的能力状态。性能测试特色以下:

  1. 主要目的是验证系统是否有系统宣称具备的能力
  2. 要事先了解被测试系统经典场景,并具备肯定的性能目标
  3. 要求在已经肯定的环境下运行。

也就是说,这种方法是对系统性能已经有了了解的前提并对需求有明确的目标,并在已经肯定的环境下进行的。

负载测试
经过在被测系统上不断加压,直到性能指标达到极限。

这种方法是对一个系统持续不断地加压,看你在何时已经超出“个人要求”或系统给崩溃。

  1. 主要目的是找到系统处理能力的极限。
  2. 须要在特定的测试环境下进行,一般也须要考虑北侧是系统的业务压力量和典型场景、使得测试结果具备业务上的意义。
  3. 通常用来了解系统的性能容量或是配合性能调优来使用。

压力测试
测试系统在必定饱和状态下(例如cpu、内存在饱和状况下)可以处理的会话能力,以及系统是否会出现错误。

也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。

  1. 主要目的是检查系统处于压力性能下时,应有的表现。
  2. 通常经过模拟负载等方法,使得系统的资源使用达到较高水平。
  3. 通常用于测试系统的稳定性。

配置测试
配置测试方法经过对被测系统的软硬件环境的调整,了解各类不一样配置对系统性能影响的程度,从而找到系统各项资源的最优分配原则。

这种测试关注点是“微调”,经过对软硬件的不断调整,找出它们的最佳状态,使系统达到一个最强的状态。

  1. 主要目的是了解各类不一样因素对系统性能影响的程度,从而判断出最值得进行的调优操做。
  2. 通常在对系统性能情况有初步了解后进行。
  3. 通常用于性能调优和规划能力。

可靠性测试
在给系统加载必定业务压力的状况下,使系统运行一段时间,以此检测是否稳定。

这种测试的关注点是“稳定”,不须要给系统太大压力,只要系统可以长期处于一个稳定的状态。

  1. 主要目的是验证是否支持长期稳定的运行。
  2. 须要在压力下持续运行一段时间(2~3天)。
  3. 测试过程当中须要关注系统的运行情况。

测试容量
经过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。

并发测试
经过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其它性能问题。

这种测试关注点是多个用户同时(并发)对一个模块或操做进行加压。

  1. 主要目的是发现系统中可能隐藏的并发访问时的问题。
  2. 主要关注可能存在的并发问题,例如系统中的内存泄漏、线程死锁和资源争用方面的问题。
  3. 能够在开发的各个阶段使用须要相关的测试工具的配合和支持。

四、根据测试是否使用自动化工具划分

4.1 手工测试

手工测试就是由人去一个一个地去执行测试用例,经过键盘鼠标等输入一些参数,查看返回结果是否符合预期结果。

4.2 自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。一般,在设计了测试用例并经过评审以后,由测试人员根据测试用例中描述的规程一步步执行测试,获得实际结果与指望结果的比较。在此过程当中,为了节省人力、时间或硬件资源,提升测试效率,便引入了自动化测试的概念。

自动化测试:又可分为功能自动化测试与性能自动化测试。

咱们通常所说的自动化测试就是指功能自动化测试,经过相关的测试技术,经过编码的方式用一段程序来测试一个软件的功能,这样就能够重复执行程序来进行重复的测试。若是一个软件一小部分发生改变,咱们只要修改一部分代码,就能够重复的对整个软件进行功能测试。这样就大大的提升了测试效率。

性能自动化测试,除了早期阶段,如今的性能测试工做都是经过性能测试工具辅助完成的。能过工具能够模拟成千上万的用户向系统发送请求,用来验证系统的处理能力。

五、其它测试方法

5.1 冒烟测试

是指在对一个新版本进行系统大规模地测试前,先验证一下软件的基本功能是否实现,是否具有可测试性。

引入到软件测试中,就是指测试小组在正规测试一个新版本以前,先投入较少的人力和时间验证一个软件的主要功能,若是主要功能都没有实现,则打回开发组从新开发。这样作的好处是能够节省大量的时间成本和人力成本。

5.2 回归测试

是指修改了旧代码后,从新执行测试以确认修改后没有引入新的错误或致使其它代码产生错误。

回归测试通常是在进行软件的第二轮测试开始的,验证第一轮中发现的问题是否获得修复。固然,回归也是一个循环的过程,若是回归的问题通不过,则须要开发人员修改后再次进行回归,直到经过为止。

5.3 随机测试

是指测试中的全部输入数据都是随机生成的,其目的是模拟用户的真实操做,并发现一些边缘性的错误。

随机测试能够发现一些隐蔽的错误,可是也有不少缺点。好比测试不系统,没法统计代码覆盖率和需求覆盖率,发现的问题难以重现。通常是放在测试的最后执行。其实随机测试更专业的升级版叫探索性测试。

探索性测试是一种测试思惟技术。它没有不少实际的测试方法、技术和工具,可是倒是全部测试人员都应该掌握的一种测试思惟方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

5.4 安全性测试

安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。

安全测试也在愈来愈受到企业的关注和重视,由于因为安全性问题形成的后果是不可估量的。尤为对于互联网产品最容易遭受各类安全攻击。

5.5 场景测试

针对用户需求内容的测试,称之为场景测试。场景测试首先在系统测试阶段测试经过,而后在用户确认阶段,由用户执行场景测试来进行产品验收。

要作到场景测试,实际上须要从需求开始作起。需求与用户沟通,确认用户的实际场景,而后分析这些场景,并据此设计出产品的解决方案,获得用户使用产品的应用场景,并排列出优先级;而后开发根据场景优先级开发出产品;最后测试根据场景优先级进行测试,并结合软件实际状况,给出拓展场景,给出使用说明,推荐给用户使用。

5.6 辅助功能测试

软件辅助功能测试是指软件测试是否向残疾用户提供足够的辅助功能。

5.7 本地化/全球化测试

确保应用程序的世界通用性须要三个测试阶段:全球化测试、可本地化测试和本地化测试。

  • 全球化测试

    • 确保应用程序在任何区域性或区域设置中都能正常运行
  • 可本地化测试

    • 验证能够轻松地将程序的用户界面翻译成任何目标语言
  • 本地化测试

    • 检查特定目标区域性或区域设置的产品本地化的质量

3、中英文对照表

中文 英文
单元测试 Unit Test
集成测试 Intergration Test
系统测试 System Test
验收测试 Acceptance Test
功能测试 Function Test
易用性测试 Usability Test
安装测试 Installation Test
兼容性测试 Compatibility Test
恢复测试 Recovery Test
文档测试 Documentation Test
可支持性测试 Supportability Test
互连测试 Interoperability Test
负载测试 Load Test
压力测试 Stress Test
配置测试 Configuration Test
可靠性测试 Reliability Test
容量测试 Volume Test
并发测试 Concurrency Test
冒烟测试 Smoke Test
回归测试 Regression Test
随机测试 Ad-hoc Test
安全性测试 Security Test
场景测试 Scenario Test
辅助功能测试 Accessibility Test
本地化/全球化测试 Localization/Globalization Test

4、参考连接

相关文章
相关标签/搜索