10分钟通读《软件测试》理论

简介: 计算机行业流行一个笑话: 有三样东西在制造过程中是永远看不见的, 它们是 法律, 香肠和软件 !软件测试工程师工作的职责:尽可能早一些找出软件缺陷, 并确保它得以修复软件周期和所处的阶段构思分析设计开发测试最...

计算机行业流行一个笑话: 有三样东西在制造过程中是永远看不见的, 它们是 法律, 香肠和软件 !

软件测试工程师

工作的职责:

  • 尽可能早一些找出软件缺陷, 并确保它得以修复

软件周期和所处的阶段

  • 构思
  • 分析
  • 设计
  • 开发
  • 测试
  • 最终产品
  • 维护

岗位要求(应具备的素质)

  • 他们是探索者
  • 他们是故障排除员
  • 他们不放过任何蛛丝马迹
  • 他们是追求完美主义者
  • 他们判断准确
  • 他们注重策略和外交
  • 他们善于说服
  • 他们受过软件编程方面的教育

什么是软件测试

  • 软件测试是一项批判性的工作

软件测试应该在项目什么阶段开始介入

  • 设计阶段

需求和Bug

什么是Bug

  • Bug即软件缺陷, 源自Mark Ⅱ

Bug的状态

  • 新的(New)
  • 已指派(Assigned)
  • 打开(Open)
  • 已修复(Fixed)
  • 待测试(Pending Reset)
  • 再测试(Reset)
  • 关闭(Closed)
  • 再打开(Reopen)
  • 拒绝中(Pending Reject)
  • 被拒绝( Rejected)
  • 延期 (Postponed)
  • 延期中 (Deferred)

测试报告, 描述软件缺陷的基本准则

  • 一致性
  • 唯一性

需求规格说明书

  • 完整
  • 准确
  • 精确, 不含糊, 清晰
  • 一致
  • 贴切
  • 合理
  • 代码无关
  • 可测试性

一个良好的需求应当具备哪些特征

  • 需求明确, 有确切的图文说明
  • 当前技术下, 需求可以实现
  • 功能实用, 与主功能模块不冲突

作为测试工程师, 如果你发现需求一直在变化, 怎么办

  • 通过与产品经理沟通, 稳定产品需求
  • 优先测试需求稳定的功能模块
  • 对需求变化频繁的功能部分, 编写通用性较好的测试用例

软件测试的现实挑战

测试的挑战性, 正确理解测试

  • 完全测试程序是不可能的
  • 软件测试是有风险的行为
  • 测试无法显示潜伏的软件缺陷
  • 并非所有的软件缺陷都需要修复
  • 产品说明书从没有最终版本
  • 软件测试员在产品小组中不受欢迎
  • 不存在没有缺陷的软件
  • 软件测试是一项讲究条理的技术专业

各种不同类型测试的定义及区别

  • 黑盒测试: 无需了解 软件内部代码结构, 重视功能, 不关注具体的实现方式
  • 白盒测试: 必须了解 软件内部代码结构, 重视实现的逻辑, 耗时更长, 无法考虑到所有情况
  • 静态测试: 不运行代码
  • 动态测试: 运行代码

你发现了一个缺陷, 但开发人员认为不是, 你如何处理

  • 主动与开发人员沟通, 讲明缘由
  • 向测试经理反应情况
  • 即时跟进bug的修改状态
  • 如果不是特别紧急的bug, 而产品急于上线, 可以先对bug进行记录, 在下一迭代周期提出bug

静态黑盒测试

需求规格说明书(spec)是什么?

  • 需求规格说明书展现了软件功能的雏形
  • 开发人员可以按照说明书, 有效制定自己的开发计划
  • 让用户了解将要开发软件的功能是什么,如果用户有不满意的地方,可以快速改进
  • 需求规格说明书不包括具体的编码要求,也不包括软件的具体功能操作步骤

静态黑盒测试需要耐心阅读文档, 具有想象力


