当前位置:首页 > 软件测试 > 正文内容

[软件测试] 第一部分 软件测试基础

概念与定义

  1. 软件危机:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

  2. 软件测试(IEEE1983):软件测试是使用人工和自动手段来运行或测试某个系统的过程,目的在于检验被测软件系统是否满足规定的需要,或是弄清楚预期结果与实际结果之间的差别。

  3. 软件缺陷(Ron Patton在《软件测试》一书中提出):只有至少满足下列五个规则之一,才称发生了一个软件缺陷。

    1. 软件未实现产品说明书要求的功能;

    2. 软件出现了产品说明书指明不应该出现的错误;

    3. 软件实现了产品说明书未提到的功能;

    4. 软件未实现产品说明书虽未明确提及但应该实现的目标;

    5. 软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。

  4. 软件缺陷(IEEE729-1983标准的定义)

    • 从产品内部看,缺陷是软件产品开发或维护过程中产生的错误、毛病等各种问题;

    • 从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

  5. 测试用例(IEEE1990):测试用例是一组测试输入、执行条件和预期结果,目的是要满足一个特定的目标,比如执行一条特定的程序路径或检验是否符合一个特定的需求的用例。

  6. 测试用例(百度百科的定义):测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。

  7. 软件质量(ISO8402):反映实体满足明确或隐含需要能力的特征总和。

  8. 软件质量(GB/T 11457-2006《软件工程术语》):软件质量是

    • 软件产品中能满足给定需要的性质和特性的总体。

    • 软件具有所期望的各种属性的组合程度。

    • 顾客和用户觉得软件满足其综合期望的程度。

    • 确定软件在使用中将满足顾客预期要求的程度。

  9. 静态测试:不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

  10. 动态测试:通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。

  11. 手工测试:指测试人员按照事先为覆盖被测软件需求而编写的测试用例,根据测试大纲中所描述的测试步骤和方法,手工地一个一个地输入执行,包括与被测软件进行交互(如输入测试数据、记录测试结果等),然后观察测试结果,看被测程序是否存在问题,或在执行过程中是否会有异常发生,属于比较原始但是必须执行的一个步骤。

  12. 自动化测试:自动测试是将大量的重复性的测试工作交给计算机去完成,通常是使用自动化测试工具来模拟手动测试步骤,执行用某种程序设计语言编写的测试程序的过程。

  13. 黑盒测试:忽略系统或部件的内部机制只集中于响应所选择的输入和执行条件产生的输出的一种测试。通过测试来检测每个功能是否正常使用,通过软件的外部表现来发现缺陷和错误。

  14. 白盒测试:又称结构测试或逻辑驱动测试,指通过对程序内部结构的分析、检测来寻找问题。

  15. 灰盒测试:介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

  16. 单元测试(白盒):单元测试又称模块测试,是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

    单元定义:(举例)C中指一个函数,java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。

  17. 集成测试(灰盒):又称组装测试或联合测试。集成测试是检验在单元测试的基础上,将所有模块(软件单元)按照设计(概要设计)要求(如根据结构图)组装成为子系统或系统,进行集成测试。集成测试就是测试这些软件单元是否能够进行正确交互的测试。

  18. 系统测试(黑盒):将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合走来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题保证系统的正常运行。

  19. 功能测试:主要针对产品需求规格说明书对软件进行测试,逐项验收软件功能是否符合要求。

  20. 接口测试:指对各个模块进行系统联调的测试,包含程序内接口和程序外接口测试。

  21. 性能测试:主要测试系统的性能是否满足用户要求,即在特定的运动条件下验证系统的能力状况。主要是通过自动化测试工具模拟正常、峰值及异常负载状况,对系统的各项性能指标进行测试,测试中得到的负荷和响应时间等数据可以被用于验证软件系统是否能够达到用户提出的性能指标。

  22. 压力测试:是一种性能测试,指在超负荷环境中,检验程序是否能够正常运行,检验系统的稳定性。

  23. 负载测试:是一种性能测试,是通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。

简答

软件开发模型(瀑布模型)

  1. 计划

  2. 需求分析

  3. 设计

  4. 程序编码

  5. 测试

  6. 运行维护

