软件测试的基本知识

一、软件的概念

计算机软件,是指 计算机程序 以及 解释和指导使用程序的文档的总和。
计算机程序,包括 源程序目标程序 。同一程序的源文本和目标文本应当视为同一作品。
源程序,是指用高级语言或者汇编语言编写的程序。
目标程序,是指源程序经过编译或解释加工以后可以由计算机直接执行的程序。

二、软件危机的概念

软件危机(Software Crisis),是指计算机软件在它的开发和维护过程中所遇到的一系列严重问题。主要包括以下两方面的问题:

  1. 如何开发软件,怎样满足对软件日益增长的需求;
  2. 如何维护数量不断膨胀的已有软件。
三、软件危机的主要表现
  1. 软件项目经常无法按期完成,超出经费预算,软件质量难以控制;
  2. 开发过程管理不规范,约定不严密,文档书写不完整,使得软件维护费用高,有些系统甚至无法进行修改;
  3. 缺乏严密有效的质量检测手段,交付给用户的软件质量差,在运行中出现许多问题,甚至带来严重的后果;
  4. 系统更新换代难度大。
四、造成软件危机的主要原因
  1. 在软件系统的开发过程中,软件缺陷的积累与放大效应是导致软件危机的最主要原因。
五、软件测试的概念
  1. 1979年,Glenford Myers,《软件测试艺术》[The Art of Software Testing]:程序测试是为了发现错误而执行程序的过程。
  2. 1983年,IEEE软件工程标准术语:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。
  3. 广义的软件测试则是由确认、验证、测试3个方面组成。(P5)
六、软件测试的分类
  1. 按照程序是否执行
  • 静态测试:是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。
  • 动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。包括以下内容:
    • 功能确认与接口测试;
    • 覆盖率分析;
    • 性能分析;
    • 内存分析。
  1. 按照测试用例的设计方法
  • 白盒测试(White-Box Testing):又称结构测试、逻辑驱动测试,基于程序的测试。针对特定条件和循环集设计测试用例,对软件的逻辑路径进行测试。在程序的不同点检验“程序的状态”,以判定其实际情况是否和预期的状态一致。根据被测程序的内部结构设计测试用例
  • 黑盒测试(Black-Box Testing):又称功能测试、数据驱动测试,基于规格说明书的测试,是一种从用户观点出发的测试。测试时,把被测程序当做一个黑盒,在不考虑程序内部结构和内部性能、只知道该程序的输入和输出之间的关系或程序的功能的情况下,来确定测试用例和推断测试结果的正确性。主要用来证实软件功能的正确性和可操作性。
  1. 按照开发阶段
  • 单元测试(Unit Testing):针对每个程序的模块,主要测试5个方面的问题,分别是模块接口、局部数据结构、边界条件、独立的路径和错误处理。
    • 模块接口测试:是对模块接口进行的测试,检验进出程序单元的数据流是否正确,模块接口测试必须在任何其他测试之前进行。
    • 局部数据结构测试:主要测试在模块工作过程中,模块内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。
    • 针对路径的测试:测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。
    • 边界条件测试:是单元测试的最后一步,必须采用边界值分析方法来设计测试用例。
  • 集成测试(Integration Testing):分为非增量式集成测试和增量式集成测试。
    • 非增量式集成测试:采用一步到位的方法来构造测试。先对所有模块进行个别的单元测试,然后连接,进行整体测试。
    • 增量式集成测试:逐步集成,逐步测试。分为自顶向下增量式测试、自底向上增量式测试、混合增量式测试3种方法。
  • 确认测试:为已开发的软件给出结论性评价,并结合需求说明书,得到一个各项缺陷清单。一般包括:有效性测试、软件配置审查等测试。
  • 系统测试:在实际运行环境下,对计算机系统进行全面的功能覆盖。
  • 验收测试:
    • 流程:(1)明确验收项目,规定测试验收通过的标准;(2)确定测试方法;(3)决定验收测试的组织机构和可利用的资源;(4)选定测试结果分析方法;(5)制定验收测试计划并进行评审;(6)设计验收测试所用的测试用例;(7)审查验收测试准备工作;(8)执行验收测试;(9)分析测试结果;(10)做出验收结论,明确通过验收或不通过验收。
  1. 按照测试实施组织
  • 开发方测试,用户测试(贝塔测试),第三方测试;
  • Alpha Testing(α测试):是由一个用户开发环境下进行的测试,或者,是公司内部的用户模拟实际操作环境下进行的受控测试;Beta Testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。(α测试和β测试均不能由程序员或测试员完成。β测试时开发者通常不在测试现场)
  1. 按照测试实施组织
  • 手动测试:软件测试工程师,通过安装和运行被测软件,根据测试文档的要求,运行测试用例,观察软件运行结果是否正确的过程;
  • 自动测试:是指使用各种自动测试工具软件,通过运行事先设计的测试脚本等文件,测试被测软件,自动产生测试报告的过程。
七、正确认识软件测试
  1. 不可能完全测试一个程序;
  2. 测试有风险;
  3. 找到的缺陷越多软件缺陷越多;
  4. 测试无法显示潜伏的软件缺陷;
  5. 并非所有软件缺陷都能修复。

猜你喜欢

转载自blog.csdn.net/u013715234/article/details/86658819