动态黑盒测试

测试流程

  • 建立状态转换图
  • 减少要测试的状态及转换的数量
  • 定义测试用例
  • 执行重复, 压迫, 重负测试

测试工程师与测试经理的区别

  • 测试工程师侧重进行具体测试任务的执行
  • 测试经理侧重进行测试任务的调配

等价划分法

  • 等价类划分是指把分步骤把海量(无限)的测试用例, 缩减的很小, 但过程同样有效

如果能够执行完美的黑盒测试, 那还需要白盒测试吗?

  • 依然需要执行白盒测试, 因为结果正确, 不能表软件程序没有问题, 有可能是错误的程序得出了正确的结果

静态白盒测试

代码检查的流程和要求

  • 同事审查
  • 走查
  • 检验

代码检查的具体方法

  • 检测数据引用
  • 检测数据声明
  • 检测计算错误
  • 检测比较错误
  • 检测控制流程错误
  • 检测子程序参数错误
  • 检测输入输出错误
  • 其他检查(是否使用外语, 是否考虑移植, 兼容性)

代码检测对提高软件质量的积极作用

  • 尽早发现软件缺陷
  • 规范编码风格
  • 减少不必要的bug

静态白盒测试和软件开发调试有什么区别?

  • 静态白盒测试: 测试人员根据软件程序,寻找软件缺陷
  • 软件开发调试: 开发人员在开发过程中的操作

动态白盒测试

单元测试及集成测试的区别

  • 单元测试是从单元模块进行测试, 自底向上
  • 集成测试是从软件整体进行测试, 自顶向下

jUnit

  • jUnit是常用的Java语言测试框架

配置测试与兼容性测试

概念

  • 配置测试是指使用各种硬件来测试软件运行的过程

配置测试和兼容性测试主要的工作内容

  • 配置测试:
  1. 确定所需的硬件类型
  2. 确定用哪些厂商的硬件, 型号和驱动程序可用
  3. 确定可能的硬件特此, 模式和选项
  4. 将确定后的硬件配置缩减为可控制的范围
  5. 明确与硬件配置有关的软件的唯一性特征
  6. 设计在每一种配置中执行的测试用例
  7. 在每种配置中执行测试
  8. 反复测试直到小组对结果满意为止
  • 兼容性测试:
  1. 向后和向前兼容
  2. 测试多个版本的影响
  3. 测试高级和低级标准规范
  4. 数据共享兼容性

向上兼容和向下兼容的区别

  • 向上(向前)兼容是指可以使用软件未来的版本
  • 向下(向后)兼容是指可以使用软件以前的版本

工作量为什么会倍增

  • 客观来讲, 每个模块都有多个选项, 而这些选项的排列组合, 会上涨多个数量级
  • 只是单纯的软件本地化操作, 就要语言,文化, 内容, 数据格式, 数据兼容性等繁杂问题

外国语言测试

软件测试工程师不懂外语, 为什么还要参与外国语言版本的软件测试

  • 懂各国语言的专家, 不一定了解软测试
  • 测试工程师需要与语言专家配合共同完成测试

易用性测试和安全测试

基本概念

  • 易用性测试: 易用性测试是指让用户使用软件时是否方便
  • 应符合的标准规范: 直观, 一致, 灵活, 舒适, 正确, 实用

软件质量管理和CMM

基本概念

  • 检查和评价当前软件开发的过程, 找出改进的方法, 以达到防止软件缺陷出现的目标

SQA是什么

  • 软件质量保证

CMM是什么? 五个级别的基本定义?

能力成熟度模型(CMM)是一个行业标准, 用于定义和评价软件公司开发过程的成熟度, 提供怎样做才能提高软件质量的指导

  • 1级: 初始的
  • 2级: 可重复的
  • 3级: 定义的
  • 4级: 可管理的
  • 5级: 不断优化的