软件测试模型

➕ 于2024-01-03补充

V模型

概念:V模型是软件开发瀑布模型的变种,描述了基本的开发过程和测试行为,明确了测试阶段与开发阶段的对应关系。V模型左侧是开发过程的各个阶段,右侧是测试过程的各个阶段,同一水平上的开发阶段和测试阶段存在对应关系,每个测试阶段需要测试对应开发阶段的成果物

意义

  • 单元测试和集成测试验证系统设计

  • 系统测试验证系统需求

  • 验收测试也称为交付测试验收用户需求

局限性:未在需求阶段进入测试,不能体现“尽早开展测试”的原则。

W模型

概念:W模型是对V模型的改进,明确地描述出了测试与开发的并行关系。强调测试与开发同步进行。W模型由两个V模型组成,分别代表测试与开发过程,同一水平的开发阶段与测试阶段一一对应。

image-20240103154132068

意义

  • 注重在软件开发的各个阶段应用静态测试技术。

  • 强调尽早展开测试。

局限性

  • 对于很多项目,执行过程中并不产生文档,W模型无法适用。

  • 需求、设计、编码等活动被视为串行,测试和开发活动保持着一种线性的前后关系。无法有效支持迭代开发模型及变更调整。

  • 该模型使用起来的技术复杂度高,对于需求和设计的测试要求很高,实践困难。

H模型

概念H模型将测试活动完全分割出来,使得测试准备活动和测试执行活动清晰地体现出来。在H模型中,软件测试模型是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。图仅仅显示了整个测试生命同期中某个层次的“微循环”。图中其他流程可以是任意开发流程,如设计流程和编码流程,也可以是其他非开发流程。

image-20240103154612334

软件测试的对象

软件 = 程序 + 数据 + 文档 + 服务

因此,软件测试的对象是程序、数据、文档和服务。

软件测试的目的

软件测试是通过设计和运行测试用例来校验被测系统的实际输出与预期输出是否一致,最终目标是保证系统应符合需求。

软件测试的基本流程

  1. 需求分析

  2. 制定测试计划

  3. 设计测试方案

  4. 执行测试

  5. 测试评估

  6. 测试总结

  7. 测试维护

测试用例的主要组成

  • 输入:测试数据和测试步骤(操作步骤);

  • 输出:系统预期执行结果;

  • 测试环境:系统环境设置,即进行软件测试所必需的工作平台和前提条件。

测试用例的基本属性

  • 典型性(代表性):能揭示最有可能存在缺陷的地方,能代表和覆盖合理与不合理、合法或不合法的情况。

  • 可测试性(可判定性):一个测试用例的预期输出必须是可以检验的,可以根据相关开发文档得到明确的、可判定的结论。

  • 可重现性:对于相同的测试用例,系统的预期执行结果应该完全相同。否则,如果系统预期输出存在不确定性,一旦实际运行该测试用例,也无法进行校验。

  • 独立性:测试用例应尽量独立。

测试用例设计原则

根据《GB/T15532一2008计算机软件测试规范》,设计测试用例时,应遵循以下原则:

  1. 基于测试需求的原则
    按照测试类别的不同要求设计测试用例。

  2. 基于测试方法的原则
    比较成熟的测试用例设计方法与丰富的实践经验相融合才能设计出高品质的测试用例。

  3. 兼顾测试充分性和效率的原则
    测试用例集应兼顾测试的充分性和测试的效率,每个测试用例的内容也应完整,具有可操作性。

  4. 测试执行的可再现性原则
    应保证测试用例执行的可再现性。

软件质量的特性(ISO/IEC 9126)

  1. 功能性

  2. 可靠性

  3. 易用性

  4. 效率

  5. 可维护性

  6. 可移植性

软件测试基本原则(10条)

