软件测试基础(1)

软件测试的定义

经典定义:测试是为了发现程序错误而执行的过程。
IEEE定义:使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。

软件测试的对象

  1. 软件需求
  2. 软件概要设计
  3. 软件详细设计
  4. 软件运行环境
  5. 可执行程序
  6. 软件源代码

软件测试所遵循的原则

  1. 测试显示缺陷的存在,但不能证明系统不存在缺陷
  2. 穷尽测试是不可能的,应即使设定终止的条件
  3. 软件测试应尽早启动、尽早介入
  4. 缺陷具备集群特性
  5. 不使用相同的测试用例多次测试同一模块,不定期修改增加不同用例
  6. 将80%的资源用在20%的重要模块中
  7. 测试活动依赖于测试背景

软件测试的分类

按测试阶段分类:
  1. 单元测试:对软件中的最小可测试单元进行检查和验证。
  • 原则: 尽可能保证每个测试用例是相互独立的;一般由代码的开发人员来实施,用以检验所开发的代码功能复合自己的设计要求
  • 好处: 能尽早发现缺陷;有利于重构;简化集成测试;减少文档;用于设计,体现设计思路
  • 限制:不可能覆盖到所有的执行路径;每一行代码需要3-5行测试代码,需要投入产出平衡
  1. 集成测试:是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中,各部分工作是否达到或实现相应技术指标及要求的活动。
  • 主要实施方案:一次全部集成;从控制层到最低层;从最低层到控制层;核心系统集成;高频集成,持续集成
  • 和单元测试不同:测试的对象不同;测试的依据不同,详细设计与概要设计;测试的方法不同
  1. 系统测试:是将经过集成测试的软件,作为计算机系统的一个部分,与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效地测试,以发现软件潜在的问题,保证系统的正常运行。
  • 关注点:关注系统本身的使用;关注系统与其他系统间的连通;关注系统在不同使用压力下的表现;关注系统在真实使用环境下的表现
  • 与集成测试不同:测试对象不同,系统测试包括硬件和周边软件等;测试时间不同;测试内容不同;测试角度不同,集成为技术,系统为业务
  1. 验收测试:也称交付测试。针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。
  • 细分 :用户验收测试;运行验收测试;合同和规范验收测试;Alpha测试(开发者提供环境,用户进行测试);Beta测试(用户环境)
按测试手段分类:

黑盒测试:在不考虑程序内部结构的情况下,对暴露出的接口进行测试。程序能够接受适当的输入数据并得到相应的输出数据。(主要用于系统测试阶段)

  • 优点:容易实施,不考虑内部实现;更贴近用户的使用角度
  • 缺点:测试覆盖率较低;针对黑盒的自动化测试,复用率较低,维护成本较高
  • 关注: 是否有不正确或遗漏的功能;是否能正确地接受输入,并产生正确的输出;是否有数据结构错误或外部信息访问错误;是否满足性能要求
  • 设计方法:等价类划分法;边界值分析法;错误推测法;因果图法;正交试验分析法;状态迁移图法;流程分析法

白盒测试:对内部结构了解,内部逻辑透明,用逻辑覆盖构成测试。逻辑是指:语句、条件、条件组合、分支、路径,这些方面都要覆盖

  • 优点:理解系统原理;检测到每条分支和路径;揭示隐藏在代码中的错误;对代码测试比较彻底
  • 缺点:工作量大,成本高;无法检测遗漏的路径;不能直接验证需求是否满足
  • 主要方法:代码检测法;静态结构分析法;静态质量度量法;逻辑覆盖法;基本路径测试法

静态测试:无需执行被测程序,评审软件文档或代码。从不正式到正式分为三个阶段:互审、走查、会议

动态测试:通过运行被测程序,检查运行结果和预期结果的差异,分析运行效率、正确性、健壮性

手工测试:专门的测试人员从用户视角来验证软件是否满足设计要求

  • 优点:易发现缺陷;容易实施;创造性、灵活性
  • 缺点:覆盖量化难;重复测试效率低;不一致性、可靠性低;人力资源依赖

自动化测试:使用单独的测试软件工具控制测试的自动化执行以及对于预期和结果进行自动检查

  • 优点:高效率、速度快;高复用率;覆盖率容易度量;准确可靠;不知疲劳;
  • 缺点:机械、发现缺陷效率低;一次性投入较大

IMOOC学习网站

你可能感兴趣的:(软件测试基础(1))