目录
相关文章
|
监控 前端开发 测试技术
吃透这些软件测试理论知识要点,你就搞懂了软件测试
吃透这些软件测试理论知识要点,你就搞懂了软件测试
368 0
|
2月前
|
敏捷开发 机器人 Java
自动化测试之美:从理论到实践
【9月更文挑战第28天】在软件开发的海洋中,自动化测试是一艘航向高效、精确和快速交付的船。它不仅减轻了手动测试的负担,还提升了软件质量的保障。本文将带你了解自动化测试的核心概念、流行的工具以及如何将这些理论应用到实践中去。我们将通过实际代码示例,探索自动化测试的魅力所在。
126 70
|
8天前
|
测试技术 Python
软件测试的艺术:从理论到实践的探索
【10月更文挑战第23天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将深入探讨软件测试的核心理念、方法和实践,揭示如何通过精心设计和执行测试来提高软件质量。我们将一起探索测试的不同阶段,包括单元测试、集成测试、系统测试和验收测试,以及它们如何相互补充,共同构建起一个坚实的质量保证体系。文章旨在启发读者思考如何在自己的项目中实施有效的测试策略,从而提升软件的可靠性和性能。
|
1月前
|
测试技术 开发者
软件测试的艺术:从理论到实践的探索之旅
【9月更文挑战第36天】在软件开发的广阔天地中,测试是确保质量的关键一环。本文将带你领略测试的多维面貌,从基础概念到高级策略,我们将一起探索如何通过测试来提升软件的可靠性和性能。你将学习到如何设计有效的测试用例,理解不同类型的测试,并掌握一些实用的测试工具和技术。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在软件测试的道路上更加从容不迫。
35 3
|
1月前
|
敏捷开发 Java 测试技术
探索软件测试的奥秘:从理论到实践
【9月更文挑战第34天】在软件开发的世界中,测试是确保质量的关键一环。本文将带你走进软件测试的世界,从基础概念出发,逐步深入到测试策略和自动化工具的应用。我们将通过实际代码示例,展示如何有效地执行测试,并讨论测试在敏捷开发中的重要性。无论你是测试新手还是希望提升技能的开发者,这篇文章都将为你提供宝贵的知识和启发。
|
1月前
|
测试技术 开发者
软件测试的艺术:从理论到实践
【9月更文挑战第33天】在软件开发的舞台上,测试是不可或缺的角色。它不仅仅是一个过程,更是一种确保产品质量的艺术。本文将带你走进软件测试的世界,探索它的基本原则、类型、方法以及如何将这些理论应用到实际工作中。我们将一起学习如何设计有效的测试案例,执行测试计划,并分析测试结果。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用的技巧,帮助你提升测试技能,确保软件质量。让我们一起踏上这段旅程,发现软件测试的魅力所在。
46 4
|
2月前
|
jenkins 测试技术 持续交付
探索自动化测试的奥秘:从理论到实践
【9月更文挑战第2天】 在软件工程的世界中,自动化测试是确保产品质量的关键。本文将带你走进自动化测试的核心概念,揭示如何通过代码示例实现高效的测试流程。我们将一起学习如何构建、执行和分析自动化测试案例,从而提升软件开发的速度与质量。无论你是测试新手还是经验丰富的开发者,这篇文章都将为你开启自动化测试的新视角。
28 2
|
5月前
|
Devops 测试技术 持续交付
软件测试中的敏捷实践:从理论到应用
在软件开发领域,敏捷方法论的兴起已经彻底改变了项目的开发和测试流程。本文将深入探讨如何在软件测试中实施敏捷实践,以及这些实践如何提高产品质量和团队效率。通过引用最新的行业报告、科学研究和统计数据,文章旨在为读者提供一套清晰的指导框架,帮助他们在软件测试过程中实现敏捷性。
84 0
|
敏捷开发 算法 安全
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
|
测试技术 程序员 开发者
【软工视频】第六章软件测试
【软工视频】第六章软件测试