➕ 于2024-01-03补充

  1. 尽早测试:尽早发现软件缺陷,降低缺陷的修复成本。

  2. 全面测试:两层含义(1)对产品进行全面的测试,(2)开发人员、测试人员、甚至用户,全面地参与到测试工作中。

  3. 全过程测试:两层含义(1)测试人员充分关注开发全过程,(2)测试人员对测试全过程进行全程跟踪

  4. 独立的、迭代的测试:两层含义(1)将测试过程从开发过程中抽离,作为独立过程,(2)由独立的专业的软件测试机构完成。

  5. Patero原则(缺陷聚集):少数系统模块分布了大部分缺陷。

    如果一个模块已发现许多错误,则剩余错误可能很多,越需要进行深入和多次测试。

  6. 对测试出的结果一定要有一个确认的过程。

  7. 制订严格的测试计划。

  8. 穷尽测试是不可能的,测试需要终止。(需要精心设计测试优先级)

  9. 注意回归测试的关联性。(注意修复一个错误而引发更多错误的现象)

  10. 妥善保存一切测试过程文档。(测试的重现性需要测试文档)

补充:测试应基于客户要求。

总结

软件测试

  • 根本目的:确保被测系统符合用户需求

  • 基本过程:设计测试用例、执行测试用例

  • 测试手段:手工/自动化

  • 测试方式:动态运行(动态测试)/静态审阅(静态测试)

  • 基本流程:需求分析、计划、设计、执行、评估、总结、维护

软件测试可以验证软件质量,但不能提高软件质量。

提高软件质量的途径是改进软件开发过程的质量


扫描二维码推送至手机访问。

版权声明:本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:luxd@aliyun.com,感谢支持理解。


本文链接:https://luxd.cc/post/286.html

“[软件测试] 第一部分 软件测试基础” 的相关文章

App专项测试测试有哪些?

App专项测试测试有哪些?

App专项测试的话,包含但不限于:弱网测试、干扰测试、兼容性测试、电量测试、流量测试、稳定性测试、安全测试和环境相关测试        第一:兼容性测试  针对App通常会考虑这些方面:  1  操作系统版本  包括Andoird版本,iOS版本  ...

软件测试(基础知识)

软件测试(基础知识)

一、软件测试的生命周期软件测试的生命周期:需求分析——测试计划——测试设计,测试开发——测试执行——测试评估需求阶段:测试人员了解需求,对需求进行分解,得出测试需求计划阶段:根据需求编写测试计划 / 测试方案设计阶段:测试人员适当了解设计,进而设计编写一部分测试用例测试阶段:根据测试用例和计划执行测...

测试用例的设计方法

测试用例的设计方法

一、设计测试用例的前提:基于需求文档来设计测试用例——需求文档——概要测试用例二、具体的设计方法1、等价类概要:针对需求部分划分成若干个等价类,从任一等价类中取出一个测试用例,若该测试用例通过,则认为该测试用例所在的等价类是通过的。有效等价类:针对产品说明书 有效且有意义的的数据构成的集合无效等价类...

测试人员如何高效进行数据库备份?

测试人员如何高效进行数据库备份?

测试工程师在测试软件的过程中,不仅需要在界面上操作,还需要检查数据库中的数据是否正确。从而在软件出问题时,能够定位问题的原因。所以,测试人员需要经常进行数据库操作。在数据库操作时,测试人员最害怕的就是数据库中的数据因为“手滑”导致数据丢失。如果丢失,严重的话,会给公司造成损失;即使不严重,也会让公司...

测试环境没bug了就能直接上线了吗?

测试环境没bug了就能直接上线了吗?

做测试的童鞋们在日常工作中接触最多的就是测试环境,大部分bug都是在测试环境中发现并修改的,但是测试环境只是测试过程中涉及到的必备环境,测试环境通过后必须要经过其他一些环境的选择性验证才能最终上线,除了测试环境、生产环境外还有开发环境、仿真环境、预发布环境,下面分两步介绍下各个环境的作用一、第一步-...

如何快速入门Jmeter直连数据库?

如何快速入门Jmeter直连数据库?

所谓直连数据库,就是编写脚本让 JMeter 直接访问并操作数据库可以将接口响应的结果与直连数据库响应的结果做比对,判断接口实现是否符合预期,较之于人工访问数据库,更高效快捷jmeter直连数据库步骤:1. 准备关联jar包2. 配置数据库连接信息3.&nbs...