05 软件测试类型

Posted on Wed, 25 Dec 2024 17:05:20 +0800 by LiangMingJian


1.软件测试类型

1.1 按工程阶段划分

1.1.1 单元测试

  • 单元测试是指对软件测试中的最小可测试单元(模块)进行的正确性检验。
  • 单元测试能发现模块内部的错误,而不能发现模块连接中的问题。
  • 单元测试在进行时,需要编写驱动模块作为主程序来调用被测模块,以及编写桩模块来模拟被测模块调用的下层模块。
  • 单元测试的内容包括:
    • 模块接口测试。
    • 局部数据结构测试。
    • 错误处理测试。
    • 边界测试。
    • 路径测试。
  • 注意:穷举路径测试是不可能的。

1.1.2 集成测试

  • 集成测试也叫组装测试或联合测试,是在单元测试的基础上,依据概要设计说明书,将所有模块按照设计要求组装后进行的测试。
  • 集成测试能检验程序单元或部件的接口关系,揭示它们交互之间的缺陷。
  • 集成测试在进行时,需要设计驱动模块和桩模块。
    • 驱动模块相当于所测模块的主程序,它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。
    • 桩模块也叫存根模块,用以代替所测模块调用的子模块。
  • 集成测试的组装方式包括:
    • 自顶而下:通过建立桩模块,能尽早地检验程序的主要控制点和决策判断点,但对于输入输出模块、复杂算法模块一般的底层模块会直到最后才发现。
    • 自底而上:通过建立驱动模块,对输入/输出模块和复杂算法模块中存在的错误能尽早发现,可以并行对多个模块实施测试,并逐步形成实体。
    • 混合增值:自顶而下与自底而上两者混合。
    • 一次性组装:Big Bang。
  • 集成测试的内容包括:
    • 接口数据测试。
    • 模块间时序测试。
    • 全局数据测试。
  • 集成测试的关注点包括:
    • 各模块间数据传输是否会丢失。
    • 一个模块的功能是否会对另一个模块造成不利的影响。
    • 各子模块组合后能否达到预期的要求。
    • 全局数据结构是否正常。
    • 单个模块的错误是否会积累放大。

1.1.3 确认测试

  • 确认测试是验证软件功能与性能以及其他特征是否与用户要求(软件需求说明书)一致的测试。
  • 确认测试主要采用黑盒测试方法,需要进行有效性测试和软件配置复查,一般由独立的第三方测试机构进行测试。

1.1.4 回归测试

  • 回归测试是在修改了旧代码后,为确认修改没有引入新的错误或导致其他代码产生错误而重新进行的测试。
  • 回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。
  • 自动的进行回归测试将大幅降低系统测试、维护升级等阶段的成本。

1.1.5 系统测试

  • 系统测试依据需求设计说明书,将程序与硬件,网络,相关外设等内容相结合的测试,对整个系统进行的测试。
  • 系统测试是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。
  • 系统测试的内容包括:
    • 恢复测试
    • 安全测试
    • 强度测试(压力测试)
    • 性能测试
    • 可靠性,可用性,可维护性测试
    • 安装测试

1.1.6 验收测试

  • 验收测试是在系统测试通过后,交付使用前进行的测试。
  • 验收测试按照项目任务书或合同、约定的验收依据文档等,对整个系统进行测试与评审,决定是否接收或拒收系统。
  • 一般来说,即使合同规定了系统验收时间,但若系统测试仍为通过,系统未完成,则不建议进行验收测试。

1.2 按是否执行代码划分

  • 静态测试:不执行代码,程序进行测试。
  • 动态测试:执行代码,程序测试。

1.3 按实施主体划分

  • 开发方测试:验证测试或 Alpha($\alpha$)测试,主要是指在软件开发完后,开发方要对提交的软件进行全面的自我检查与验证。它可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
  • 用户测试:Beta($\beta$) 测试,指在用户的应用环境下,用户通过运行和使用软件,检测与验证软件是否符合自己预期的要求,这里大家要注意,用户测试一般不是指用户的验收测试,而是指用户的使用性测试。
  • 第三方测试:又称独立测试,指由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。第三方软件评测机构应坚持客观,公正,廉洁,科学,规范且独立的工作原则。无论在何种情况,即使客户要求,第三方软件评测机构都应先评测,修改问题,最后才出具报告。在测试结束后,评测机构只要没用做其他商业用途或泄密,就能保留样本,而不会侵犯对方的知识产权。

1.4 按测试技术划分

  • 白盒测试:又称逻辑驱动测试,对程序内部结构进行分析检测来寻找问题。
  • 黑盒测试:仅针对输入,输出进行分析检测来寻找问题。在完全不考虑软件的内部结构和特性的情况下,测试软件的外部特性。可以和软件实现同步进行。

1.5 按测试对象划分

  • 功能测试:检查功能是否正确实现,是否满足需求,是否满足法律规范。
  • 性能测试:又称负载压力测试。
    • 压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
    • 负载测试:通过逐渐增加负载时,观察系统各项性能指标的变化情况,确定在各种工作负载下系统的性能。
  • 强度测试:使软件在不够理想的条件下运行,观察软件对外部的依赖和要求。
  • 容量测试:提供条件任软件发挥,最大限度的发掘软件能力。
  • 重复测试:不断执行同一操作,检测内存是否充足。
  • 安装测试:按照用户安装手册安装软件,评估安装过程的易用性,正确性。需要关注安装手册,安装选项和设置,安装顺序,安装自动化,修复安装和卸载。
  • 辅助系统测试:包括帮助测试,向导测试和信息提示测试等。
  • 界面整体测试:对界面规范性,一致性和合理性等进行测试和评估。