【软件测试笔记】软件测试基础

软件测试的目标

(1)测试是为了发现程序中的错误而执行程序的过程

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案

(3)成功的测试是发现了至今为止尚未发现的错误的测试

在综合测试阶段通常由其他人员组成测试小组来完成测试,而不能让程序编写者自己进行测试。

软件测试准则

(1)所有测试都应该能追溯到用户需求。从用户角度看,最严重的错误是导致程序不能满足用户需求的那些错误。

(2)在测试开始之前就要制定出测试计划。一旦完成了需求模型就可以制定测试计划,在建立设计模式之后就可以设计详细的测试方案。在编码之前就可以对所以测试工作进行计划和设计

(3)根据Pareto原理说明,测试发现的错误中的80%很可能是由程序中20%的模块造成的。

(4)应该从“小规模”测试开始,逐步进行“大规模”测试。首先重点测试单个程序模块,然后测试重点转向继承的模块簇中寻找错误,最后在整个系统中寻找错误。

(5)穷举测试是不可能的。

(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。所谓“最佳效果”是指有最大可能性发现错误的测试。

测试方法

测试有两种方法,如果已经知道了产品的功能,可以通过测试来检验是否每个功能都能正常使用,这种称为黑盒测试;如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,这种方法称为白盒测试。

黑盒测试把程序看做一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息(例如数据库)的完整性。黑盒测试又称为功能测试

白盒测试与黑盒测试相反,它把程序看成一个透明的白盒子,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要通路是否按预定要求正确工作。白盒测试又称为结构测试。

测试步骤

模块测试

模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。在这个测试中发现的是编码详细设计的错误

子系统测试

子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。模块间相互的协调和通信是这个测试过程中的主要问题。这个步骤着重测试模块的接口

系统测试

系统测试是把经过测试的子系统装配成一个完整的系统来测试。这个过程中不仅发现设计和编码的错误,还应验证系统确实能提供指定的功能,而且系统的动态特性也符合预定要求。这个步骤发现的往往是软件设计需求说明书中的错误。

子系统测试和系统测试都兼有检测组装两种含义,通常称为集成测试。

验收测试

验收测试把软件系统作为单一的实体进行测试,是在用户积极参与下进行的,而且可能主要使用实际数据。验收测试的目的是验证系统能满足用户的需求,这个步骤发现的往往是系统需求说明书中的错误。验收测试也称为确认测试

平行运行

所谓平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。这样做的目的是:

(1)可以在准生产环境中运行新系统又不冒风险

(2)用户能有一段熟悉新系统的时间

(3)可以验证用户指南和使用手册之类的文档

(4)能够以准确生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标

单元测试

单元测试主要使用白盒测试技术,而且是对多个模块的测试可以并行地进行。

测试的重点:

(1)模块接口

(2)局部数据结构

(3)重要的执行通路

(4)出错处理通路

(5)边界条件

集成测试

集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题(系统测试类似)。

由模块组装成程序有两种方法:一种方式是先分别测试每个模块,再把所有模块按设计要求组合成所需要的程序,这种称为非渐增式测试方法;另一种方法是把下一个要测试的模块和已经测试好的那些模块结合起来进行测试,测试完后再把下一个要测试的模块结合进来测试,这种每次增加一个模块的方法称为渐增式测试,这种方法可以同时完成单元测试和集成测试。

自顶向下集成

从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于主控制模块的那些模块组装到程序结构中去时,使用深度优先策略或广度优先策略。

自顶向下的结合策略能够在测试 的早期对主要的控制或关键的抉择进行检验。

自底向上集成

自底向上测试从“原子”模块开始组装和测试。因为是从底部向上结合模块,总能得到所需下层模块的处理功能,因此不需要存根程序。

确认测试

确认测试也称为验收测试,它的目的是验证软件的有效性。

确认测试必须有用户积极参与,或者以用户为主进行。

确认测试通常使用黑盒测试。

白盒测试技术

通常把测试数据和预期的输出结果称为测试用例。

逻辑覆盖

有选择地执行程序中某些最有代表性的通路是对穷尽测试的唯一可行的替代方法。

语句覆盖

为了暴露更多错误,至少每个语句应该执行一次。语句覆盖的含义是,选择足够多的测试数据,使被测程序中的每个语句至少执行一次。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。

判定覆盖

判定覆盖又叫分支覆盖,不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。

条件覆盖

条件覆盖的含义是不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果

条件覆盖比判定覆盖强,因为它使判定表达式中每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。

既然判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。

判定/条件覆盖

选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果

条件组合覆盖

条件组合覆盖要求选取足够多的测试数据,使得每个判定表达式中的条件的各种可能组合都至少出现一次

满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。

点覆盖

如果连通图G的子图g是连通的,而且包含G的所有节点,则称g是G的点覆盖

边覆盖

如果连通图G的子图g是连通的,而且包含G的所有边,则称g是G的边覆盖。

路径覆盖

路径覆盖的含义是,选取足够多的测试数据,使程序的每条可能路径都至少执行一次。

黑盒测试技术

黑盒测试可能发现的问题:

(1)功能不正确或遗漏功能

(2)界面错误

(3)数据结构错误或外部数据库访问错误

(4)性能错误

(5)初始化和终止错误

白盒测试是在测试过程早期阶段进行的,而黑盒测试主要在测试过程的后期。

等价划分

等价划分是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。没雷中的一个典型值在测试中的作用与这一类中的其他值的作用相同。等价类分为有效等价类无效等价类

边界值分析

边界处经常发生错误,因此通常输入等价类和输出等价类的边界,就是应该着重测试的程序边界情况。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试的目标是确保软件在交付给用户之前具备高质量和可靠性。为了实现这一目标,软件测试需要完成以下几个方面的工作: 1. 验证功能:测试人员通过执行各种测试用例来验证软件的功能是否按照需求规格说明书定义的要求正常工作。这包括输入输出的正确性、界面的响应和交互等。 2. 发现缺陷:测试人员通过执行各种测试用例来发现软件的缺陷和错误。这些缺陷可能导致软件崩溃、功能失效或者产生错误的结果。 3. 评估质量:测试人员通过执行各种测试用例来评估软件的质量水平。这包括性能测试、安全性测试、可靠性测试等。 4. 提供反馈:测试人员通过编写测试报告和缺陷报告来向开发团队提供关于软件质量和缺陷情况的反馈。这有助于开发团队改进软件并修复缺陷。 至于软件测试的计划,它是指在软件开发过程制定的一系列测试活动和时间安排。软件测试计划通常包括以下内容: 1. 测试目标:明确定义测试的目标和范围,确定要测试的功能和特性。 2. 测试策略:确定测试的方法和技术,包括测试用例设计、测试环境的搭建等。 3. 测试资源:确定测试所需的人员、设备和工具等资源。 4. 测试进度:制定测试的时间计划,包括测试的开始和结束时间,以及各个阶段的时间安排。 5. 缺陷管理:确定如何收集、跟踪和解决缺陷,包括缺陷报告的格式和流程等。 6. 风险评估:评估测试过程可能出现的风险,并制定相应的应对措施。 7. 交付标准:确定软件测试完成后的交付标准和验收标准。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值