软件工程复习指南5-软件测试

基本概念

  1. 什么是软件测试
    狭义:为了发现软件错误而执行软件的过程。
    广义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
    测试是为了证明程序中有错误,而不是证明程序中无错误
    一个好的测试用例指的是它可能发现至今尚未发现的缺陷
    一次成功的测试指的是发现了新的软件缺陷的测试
  2. 软件测试原则
  • 足够好原则
    • 不充分的测试是不负责任的;
    • 过分的测试是一种资源的浪费。
    • 如何界定什么样的测试是不充分的,什么样的测试是过分的?
    • 制定最低测试通过标准和测试内容
  • Pareto法则( 80/20定律)
    • 测试中发现的80%的错误可能来自于20%的程序代码
    • 充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目成正比。
  1. 测试用例( Test Case )是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。在这里插入图片描述
  2. . 黑盒与白盒测试
    白盒测试(又称为结构测试)把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作,白盒测试主要用于对模块的测试.
    黑盒测试(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求,黑盒测试可用于各种测试.
    例题:
    软件测试的目标是( B)
    A、证明软件是正确的
    B、发现错误、降低错误带来的风险
    C、排除软件中所有的错误
    D、与软件调试相同
    软件测试方法中,黑盒、白盒测试法是常用的方法,其中白盒测试主要用于测试( D)
    A、结构合理性
    B、软件外部功能
    C、程序正确性
    D、程序内部逻辑

软件测试的分类

  1. 测试方式分类
    静态测试(不需要执行所测试的程序,查询代码是否符合规范,对程序的数据流和控制流进行分析)
    动态测试(选择实际测试用例运行测试程序,模拟用户输入)
  2. 测试过程分类
    单元测试:是针对程序中的模块或构件,主要揭露编码阶段产生的错误
    集成测试:针对集成的软件系统,主要揭露设计阶段产生的错误
    确认测试:是根据软件需求规约对集成的软件进行确认,主要揭露不符合需求规约的错误
    系统测试:对于基于计算机系统中的软件,还需将它集成到基于计算机系统中,并进行系统测试,以揭露不符合系统工程中对软件要求的错误
  3. 测试目的分类
    功能测试,健壮性测试,接口测试,性能测试,强度测试,压力测试,用户界面测试,安全测试,可靠性测试,安装/反安装测试,文档测试,恢复测试,兼容性测试

软件测试中根据测试用例设计的方法的不同可分为黑盒测试和白盒测试两种,它们( D)
A、前者属于静态测试,后者属于动态测试
B、前者属于动态测试,后者属于静态测试
C、都属于静态测试
D、都属于动态测试
在进行软件测试时,首先应当进行以下哪项测试,然后再进行集成测试( A)
A、单元测试
B、系统测试
C、集成测试
D、确认测试

测试策略

  • 应由什么人来组织测试:
    测试贯穿于整个软件的开发过程中,开发人员必须参与测试
    对即将交付软件的集成测试,开发人员往往也要参加
    集成测试中,有独立测试组(ITG)的介入
    ITG应从一开始就要介入项目,只是不像开发人员过多地注意细节
  • 测试完成的标准
    测试只能是在某个阶段告一段落。
    由于软件使用的软环境可能要永恒地变化。所以,它时刻、永远地面临考验,没有尽头。
    测试是永远也完不成的
  • 测试策略
    开始于 ‘小范围测试’ ,并移向 ‘大范围测试’
    对于传统的软件
    开始集中在模块 (构件)
    之后进行模块集成
    对于面向对象的软件
    当进行 ‘小范围测试’时,关注点从单个模块(传统上的)转变到面向对象的类,类封装了属性和操作,并意味着通信和协作
    在这里插入图片描述
  • 单元测试:主要对模块的五个基本特性进行评价
    5.
  • 单元测试环境:
    由于模块并不是独立的程序,所以必须为每个测试单元开发驱动程序和桩程序
    驱动程序:是“主程序”,接收测试用例数据,将这些数据传递给待测试模块
    桩程序:替换那些被测模块所调用的模块在这里插入图片描述
  • 集成测试
    • 构造软件体系结构的系统化技术,同时也进行一些旨在发现与接口相关错误的测试
    • 一步到位的集成
    • 增量集成:程序以小增量方式进行构造和测试
      • 自顶向下测试:从主控模块开始,沿着控制层次结构逐步向下,利用深度优先或广度优先的方式将从属于主控模块的模块集成到结构中去
      • 自底向上测试:从原子模块开始进行构造和测试
      • 组合方法(三明治):用自顶向下方法测试程序结构较高层,用自底向上方法测试其从属层
  • 回归测试(Regression Testing)
    回归测试是重新运行已经进行过的测试子集,以确保变更没有引发非预期的副作用。
    每次对软件进行修改时,就改变了软件配置的某些方面(软件、文档及支持软件的数据)。
    回归测试有助于确保变更(由于测试或者其他原因)不会引入非预期的行为或者增加的错误。
    回归测试可以手动进行,通过重新运行一部分测试用例或者全部测试用例,也可以使用自动的捕获/回放工具。
  • 冒烟(Smoke Testing)
    是对产品软件进行“每日构造”的一种常见方法。
    冒烟测试步骤:
    已经被翻译为代码的软件构件被集成到构造( “build” )中。
    一个构造包括所有的数据文件、库、可重用的模块、以及工程化的构件,其中一个构件需要实现一项或多项产品功能。
    设计一系列测试来揭示错误,使得此构造不能正确地执行其功能。
    目的是揭示“显示阻塞” 错误,这种错误最有可能使软件项目滞后于进度计划。
    将此构造与其他构造集成在一起,每天都对整个产品(以其当前的形式)进行冒烟测试。
    集成方法可以是自顶向下,也可以是自底向上。
  • 面向对象软件的测试
    • 类测试
      • 不再孤立地测试单个操作,而是将其作为类的一部分,相当于传统软件的单元测试
      • 要考虑类的层次,测试顺序由父类到子类
    • 集成测试
      • 基于线程的测试
      • 基于使用的测试
  • 确认测试(验收测试)
    侧重于需求级的错误,即对最终用户是显而易见的错误
    软件规格说明中包含的信息是确认测试的基础
    配置评审:确保所有软件配置元素已正确开发、编目,且具有软件生命周期各阶段的必要细节
    α测试:最终用户在开发场所完成,软件在自然的环境下使用,开发者在旁边观看,并记录错误和使用问题
    β测试:在最终用户场所执行,开发者通常不在场
  • 系统测试
    系统测试是将已经开发好的软件系统,作为计算机系统的一个元素,与计算机硬件、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。
    恢复测试
    通过各种方式强制地让系统发生故障,并验证其能适当恢复
    安全测试
    验证系统内的保护机制能够保护系统不受非法入侵
    使攻破系统所付出的代价大于攻破系统之后获取信息的价值
    压力测试
    能将系统折腾到什么程度而不会出错?
    以一种反常数量、频率或容量的方式执行系统
    性能测试
    测试软件的运行性能
    常和压力测试一起进行,常需要硬件和软件配合
    在软件正式发布前,用户在非开发方的场所自由对软件进行的测试称为( D)
    A、系统测试
    B、Alpha测试
    C、集成测试
    D、Beta测试

测试方法

  • 白盒测试技术
    • 白盒测试是有选择地执行(或覆盖)程序中某些最有代表性路径的测试方法,所以也称为逻辑覆盖测试
      • 逻辑覆盖法
      • 基本路径测试法
      • 循环测试方法
  • 逻辑覆盖法:
    语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能执行一次
    判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值,即使得程序中的每一个分支至少都通过一次
    条件覆盖:执行足够的测试用例,使得判定中每个原始条件获得各种可能的结果
    判定/条件覆盖:执行足够的测试用例,同时满足判定覆盖和原始条件覆盖的要求
    条件组合覆盖:执行足够的测试用例,使得每个判定中原始条件的各种可能组合都至少执行一次

下面几种白箱测试技术,哪种是最强的覆盖准则( D)
A、语句覆盖
B、条件覆盖
C、判定覆盖
D、条件组合覆盖

  • 黑盒测试技术
    • 等价类划分
    • 边值分析法
    • 错误推测法
    • 因果图法(条件组合,判定表)
  • 等价类划分:
    由于不能穷举所有可能的输入数据来进行测试,所以只能选择少量有代表性的输入数据,来揭露尽可能多的程序错误
    等价类划分的办法是把程序的输入域划或者输出域分成若干等价类,然后从每个部分中选取少数代表性数据当作测试用例
    等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。
    根据输出数据等价类导出输入数据等价类
  • 边界值分析:
    • 大量的错误是发生在输入或输出范围的边界上,边界值揭露程序中错误的可能性就更大,边值分析法是对等价类划分方法的补充,这种情况下,测试用例来自等价类的边界。
    • 应当选取正好等于,刚刚大于,刚刚小于边界的值做为测试

确定等价类原则
如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。
输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。
已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划分成更小的等价类。

根据等价类设计测试用例的步骤
为每一个等价类规定一个唯一的编号。
设计一个新的测试用例,使其能够尽量覆盖尚未覆盖的有效等价类。重复这个步骤,直到所有有效等价类均被测试用例所覆盖。
设计一个新的测试用例,使其仅覆盖一个尚未覆盖的无效等价类。重复这个步骤,直到所有无效等价类均被测试用例所覆盖。

例题:

某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。
等价类划分法:
等价类划分:在这里插入图片描述设计测试用例
在这里插入图片描述

边值分析法:在这里插入图片描述

  • 25
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月落霜满天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值