软件测试基础-更高级别的测试、调试、极限测试

更高级别的测试

  • 开发过程和测试过程存在一一对应关系
    • 模块测试的目的是发现程序模块与其接口规格说明之间的不一致
    • 功能测试的目的是为了证明程序未能符合其外部规格说明
    • 系统测试的目的是为了证明软件产品与其初始目标不一致
      软件测试基础-更高级别的测试、调试、极限测试_第1张图片

功能测试

  • 黑盒测试
  • 目的:是为了暴露程序的错误以及与规格说明不一致之处,而不是为了证明程序符合其外部规格说明

系统测试

能力测试

  • 判断目标文档提及的每一项能力是否都确实已经实现

容量测试

  • 使程序经受大容量数据的检验。
    • 需要大量资源
    • 机器和工时限制,不能进行过程的容量测试
    • 每个程序应该至少进行几次容量测试

强度测试

  • 使程序承载高负载或强度的检验
    • 高强度:在很短的时间间隔内达到的数据或操作的数量峰值

易用性测试

  • 试图发现人为因素或易用性的问题
    软件测试基础-更高级别的测试、调试、极限测试_第2张图片
    软件测试基础-更高级别的测试、调试、极限测试_第3张图片

安全性测试

  • 设计测试用例来突破程序安全检查的过程

性能测试

  • 特定性能或效率目标,描述为在特定负载和配置环境下程序的响应时间和吞吐量

存储测试

  • 软件偶尔会有存储目标

配置测试

  • 应该使用每一种类型的设备,以最大和最小的配置来测试程序

兼容性/配合/转换测试

  • 当存在新开发的软件替换某些不完善的系统,会涉及到与现有系统的兼容以及从现有系统的转换过程

安装测试

  • 安装测试是系统测试中的一个重要部分

可靠性测试

  • 可靠性目标:正常运行时间,平均故障间隔时间(MTBF)

可恢复性测试

  • 可恢复性目标:平均恢复时间(MTTR)

适用性测试

  • 目标:存储转存程序或诊断程序、调试明显问题的平均时间、维护过程以及内部业务文档的质量

文档测试

  • 根据文档来确定系统测试用例的形式
  • 即一旦涉及完成某个具体的测试情况,应该使用文档来确定系统测试用例的形式

过程测试

  • 必须对所有已规定的人工过程,如系统操作员、数据库管理员或最终用户的操作过程进行测试

系统测试的执行

  • 不能有程序员来进行测试
  • 在所有的测试阶段之中,这是唯一一个明确地不能由负责该程序开发的机构来执行的测试

验收测试

  • 将程序预期最初的需求及最终用户当前的需求进行比较的过程
  • 测试通常是由程序的客户或最终用户来进行

安装测试

  • 在安装软件系统期间会发生很多时间,作为示例的简短列表可以包括:
    • 用户必须选择大量的选项
    • 必须分配并加载文件和库
    • 必须进行有效的硬件配置
    • 软件可能要求网络连通,以便与其他软件连接
  • 软件测试用例需要检查以确认已选的选项集合互不冲突,系统的所有部件全部存在,所有文件已经创建并包含必须内容,硬件配置妥当

测试的计划与控制

软件测试基础-更高级别的测试、调试、极限测试_第4张图片

测试结束准则

  • 常见准则:
    • 用完安排的测试时间后,测试便结束
    • 当执行完所有测试用例都未发现错误,测试便结束
  • 上述两条准则往往是无效的,以下三类结束准则较为有效
    软件测试基础-更高级别的测试、调试、极限测试_第5张图片
    软件测试基础-更高级别的测试、调试、极限测试_第6张图片
    软件测试基础-更高级别的测试、调试、极限测试_第7张图片
  • 最佳准则可能是上述三类的组合

调试

  • 调试是执行一次成功的测试之后要进行的工作。成功的测试指的是可以证明程序没有实现预期功能。
    • 从执行了一个成功的测试用例,发现了一个问题开始
    • 确定程序中可疑错误的准确性和位置
    • 修改错误

暴力调试法

利用内存信息输出调试

软件测试基础-更高级别的测试、调试、极限测试_第8张图片

根据一般的“在程序中插入打印语句”建议来调试

软件测试基础-更高级别的测试、调试、极限测试_第9张图片

使用自动化的调试工具进行调试

软件测试基础-更高级别的测试、调试、极限测试_第10张图片

特点

  • 忽略思考的过程

归纳法调试

软件测试基础-更高级别的测试、调试、极限测试_第11张图片

演绎法调试

软件测试基础-更高级别的测试、调试、极限测试_第12张图片

回溯法调试

软件测试基础-更高级别的测试、调试、极限测试_第13张图片

测试法调试

软件测试基础-更高级别的测试、调试、极限测试_第14张图片

调试的原则

定位错误的原则

  • 动脑筋
  • 遇到僵局稍后解决
  • 遇到困境描述给他人
  • 测试工具是第二手段
  • 避免使用试验法

修改错误的技术

  • 存在一个缺陷的地方,可能还存在其他缺陷
  • 应纠正错误本身,而不是其症状
  • 正确纠正错误的可能性并非100%
  • 正确修改错误的可能性随着程序规模的增大而降低
  • 改正错误可能会引入新的错误
  • 修改错误的过程也是临时回到设计阶段的过程
  • 应该修改源代码而不是目标代码

错误分析

  • 错误出现在什么地方?
  • 谁制造了这个错误?
  • 哪些做得不正确?
  • 如何避免该错误的出现?
  • 为什么错误没有早些发现?
  • 该如何更早地发现错误?

极限测试

极限编程基础

  • XP重视采取简单的设计、在开发人员和客户之间建立联系、不断地测试代码库、重构以适应规格说明的变更,以及寻求用户的反馈。XP更倾向于适合中小规模的软件开发,这些软件的规格说明的变更非常频繁,接近实时的沟通也是可能的。
    • 避免了大规模项目的综合征
    • 避免了编写不必要的功能
    • 将精力集中在测试上,测试先行
      软件测试基础-更高级别的测试、调试、极限测试_第15张图片
      软件测试基础-更高级别的测试、调试、极限测试_第16张图片

极限测试:概念

  • 极限测试分为单元测试和验收测试

极限单元测试

  • 是极限测试中才用的主要测试方法
  • 简单规则
    • 所有代码模块在编码开始之前必须设计好单元测试用例
    • 在产品发布之前必须通过单元测试
  • 极限测试中的单元测试与普通单元测试的最大区别
    • 极限测试中的单元测试必须在模块编码之前就完成设计和生成
    • 这样能够迫使我们在代码编写之前, 首先理解规格说明,避免混淆

验收测试

  • 目的是判断应用程序是否满足如功能性和易用性等其他需求。在设计/计划阶段,由开发人员和客户来设计验收测试
  • 验收测试也是回归测试的一种形式

你可能感兴趣的:(测试,软件测试)