当前位置: 首页 > news >正文

软件测试理论02—测试流程体系

  • 软件测试基础概念。

软件测试
  • 通过手工或者工具对"被测对象"进行测试。
  • 验证实际结果与预期结果之间是否存在差异。
软件测试作用
  • 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心。
  • 测试可以降低同类型产品开发遇到问题的风险。
软件缺陷
  • 软件缺陷被测试工程师和开发工程师们称作bug。
  • 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据。
软件测试原则
  • 测试显示缺陷的存在(Testing shows presence of defects
  • 穷尽测试是不可能的(Exhaustive testing is impossible
  • 测试尽早介入(Testing Early
  • 缺陷集群性(2/8原则)(Defect Clustering
  • 杀虫剂悖论(Pesticide Paradox
  • 测试活动依赖于测试内容(Testing is context dependent
  • 没有错误是好是谬论(Absence of error - Fallacy)、
软件测试对象
  • 需求分析阶段:需求文档、接口文档。
  • 编码实现阶段:源代码。
  • 系统功能使用:系统程序。
测试用例
  • 为特定的目的而设计的一组测试输入、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档。
  • 软件测试模型:

  • V 模型
  • V 模型是瀑布模型的一种改进。
  • V 模型标明了测试过程中的不同阶段。

todo 截图

V模型就像建房子:先画蓝图(需求),再搭骨架(设计),然后砌砖(编码),最后层层检查(测试),确保房子结实又合用;但它不够灵活,一旦设计定稿,改动起来代价大,适合需求明确的项目。

阶段任务
  • 需求分析:搞清楚用户要什么。
  • 概要设计:规划系统的大框架。
  • 详细设计:设计每个部分的细节。
  • 编码:动手写代码。
  • 单元测试:检查每个小部分是否正常。
  • 集成测试:检查所有部分合起来是否正常。
  • 系统测试:检查整个软件是否满足要求。
  • 验收测试:用户亲自检查是否满意。

优缺点:

  • 优点:测试覆盖全面,开发过程清晰。
  • 缺点:测试在开发后,问题难改;需求变更成本高。
  • W 模型
  • W 模型明确表示出了测试与开发的并行关系。
  • W 模型中测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试。

todo 截图

  • 优点
    • 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试。
    • 更早的介人到软件开发中,能尽早的发现缺陷进行修复。
    • 测试与开发独立起来,并与开发并行。
  • 缺点
    • 无法支持迭代的开发模型。
    • 对有些项目,开发过程中根本没有文档产生,故 W 模型无法使用。
    • 对于需求和设计的测试技术要求很高,实践起来很困难。
  • H 模型。

‌H 模型是一种将测试活动完全独立出来的模型,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。 H 模型相对于 ‌V 模型和 ‌W 模型,更加注重测试的灵活性和独立性。‌

  • 软件开发中需求、设计、编码等活动被分阶段执行、但是实践中,他们并不是完全串行的,它们之间更多时候是交叉进行的,更多的是迭代执行。
  • 把测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。
  • 测试在该模式下主要完成三部分工作:测试前期的准备、测试就绪点的预判、测试执行。
  • 测试人员需要根据实际项目的特点,及时判断当下测试执行的条件是否满足,然后尽早地投入测试工作中。

todo 截图

H 模型的优缺点
  • 优点:
    • 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行。
    • 软件测试活动可以尽早准备、尽早执行,具有很强的灵活性。
  • 缺点:
    • 测试就绪点分析困难。
    • 对于整个项目组的人员要求非常高。
  • 软件测试工作流程:传统测试流程、系统测试流程、Bug管理流程。

传统测试流程

todo 截图

  1. 单元测试:

    • 通俗解释: 把软件拆成最小零件(比如一个按钮功能),单独检查这个零件好不好用。

    • 核心: 检查“单个小零件”。

  2. 集成测试:

    • 通俗解释: 把几个组装好的零件(模块)放在一起,看它们能不能正常合作,接口对不对。

    • 核心: 检查“零件之间合作”。

  3. 冒烟测试:

    • 通俗解释: 软件刚做好一个新版本,先快速试一下最基本、最重要的功能(比如能不能登录),看能不能进行更详细的测试。

    • 核心: “快速健康检查”,看能不能“开工”。

  4. 系统测试:

    • 通俗解释: 把整个软件装好,像用户一样从头到尾全面测试所有功能(性能、安全、兼容性等),看是否符合要求。

    • 核心: 检查“整个产品”表现。

  5. 回归测试:

    • 通俗解释: 软件修了个Bug或加了新功能后,重新测一下以前的功能,确保没把其他地方搞坏。

    • 核心: “修完再查旧功能”,防止倒退。

  6. 验收测试:

    • 通俗解释: 老板或客户亲自试试这个软件,看满不满意、能不能上线使用

    • 核心: “客户点头”才能交工。

系统测试流程

todo 截图

Bug 管理流程

todo 截图

    1. 测试左移、测试右移。

    • 核心思想: 提前介入,预防为主。把测试活动和质量保障提前到开发周期的早期阶段。

    • 目标: 尽早发现并预防缺陷,降低后期修复成本,提升代码质量。

    • 关键手段:

      • 代码评审/审计: 人工或工具检查代码质量、安全、规范。

      • 单元测试: 开发者验证最小代码单元的功能。

      • 研发自测: 开发者在提交代码前进行测试(单元、功能、集成)。

      • 自动化冒烟测试: 快速验证每次构建的核心功能。

    • 本质: 在缺陷产生前或刚产生时就拦截它,是主动的质量保障

    测试右移 (Shift-Right Testing)

    • 核心思想: 监控线上,快速响应。把测试和质量关注点延伸到产品发布后的生产环境。

    • 目标: 快速发现、定位并解决线上问题,监控真实用户体验和系统健康,持续优化。

    • 关键手段:

      • 线上监控: 实时收集系统运行数据。

      • 日志分析: 提供丰富、易查的日志,快速定位问题根因。

      • 指标监控:

        • 技术指标: 服务器性能(CPU、内存、网络等)。

        • 业务指标: 关键业务流程(如支付成功率、短信发送状态)、业务异常点。

        • 生产数据监控: 监控关键数据流,设置警报阈值。

      • 闭环反馈流程: 建立从问题反馈->检查->解决->更新的高效流程。

    • 本质: 在真实环境中验证并保障质量,是被动的快速修复 + 主动的持续改进

    一句话总结对比:

    • 测试左移: 开发阶段做测试预防缺陷(早介入,保质量)。

    • 测试右移: 上线后做监控快速响应问题(看效果,快修复)。

    核心差异归纳表:

    特点测试左移测试右移
    介入阶段开发早期 (需求、设计、编码)发布后 (生产环境)
    核心目标预防缺陷,提升代码质量快速发现并修复线上问题,监控优化
    主要活动代码评审、单元测试、研发自测线上监控、日志分析、指标告警
    问题发现缺陷产生前或刚产生时缺陷在用户环境暴露后
    关注点代码质量、功能正确性系统稳定性、用户体验、业务连续性
    本质主动防御快速反应 + 持续优化

    软件测试分类

    todo 截图

    分层测试体系

    自动化测试分层可以理解为将测试任务划分为多个层次,每个层次专注于不同的测试任务和范围。通过这种分层方式,测试人员能够更有效地管理和组织测试工作,确保测试的全面性和准确性。

    • 70% 单元测试
    • 20% 服务测试
    • 10% 用户界面测试
    单元测试

    todo 截图

    执行单元测试框架:

    • Java:
      • JUnit:JUnit 是 Java 最流行的单元测试框架之一,用于编写和运行重复的测试。它提供了许多有用的注解和断言方法。
      • TestNG::TestNG 是一个功能强大的测试框架,设计灵活,支持单元测试、集成测试和端到端测试。
    • Python:
      • unittest:unittest 是 Python 的内建单元测试框架,灵感来自于 `JUnit,提供了编写和执行测试的基本工具。
      • pytest:pytest 是一个流行的 Python 测试框架,以其简洁的语法和强大的功能而著称。它支持更复杂的测试需求和插件。
    接口测试
    • 接口全称 Application Programming Interface,一般称作 API
    • 是针对软件对外提供服务的接口的输入输出进行测试。
    • 检查接口参数传递的正确性,接口功能实现的正确性,输出结果的正确性,以及对各种异常情况的容错处理的完整性和合理性。

    选择合适的工具可以帮助更高效地进行接口测试,确保 API 的功能、性能和安全性。

    执行接口测试的相关工具:

    • Charles:Charles 是一款 HTTP 代理工具,提供了流量监控和调试功能。可以用来捕获、分析和修改 HTTP 和 HTTPS 请求。
    • Fiddler:Fiddler 是一个功能强大的 HTTP 调试代理,可以捕获和分析网络流量。
    • postman:Postman 是一个流行的 API 客户端,用于设计、测试和文档化 API。
    • Jmeter:JMeter 是一个开源的负载测试工具,可以用于性能测试和功能测试。
    • loadRunner:LoadRunner 是一个企业级负载测试工具,用于测试应用程序的性能和可伸缩性。
    • python:
      • Requests:requests 是一个流行的 Python HTTP 库,用于发送 HTTP 请求和处理响应。
      • HttpRunner:HttpRunner 是一个基于 Python 的开源 API 测试工具,支持接口测试、性能测试和测试自动化。
    • Java:
      • HttpClient:HttpClient 是 Apache 提供的一个用于发送 HTTP 请求和处理响应的 Java 库。
      • RestAssured:RestAssured 是一个用于 Java 的库,用于测试 RESTful Web 服务。
    UI 测试

    UI 测试(用户界面测试)是软件测试的一种类型,专注于验证应用程序的用户界面是否符合预期。它确保用户界面的各个方面,如布局、功能、交互、以及视觉效果,按照设计规范进行实现。

    todo 截图

    UI 测试方法:

    • 人工方法:
      • 人工查看:测试人员手动检查应用程序的用户界面,以确认所有元素(按钮、输入框、菜单等)是否按照需求规格正确显示和布局。
      • 人工操作:测试人员手动执行操作(如点击、输入、滚动等),以验证用户界面的功能是否符合预期。
    • 自动化方法:
      • web:Selenium适用于各种 Web 浏览器和操作系统。
      • app:Appium适用于 Android 和 iOS 移动应用。
    http://www.xdnf.cn/news/1149751.html

    相关文章:

  • 云端成本治理利器:亚马逊云科技智能仪表盘(AWS Cost Intelligence Dashboard)深度解析
  • 练习三:熟知前端知识
  • Django3 - Web前端开发基础 HTML、CSS和JavaScript
  • web.m3u8流媒体视频处理
  • 服装公司生产管理系统,如何实战提升生产效率?
  • 张量交换维度(转置),其实是交换了元素的排列顺序
  • 如何实现电脑自动关机与定时任务管理
  • ABP VNext + Temporal:分布式工作流与 Saga
  • react+antd 可拖拽模态框组件
  • 尚庭公寓-----day2 业务功能实现
  • 物联网系统中的可视化大屏定义
  • 华为仓颉编程语言语法简介与示例
  • React 的 `cache()` 函数
  • 医疗AI与融合数据库的整合:挑战、架构与未来展望(下)
  • Java行为型模式---状态模式
  • 6-大语言模型—预训练:数据处理
  • SpringBoot项目部署至云服务器
  • simulink系列之汽车应用层信号处理
  • Django母婴商城项目实践(九)- 商品列表页模块
  • LVS的简介以及架构
  • Entity Component System架构
  • 【项目分享】动手做一个TypeC转TTL模块(附带原理图)
  • 加法速算之尾数法
  • Windows11下编译好的opencv4.8-mingw,可下载后直接用
  • java: DDD using sql server 2019 or Oracle21c
  • Linux 密码生成利器:pwgen 命令详解
  • 测试计划(抽奖系统)
  • 考研复习-数据结构-第七章-查找
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 我做的基础服务项目,是如何实现 API 安全与限流的(短信、邮件、文件上传、钉钉通知)