写在前面:要结课了整理了下笔记,祝逢考必过!
1、软件测试基础
1.1软件概述
1.1.1软件的生命周期
** **(1) 概念:软件从“出生”到“消亡”的过程,称为生命周期。
(2)阶段划分:
阶段划分
1问题定义主要确定软件的开发目的和可行性2需求分析作用在整个软件的生命周期中,直接关系到后期的开发成功率。3软件设计在需求分析结果的基础上,对整个软件系统进行设计4软件开发选择语言开发,制定规范5软件测试查找软件设计与软件开发过程中存在的问题并加以修正6软件维护包括纠错性维护和改进型维护两方面,在软件生命周期中持续时间最长
1.1.2 软件开发模型
软件开发模型规定了软件开发遵循的步骤,是软件开发的导航图,能够清晰、直观地表达软件开发的全过程。
软件开发模型
1瀑布模型
(1)严格按照线性方式进行;
(2)无法适应用户需求的变更,增加了开发风险;
(3)要求每一个阶段必须有结果产出;
2快速原型模型
(1)根据用户需求快速搭建一个软件原型
(2)克服了需求不明带来的风险
(3)适用于不能预先确定需求的软件项目
(4)不利于开发人员对产品进行扩展
3迭代模型
(1)以组件的形式交付给客户
(2)可以很好地适应用户需求的变更
(3)降低了软件开发成本与风险
(4)有集成失败的风险
(5)容易失去对软件开发过程的整体控制
4螺旋模型
(1)引入了其他模型所忽略的风险分析
(2)有助于将软件质量作为特殊目标融入产品开发之中
(3)成本易控制,用户常参与,项目不偏离
5敏捷模型
(1)以用户的需求进化为核心
(2)采用迭代、循序渐进的方法进行软件开发
(3)及时响应客户需求的变更,不断适应新趋势
(4)但人员较多,面对面的有效沟通困难
(5)适用于小型项目的开发
1.1.3 软件质量概述
1.软件质量的概念
软件质量是指软件产品满足基本需求及隐式需求的程度。可将软件质量分为三个层次:
(1)满足需求的规定
(2)满足用户需求
(3)满足用户隐式需求
2.软件质量模型
评价软件质量的国际标准ISO/IEC 9126:1991,由六个特性组成。分别为:功能性、可靠性、可使用性、效率、可维护性、可移植性。
3.影响软件质量的因素
(1)需求模糊
(2)软件开发缺乏规范性的指导
(3)软件开发人员问题
(4)缺乏软件质量控制管理
1.2 软件缺陷管理
1.2.1 软件缺陷产生的原因
1.从产品内部方面:缺陷是产品开发或维护过程中存在的错误、毛病等各种问题。
2.从产品外部方面:缺陷是系统运行过程中某种功能的失效或违背。
3.软件缺陷产生的原因主要有:
- 需求不明确
- 软件结构复杂
- 编码问题
- 项目期限短
- 使用新技术
1.2.2 软件缺陷的分类
1.2.3 软件缺陷的处理流程
1.3 软件测试概述
1.3.1 软件测试简介
软件测试定义:软件测试是使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异。
1.3.2 软件测试的目的
1.对软件开发来说:软件测试通过找到的问题缺陷帮助开发人员找到开发过程中存在的问题,预防下次缺陷的产生。
2.对于软件测试来说:使用最少的人力、物力、财力、时间找到软件中隐藏的缺陷,保证软件的质量,为以后软件测试积累经验。
3.对于客户需求来说:软件测试能够检测是否符合客户需求,对软件质量进行评估和度量,为客户评审软件提供有力的依据。
1.3.3 软件测试的分类
1.按照测试阶段分类
- 单元测试
- 冒烟测试
- 集成测试
- 系统测试
- 验收测试
2.按照测试技术分类
- 黑盒测试
- 白盒测试
3.按照软件质量特性分类
- 功能测试
- 性能测试
4.按照自动化程度分类
- 手工测试
- 自动化测试
5.按照测试类型分类
- 界面类测试
- 安全性测试
- 文档测试
1.4 软件测试与软件开发
1.4.1软件测试与软件开发的关系
1.软件测试在各个阶段的作用:
项目规划阶段负责从单元测试到系统测试的整个测试阶段的监控需求分析阶段确定测试需求分析,同时制定系统测试计划概要设计与详细设计阶段制定单元测试计划和集成测试计划编码阶段开发相应的测试代码和测试脚本测试阶段实施测试并提交相应的测试报告
2.软件开发:自顶向下、逐步细化的过程。
3.软件测试:自底向上、逐步集成的过程。
1.4.2 常见的软件测试模型
1.V模型
描述了基本的开发过程与测试过程,主要反映了测试活动分析与设计之间的关系。
2.W模型
由V模型演变而来,强调测试应伴随整个软件生命周期,有利于尽早的发现问题。
3.H模型
测试级别不存在严格的次序关系,软件生命周期的各阶段的测试工作可以反复触发、迭代、,即不同的测试可以反复迭代的进行。
4.X模型
X模型的设计原理是将程序分成多个片段反复迭代测试,然后将多个片段集成再进行迭代测试。
1.5 软件测试的原则
- 测试应基于客户需求
- 测试要尽早进行
- 穷尽测试是不可能的
- 遵循GoodEnough原则(测试的投入与产出适当权衡)
- 测试缺陷要符合“二八”定理(缺陷不是平均分布的,80%缺陷会集中在20%的模块中)
- 避免缺陷免疫(定式思维所导致)
1.6 软件测试的基本流程
虽然不同软件的详细测试步骤不同,但它们所遵循的基本测试流程是一样的。
- 分析测试需求
- 制定测试计划
- 设计测试用例
- 执行测试
- 编写测试报告
2. 黑盒测试方法
2.1 等价类划分法
2.1.1 等价类划分法概述
一个程序可以有多个输入,等价类划分就是将这些输入数据按照输入需求进行分类,将他们划分为若干个子集,这些子集即为等价类。
- 划分等价类
(1)有效等价类:有效值的集合,他们是符合程序的要求、合理且有意义的输入数据。
(2)无效等价类:无效值的集合,他们是不符合程序的要求,不合理或无意义的输入数据。
2.设计测试用例
基于等价类划分法的测试用例设计步骤如下:
- (1)确定测试对象,保证非测试对象的正确性;
- (2)为每个等价类规定一个唯一编号;
- (3)设计有效等价类的测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类;
- (4)设计无效等价类的测试用例,使其覆盖所有的无效等价类。
2.1.2 三角形问题的等价类划分
三角形输入等价类表
有效等价类的测试用例
无效等价类的测试用例
2.2 边界值分析法
2.2.1 边界值分析法概述
边界值分析法是对软件的输入或输出边界进行测试的一种方法,它通常作为等价类划分法的一种补充测试。
在等价类中选择边界值时,如果输入条件规定了取值范围的值或个数,则在选取边界值时可选取5个或7个测试值。若为5个测试值:最小值、略大于最小值、正常值、略小于最大值、最大值。若为7个:则是在5的基础上增加略小于最小值和略大于最大值。
边界值作为一种单独的软件测试方法,它只在边界取值上考虑测试的有效性,相对于其他等价类划分法来说,他的执行更加简单易行,但缺乏充分性,不能全面的测试软件,**因此他只能作为等价类划分法的补充测试****。**
2.2.2 三角形问题边界值分析
三角形边界值分析测试用例
2.3 因果图与决策表法
描述多个输入之间的制约关系。
2.3.1 因果图设计法
因果图法是利用图解法分析各种组合情况的测试方法,它考虑了输入条件的各种组合及输出条件之间的相互制约关系,并考虑输出情况。
1.因果图
包含四种关系:恒等、非、或、与。
2.因果图法设计测试用例特点
(1)因果图法考虑了输入情况的各种组合以及各种输入情况之间的相互制约关系,可以帮助测试人员按照一定的步骤高效的开发测试用例。
(2)因果图是由自然语言规格说明转化成语言规格说明的一种严格方法,能够发现规格说明书中存在的不完整性和二义性,帮助开发人员完善产品的规格说明书。
2.3.2 决策表(判定表)
1.输入较多时,因果图比较复杂,因此往往使用决策表法替代因果图法。
2.它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确。利于决策表可以设计出完整的测试用例集合。
3.决策表通常由四部分组成:条件桩、条件项、动作桩、动作项。
2.3.3 三角形决策表
三角形决策表
三角形测试用例
2.4 正交实验设计法
正交实验设计法是指从大量的实验点中挑选出适量的、有代表性的点,依据Glois理论导出“正交表”,从而合理的安排实验的一种实验设计方法。
此法包含三个**关键因素**:
- 指标:判断实验优劣的标准;
- 因子:所有影响实验指标的条件;
- 因子的状态:指因子变量的取值;
3. 白盒测试
白盒测试又称为透明盒测试、结构测试,它基于程序内部结构进行测试,而不是测试应用程序的功能。
3.1 逻辑覆盖法
逻辑覆盖法是白盒测试最常用的测试方法,它包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖5种。
3.1.1 语句覆盖
1.别称:行覆盖、段覆盖、基本块覆盖。
2.语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句。
3.语句覆盖是弱覆盖方法。
3.1.2 判定覆盖
原则是设计足够多的测试用例,在测试的过程中保证每个判定至少有一次真值,有一次为假值。虽然判定语句覆盖比语句覆盖强,但仍然具有和语句覆盖一样的单一性。(弱覆盖)
3.1.3 条件覆盖
设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次。
3.1.4 判定-条件覆盖
要求设计足够多的测试用例,是的判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。
弥补了条件覆盖和判定覆盖的不足,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖更全面。仍存在遗漏的情况。
3.1.5 条件组合覆盖
设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次。
与判定-条件覆盖相比,条件组合覆盖包括了所有判定-条件覆盖,因此它的覆盖范围更广。但是当程序中条件比较多的时候,条件组合会呈指数级增长,这样反而测试效率会降低。
3.2 程序插桩法
程序插桩就是往被测程序中插入测试代码以达到测试目的的方法,插入的测试代码被称为探针。根据测试代码插入的时间可以将程序插桩法分为**目标代码插桩和源代码插桩**。
3.2.1 目标代码插桩
目标代码插桩是指向目标代码插入测试代码获取程序运行信息的测试方法,也称为动态程序分析方法。
相比于逻辑覆盖法,目标代码插桩在测试过程中不需要代码重新编译或链接程序,并且目标代码的格式和具体的编程语言无关,主要和操作系统相关,因此被广泛使用。
1.目标代码插桩的原理
原理:在程序运行平台和底层操作系统之间建立中间层,通过中间层检查执行程序、修改指令。
2.目标代码插桩法的执行模式
分为两种情况:
(1)对未运行的目标代码插桩,从头到尾测试代码,然后执行程序。
(2)向正在运行的程序插入测试代码,用来检测程序在特定时间的运行状态信息。
分为三种执行模式:
(1)即时模式:原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。
(2)解释模式:在解释模式中目标代码被视为数据,测试通过替代指令指令的执行信息就可以获取程序的运行信息。
(3)探测模式:使用新指令覆盖旧指令进行测试。
3.由于目标程序是可执行的二进制文件,人工插入代码是无法实现的,因此目标代码插桩一般通过相应的插桩工具实现。
3.2.2 源代码插桩
源代码插桩是指对源文件进行完整的词法、语法分析后,确定插桩的位置,植入探针代码。
相比目标代码插桩:具有精确性和针对性。
源代码插桩是在程序执行之前完成的,因此源代码插桩在程序运行过程中会产生探针代码的开销。
4.相比较目标代码插桩,源代码插桩实现复杂程度低,探针代码具有好的通用性(使用同一种语言编写的程序可以使用一个探针代码程序来完成测试)。
黑盒测试和白盒测试比较
测试种类发现缺陷/适用情况特点黑盒测试
(1)外部逻辑功能缺陷
(2)兼容性错误
(3)性能问题
不用考虑内部逻辑结构,仅仅需要验证软件外部功能是否符合用户实际需求。白盒测试
(1)源程序中含有多个分支
(2)内存泄漏检查迅速
可以设计用例尽可能覆盖程序中的分支语句,分析程序内部结构。
测试阶段
测试名称测试对象测试方法单元测试模块功能白盒测试集成测试接口测试黑盒测试和白盒测试系统测试系统测试黑盒测试验收测试系统测试黑盒测试
4. 性能测试
性能测试是度量软件质量的一种重要手段,他从响应速度、稳定性、兼容型、可移植性等方面检测软件是否满足用户需求。
4.1 性能测试
1.概述:使用性能测试工具模拟正常、峰值及异常负载状态,对系统的各项性能指标进行测试活动。
2.作用:验证软件是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的瓶颈及缺陷,从而优化系统的性能。
3.目的:
(1)验证系统性能是否满足预期的性能需求;
(2)分析软件系统在各种负载水平下的运行转态,提高性能需求和效率;
(3)识别系统缺陷,寻找系统中可能存在的性能问题;
(4)系统调优,探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。
4.2 性能测试的指标
性能测试常用的指标包括响应时间、吞吐量、并发用户数、TPS等。
1.响应时间
系统对用户请求做出响应所需要的时间。
2.吞吐量
单位时间内系统能完成的工作量,他衡量的是软件系统服务器的处理能力。
3.并发用户数
同一时间请求和访问的用户数量。
4.TPS
系统每秒钟能够处理的事务和交易的数量。
5.点击率
用户每秒向Web服务器提交的HTTP请求数,**这个指标是Web应用特有的一个性能指标**。
6.资源利用率
软件对系统系统资源的使用情况,是**分析软件性能瓶颈的重要参数**。
4.3 性能测试的种类
性能测试是一个统称,包含多种类型。主要有:
1.负载测试
逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统能够承受的最大负载量。
2.压力测试
** **逐步给系统增加压力,测试性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而测定系统所能承受的最大压力。
ps:负载测试与压力测试的区别
例如:软件系统正常的响应时间为2s,负载测试时确定访问量超过1万时响应时间变慢。
压力测试则继续增加用户的访问量,当用户增加到4万时,系统崩溃。
则可以确定,最大负载是1万人(开始影响性能),最大压力4万人(系统撑不住了)
3.并发测试
4.配置测试
5.可靠性测试
6.容量测试
4.4 性能测试流程
- 分析性能测试需求
- 制定性能测试计划
- 设计性能测试用例
- 编写性能测试脚本
- 测试执行及监控
- 运行结果分析
- 提交性能测试报告
4.5 性能测试工具
常用:LoadRunner和JMeter
4.5.1 LoadRunner
主要特点:
- 广泛支持业界标准协议
- 支持多平台开发的脚本
- 可创建真实的系统负载
- 具有强大的实时监控与数据采集功能
- 可以精确分析结果,定位软件问题
缺点:收费
组成部分:Virtual User Generator(简写VuGen)、Controller和Analysis。
作用:
1.VuGen
用于创建虚拟用户脚本的工具,因此也被称为虚拟用户脚本生成器。
2.Controller
** ** 用于创建和控制LoadRunner场景,场景负责定义每次测试中发生的事件。
3.Analysis
数据分析工具,可以收集测试中的各种数据,对其进行分析生成图表和报告供测试人员查看。
4.5.2 JMeter
优势:开源免费。
工作原理与LoadRunner类似,不同的是:JMeter通过线程创建虚拟用户。虚拟用户向服务器发送一个请求,JMeter称之为一次采样,这个操作由采样器完成。
JMter工具核心组件:
- 逻辑控制器
- 配置元件
- 前置处理器
- 定时器
- 采样器
- 后置处理器
- 断言
- 监听器
缺点:报表少、分析没有LoadRunner详细。
5. 自动化测试
5.1 自动化概述
5.1.1 什么是自动化概述
自动化测试,是把以人为驱动测试行为转化为机器执行的过程。实际上就是模拟手工测试过程。
实施自动化测试之前,需要对软件开发过程进行分析。需要满足的条件有:
- 项目需求变动不频繁
- 项目周期足够长
- 自动化测试脚本可重复使用
5.1.2 自动化测试的基本流程
- 分析测试需求
- 指定测试计划
- 设计测试用例
- 搭建测试环境
- 编写并执行测试脚本
- 分析测试结果、记录测试问题
- 跟踪测试Bug
5.1.3 自动化测试实施策略
追求敏捷开发导致许多团队采用金字塔策略。
1.单元测试
要求开发中对每个功能模块进行测试,通常采用白盒测试,主要对代码内部结构进行测试。
2.接口测试
** **对数据传输、数据库性能等进行测试,通常使用白盒加黑盒的相结合形式进行。
3.UI测试
以用户体验为主,不是完全通过自动化测试。
5.1.4 自动化测试的优势和劣势
自动化测试只是众多测试中的一种,并不比人工测试更高级更先进。
优势劣势自动化测具有一致性和重复性,测试更客观,提高了软件测试的准确性、精确度和可信任度。对测试团队的技术有更高的要求。将任务自动化,解放人力。无法替代人工测试找到Bug,也不能实现百分百覆盖。只需布置好相应的场景,即可对测试结果进行分析反馈。需要花费较大的时间成本可以模拟复杂的测试场景完成1人工无法完成的测试。产品的快速迭代有助于创建持续集成环境不能保证测试的有效性
5.2 自动化测试常见技术
1.录制与回放测试
录制过程中会生成对应的脚本,回放可以查看录制过程中存在的不足。
2.脚本测试
脚本测试是测试计算机程序执行的指令集和。测试脚本主要有以下几种:
(1)线性脚本
(2)结构化脚本
(3)共享脚本
3.数据驱动测试
** ** 指的是根据不同的测试场景设计不同的测试用例。主要包括:
(1)关键字驱动测试
(2)行为驱动测试
5.3 自动化测试常用工具
1.Selenium
** ** 当前针对Web系统的最受欢迎的开源免费的自动化工具。主要有以下特点:
(1)开源免费
(2)支持多平台
(3)支持多语言
(4)API使用简单,开发语言驱动灵活
(5)支持分布式测试用例执行
核心工具:
(1)Selenium IDE(集成测试环境)
(2)Selenium Grid
(3)Selenium Romote Control
2.Katalon Studio
3.UFT
** ** 商业的软件自动化测试和回归测试工具。
5.4 持续集成测试
持续集成(CI)是软件开发(DevOps)中的一个概念,他强调的是软件开发和IT运维人员之间协作软件交付方式,以协作测试、打包和部署软件为核心,目的是增强软件版本的发布规律和可靠性。
5.4.1 持续集成的概念
在持续集成中,开发人员会频繁的向主干提交代码,这些新提交的但首先经过编译和自动化测试验证,然后合并到主干。
CI是在源代码变更后自动检测、拉取、构建以及进行单元测试的过程。CI的好处是花费少量的时间即可完成自动化测试。
5.4.2 持续集成测试框架设计
** 1.传统持续集成框架设计**
** 2.持续集成容器化框架设计**
基于容器的持续集成平台在环境搭建上耗时少于传统的持续集成系统搭建,可以秒级启动一个镜像生成一个持续集成环境。容器占用资源少并且保证了开发环境和测试环境的统一,降低了测试重复率,极大地提高了测试效率。
5.5 自动化测试脚本
5.5.1 网页元素定位
** 1.使用class属性定位**
** 2.使用id属性定位**
** 3.使用xpath属性定位**
4.使用link text定位
5.5.2 具体定位操作
http://t.csdn.cn/VCOnvhttp://t.csdn.cn/VCOnv
习题
习题1.
四、简答题(30分)
1.试描述软件测试的定义(3分)
答:利用手工或者自动化的方式,按照测试方案对系统执行测试用例的过程叫做软件测试。
2.什么是软件缺陷(4分)
答:满足以下条件的问题都叫缺陷:
软件未达到产品说明书中已标明的功能
软件出现了产品说明书中指明不会出现的错误
软件功能超出了产品说明书指明的范围
软件未达到产品说明书虽未指出但应达到的目标
软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为该软件使用效果不好。
3.常见的黑盒测试用例的设计方法并分别简单介绍一下各自的思想。(8分)
答:等价类划分:等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。
边界值分析:对输入输出的边界值进行测试的一种黑盒测试方法。
决策表法:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具
因果图分析法:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
4. 列举常见的系统测试方法。答出来5个即可。(5分)
答:恢复测试安全测试强度测试性能测试正确性测试可靠性测试兼容性测试Web测试
5.文档测试主要测试哪些内容答出来5点即可(5分)
答:(1)检查产品说明书属性(2)检查是否完整(3)检查是否准确(4)检查是否精确(5)检查是否一致(6)检查是否贴切(7)检查是否合理(8)检查代码无关(9)检查可测试性
6. 单元测试主要测试那几方面的问题(5分)
答:模块接口、局部数据结构、边界条件、独立的路径和错误处理。
习题2.
一、单项选择题:共20小题,每小题2 分,满分40分。
1.软件测试的目的:( c )
A. 避免软件开发中出现的错误
B. 发现软件开发中出现的错误
C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性
D. 修改软件中出现的错误
2、软件测试是采用( a )执行软件的活动。
A.测试用例
B.输入数据
C.测试环境
D.输入条件
3、导致软件缺陷的最大原因是:( a )
A.软件需求说明书
B.设计方案
C.编码
D.维护
4、在下列描述中,关于一个软件缺陷状态完整变化的错误描述是( d )
A、打开——修复——关闭
B、打开——关闭
C、打开——保留
D、激活——修复——重新打开
5、在下列描述中,关于测试与调试的说法错误的是( d )
A、测试是显示错误的行为;而调试是推理的过程;
B、测试显示开发人员的错误。调试是开发人员为自己辩护;
C、测试能预期和可控。调试需要想象、经验和思考;
D、测试必须在详细设计已经完成的情况下才能开始;没有详细设计的信息调试不可能进行。
6、某次程序调试没有出现预计的结果,下列( b )不可能是导致出错的原因。
A.变量没有初始化 B.编写的语句书写格式不规范
C.循环控制出错 D.代码输入有误
7、软件缺陷修复的代价最高的阶段为( a )
A、发布阶段
B、需求阶段
C、设计阶段
D、编码阶段
8、不属于逻辑覆盖方法的是( d )。
A.组合覆盖 B.判定覆盖
C.条件覆盖 D.接口覆盖
9、( d )是选择若干个测试用例,运行被测程序,使得程序中的每个可执行语句至少执行一次。
A、条件覆盖
B、组合覆盖
C、判定覆盖
D、语句覆盖
10、( a )是设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
A、判定-条件覆盖
B、组合覆盖
C、判定覆盖
D、条件覆盖
11.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节( b )
A.功能测试
B.单元测试
C.结构测试
D.验收测试
12、单元测试的主要任务不包括( b )。
A.出错处理 B.全局数据结构
C.独立路径 D.模块接口
13、如下图所示的N-S图,至少需要( b )个测试用例完成逻辑覆盖。
A.12 B.48
C.27 D.18
14、单元测试中用来模拟实现被测模块需调用的其他功能模块的是( b )。
A.驱动模块 B.桩模块
C.主控模块 D.真实的被调用模块
15、集成测试计划应该在( b )阶段末提交。
A、需求分析
B、概要设计
C、详细设计
D、单元测试完成
16、下列关于程序效率的描述错误的是( c )。
A.提高程序的执行速度可以提高程序的效率
B.降低程序占用的存储空间可以提高程序的效率
C.源程序的效率与详细设计阶段确定的算法的效率无关
D.好的程序设计可以提高效率
17、下列( b )是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构,且不包含复合条件。
A.DD-路径图 B.控制流图
C.MM-路径图 D.模块调用图
18、自底向上增量式集成测试中,下面( c )描述是正确的。
A.测试由桩模块控制
B.最上面的模块最先测试
C.父单元用测试过的子单元测试
D.包含树的深度优先或广度优先遍历过程
19、测试后程序中残存的错误数目与该程序中已发现的错误数目成( d )。
A.未知 B.反比
C.相等 D.正比
20、针对是否对无效数据进行测试,可以将等价类测试分为(b )
1)标准(一般)等价类测试
2)健壮等价类测试
3)弱等价类测试
4)强等价类测试
A.3)4) B.1)2)
C.1)3) D.2)4)
二、判断题:共20小题,每题1分,满分20分)
1、一个程序中所含有的路径数与程序的复杂程度有着直接的关系。(∨)
2、结构性测试是根据软件的规格说明来设计测试用例。( x )
3、错误推测法是根据输出对输入的依赖关系来设计测试用例的。(x )
4、软件缺陷属性包括缺陷标识、缺陷类型、缺陷严重程度、缺陷产生可能性、缺陷优先级、缺陷状态、缺陷起源、缺陷来源、缺陷原因。(∨)
5、对于一个含有n个变量的程序,采用边界值健壮性测试方法来测试程序会产生6n+1个测试用例。(∨)
6、数据流测试是主要用作路径测试的真实性检查。两种形式分别为定义/使用测试、基于程序片的测试。(∨)
7、软件只要经过严格严谨的内部测试之后,可以做到没有缺陷。(x )
8、测试用例应由测试输入数据和对应的实际输出结果这两部分组成。( x )
9、测试是可以穷尽的。( x )
10、测试自动化是万能的。( x )
11、软件缺陷可能会被修复,可能会被保留或者标识出来。(∨)
12、每一个软件项目都有一个最优的测试量。(∨)
13、黑盒测试往往会造成测试用例之间可能存在严重的冗余和未测试的功能漏洞。(∨)
14、代码审查工作属于静态测试。(∨)
15、软件测试是一个过程,包含若干活动,运行软件进行测试只是活动之一。(∨)
16、回归测试是在软件修改后再次运行以前为查找错误而执行程序曾用过的测试用例. ∨
17、集成测试是为确定软件系统是否满足验收标准以及使客户决定是否接受而进行的正式测试. ( x )
18、测试按照测试层次可以划分成为单元测试、集成测试和系统测试。(∨)
19、只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。( x )
20、永远有缺陷类型会在测试的一个层次上被发现,并且能够在另一个层次上逃避检测。(∨)
三、简答题:共4小题,每题5分,满分20分。
1、优秀的软件测试工程师应具备哪些素质
答:具有探索精神、具有良好的计算机编程基础、故障排除能手、坚持不懈的精神、具有创新精神和超前意识、追求完美、判断准确、具有整体观念,对细节敏感、团队合作精神,沟通能力。
2、有二元函数f(x,y),其中x∈[1,12],y∈[1,31];请写出该函数采用基本边界值分析法设计的测试用例。
答:{ <1,15>, <2,15>, <11,15>, <12,15>, <6,15>,
<6,1>, <6,2>, <6,30>, <6,31> }
习题3.
一、单项选择题:共20小题,每小题2 分,满分40分。
1.软件测试按照测试层次可以分为( c )
A.黑盒测试、白盒测试
B. 功能性测试和结构性测试
C.单元测试、集成测试和系统测试
D、动态测试和静态测试
2、软件测试是采用( a )执行软件的活动。
A.测试用例
B.输入数据
C.测试环境
D.输入条件
3.软件测试是软件开发过程的重要阶段,是软件质量保证的重要手段,下列哪个(些)是软件测试的任务?答案:( d )
1预防软件发生错误 2发现程序错误 3提供诊断错误信息
A.只有1
B.只有2
C.只有3
D.都是
4、导致软件缺陷的最大原因是:( a )
A.软件需求说明书 B.设计方案
C.编码 D.维护
5、测试用例是为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据,至少应该包括( a )
A、测试输入、执行条件和预期的结果。
B、测试目标、测试工具
C、测试环境
D、测试配置
6、对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档,这种行为属于( b )
A.测试 B.调试
C.回归测试 D.单元测试
7、软件缺陷修复的代价最高的阶段为( a )
A、发布阶段
B、需求阶段
C、设计阶段
D、编码阶段
8、下列( b )是关于软件缺陷的描述。
A.导致软件包含故障的人的行为
B.产品的异常情况
C.引起一个功能部件不能完成所要求的功能的一种意外情况
D.功能部件执行其规定功能的能力丧失
9、可作为测试停止的标准是( d )
A.当时间用光时
B.执行了所有的测试用例,但没有发现故障
C.当所有缺陷都已经清除时
D.当达到所要求的覆盖时
10、下列描述错误的是( a )
A.软件发布后如果发现质量问题,那是软件测试人员的错
B.穷尽测试实际上在一般情况下是不可行的
C.软件测试自动化不是万能的
D.测试能由非开发人员进行,调试必须由开发人员进行。
11、如下图所示的N-S图,至少需要( b )个测试用例完成逻辑覆盖。
A.15
B.16
C.17
D.18
12、下列( c )方法设计出的测试用例发现程序错误的能力最强。
A.等价类划分法
B.场景法
C.边界值分析法
D.决策表法
13、功能性测试是根据( a )来设计测试用例。
A、软件的规格说明
B、设计文档
C、程序的内部逻辑
D、维护手册
14、在软件修改之后,再次运行以前为发现错误而执行程序曾用过的测试用例,这种测试称之为( c )
A.单元测试
B.集成测试
C.回归测试
D.验收测试
15、( c )方法是根据输出对输入的依赖关系来设计测试用例的。
A.边界值分析B.等价类
C.因果图法D.错误推测法
16、测试工程师的工作范围会包括检视代码、评审开发文档,这属于( b )
A.动态测试 B.静态测试
C.黑盒测试 D.白盒测试
17、( d )是一种关注变量定义赋值点(语句)和引用或使用这些值的点(语句)的结构性测试,主要用作路径测试的真实性检查。
A 、基本路径测试
B 、逻辑覆盖
C 、决策表
D 、数据流测试
二、判断题:共20小题,每题1分,满分20分)
软件测试是有风险的行为,并非所有的软件缺陷都能够被修复。(∨ )
软件质量保证和软件测试是同一层次的概念。(x )
我们有理由相信只要能够设计出尽可能好的测试方案,经过严格测试之后的软件可以没有缺陷。( x )
程序员兼任测试员可以提高工作效率。( x )
在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。( ∨ )
传统测试是在开发的后期才介入,现在测试活动已经扩展到了整个生命周期。( ∨ )
传统测试以发现错误为目的,现在测试已经扩展到了错误预防的范畴。∨
软件测试的生命周期包括测试计划、测试设计、测试执行、缺陷跟踪、测试评估。(∨ )
9.调试从一个已知的条件开始,使用预先定义的过程,有预知的结果;测试从一个未知的条件开始,结束的过程不可预计。( x )
白盒测试往往会造成测试用例之间可能存在严重的冗余和未测试的功能漏洞。( x )
在边界值方法中,对于一个有n 个变量的函数作最坏情况测试,生成的测试用例个数是7n
个。( x )
软件生存周期是从软件开始开发到开发结束的整个时期。 ( x )
在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的测试方法。( ∨ ) 14. 永远有缺陷类型会在测试的一个层次上被发现,并且能够在另一个层次上逃避检测。(∨ ) 15. 测试用例的数目越多,测试的效果越好。( x )
只要能够达到100%的逻辑覆盖率,就可以保证程序的正确性。( x )
单元测试属于动态测试。( ∨ )
验收测试是以最终用户为主的测试。(∨ )
没有发现错误的测试是没有价值的。( ∨ )
可以把不合格的开发人员安排做测试。( x )
其他习题:
1.什么是软件测试?
答:软件测试是人工的或通过使用工具来自动的运行被测软件系统,或静态检查被测软件系统的过程,目的在于检验被测系统是否满足需求,或要弄清楚实际的系统输出与预期的系统输出之间的差异。
2.请简述常用的性能测试指标。
答:响应时间、吞吐量、并发用户数、每秒钟处理的事务数和交易的数量、点击率、资源利用率。
3.在软件生命周期的哪一个阶段,软件缺陷修复费用最低(A)
- A、需求分析(编制产品说明书)
- B、设计
- C、编码
- D、产品发布
4.必须要求用户参与的测试阶段是(D)
- A、单元测试
- B、集成测试
- C、确认测试
- D、验收测试
5.在边界值分析中,下列数据通常不用来做数据测试的是(B)。
- A、正好等于边界的值
- B、等价类中的等价值
- C、刚刚大于边界的值
- D、刚刚小于边界的值
6.软件调试的目的是(A)。
- A、找出错误所在并改正之
- B、排除存在错误的可能性
- C、对错误性质进行分类
- D、统计出错的次数
7.划分软件测试属于白盒测试还是黑盒测试的依据是(C)
- A、是否执行程序代码
- B、是否能看到软件设计文档
- C、是否能看到被测源程序
- D、运行结果是否确定
8.请按照以下题意,使用等价类划分法设计测试用例。
某城市电话号码由三部分组成,分别是:
地区码—— 空白或三位数字;
前 缀—— 非‘0’或‘1’开头的三位数字;
后 缀—— 4位数字。
- 有二元函数f(x,y),其中x∈[1,12],y∈[1,31],采用边界值分析法设计测试用例。
答:{<1,15>,<2,15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>,<6,30>,<6,31>}
10.某软件的一个模块的需求规格说明书中描述:
(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。
(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。
请绘制出因果图和判定表,并给出相应的测试用例。
答:分析因果图的原因和结果。
原因为:
C1:年薪制员工
C2:过失
C3:严重过失
结果为:
E1:扣年终风险金的2%
E2:扣年终风险金的4%
E3:扣当月薪资的4%
E4:扣当月薪资的8%
其中C2,C3之间E约束。
因果图为:
11.LoadRunner是(A)
- A、工业标准级负载测试工具
- B、一款下载软件
- C、单元测试框架
- D、集成开发工具
12.下列常用的测试用例设计技术中,不属于白盒测试技术的是(D)。
- A、信息流分析法
- B、数据流分析法
- C、逻辑覆盖测试和基本路径测试
- D、状态图法
13.下列叙述中,哪一项是正确的(D)。
- A、用黑盒法测试时,测试用例是根据程序内部逻辑设计的;
- B、测试是为了验证该软件已正确地实现了用户的要求;
- C、对面向对象程序来说,单元测试的最小单元是每条程序语句,即以分号结尾的程序;
- D、发现错误多的程序模块,残留在模块中的错误也多。
14.以下对单元测试,不正确的说法是(C)。
- A、单元测试的主要目的是针对编码过程中可能存在的各种错误
- B、单元测试一般是由程序开发人员完成的
- C、单元测试是一种不需要关注程序结构的测试
- D、单元测试属于白盒测试的一种
15.在白盒测试技术中,有语句覆盖、条件覆盖、判定覆盖(也称分支覆盖)、路径覆盖等,其中(D)是最强的覆盖准则。
- A、语句覆盖
- B、条件覆盖
- C、判定覆盖
- D、路径覆盖
16.发现错误能力最弱的是(A)。
- A、语句覆盖
- B、判定覆盖
- C、条件覆盖
- D、路径覆盖
17.下列哪一项不是白盒测试?(C)
- A、单元测试
- B、集成测试
- C、系统测试
- D、回归测试
18.白盒测试与黑盒测试的最主要区别,正确的是___________。(A)
- A、白盒测试侧重于程序结构,黑盒测试侧重于功能
- B、白盒测试可以使用测试工具,黑盒测试不能使用工具
- C、白盒测试需要程序参与,黑盒测试不需要
- D、黑盒测试比白盒测试应用更广泛
19.在系统测试中,测试人员主要根据( A)设计测试用例
- A、需求分析说明书
- B、概要设计说明书
- C、详细设计说明书
- D、系统规格说明书
20.不属于白盒测试的技术是 (C ) 。
- A、语句覆盖
- B、判定覆盖
- C、边界值分析
- D、基本路径测试
21.针对下面一段代码,设计其逻辑覆盖测试用例。(要求:画程序流程图)
Main()
{
Int a,b;
Float c;
Scanf(“%d,%d,%f”,&a,&b,&c);
If (a>18 and b=5)
{
C=a/b;
}
If(a=20 and c>2)
{
C=c+6;
}
Printf(“c=%f”,c);
}
22.有一个程序图如下,请给出环形复杂度和基本测试路径。
答:
1.v(G)=4
2. (1)5→7,8→16→17→19→21→5→22
(2)5→7,8→16→18→19→21→5→22
(3)5→7,8→11,12→21→5→22
(4)5→22
版权归原作者 记录学习的習習君 所有, 如有侵权,请联系我们删除。