往年题
2020山东大学软件测试期末试题_山东大学 软件测试技术 期末 2020-CSDN博客
文章浏览阅读2.9k次,点赞10次,收藏66次。2019-2020第二学期山东大学软件学院软件测试技术一、填空1.根据是否运行程序可以分成:()()2.单元测试中编写两种程序:()()3.逻辑覆盖哪六种:二、选择很简单的三、简答1.测试结束标准2.测试和SQA关系3.ST、ET优缺点4.五大学派5.什么是国际化、本地化、全球化。他们之间什么关系?四、写测试用例1.条件组合覆盖2.消费打折场景:普通顾客:小于100,方案A,大于等于100,方案B;小于1000,方案C,大于等于1000,方案D。画出控制流程图、计算环路复杂度、_山东大学 软件测试技术 期末 2020
山东大学软件学院2021-2022软件测试期末试题_山东大学软件测试技术期末试题-CSDN博客
文章浏览阅读2.6k次,点赞6次,收藏81次。1.系统缺陷2.测试自动化3.回归测试4.系统测试5.I18N1.单元测试与代码调试的区别2.简述比较集成测试的不同模式、不同方法3.比较4种导向中的正向思维、逆向思维,并说明为什么这两种导向现今不再流行4.ST、ET的优缺点比较给出了一段程序。每一小问给了测试用例,问是否符合条件、判定、条件-判定、条件组合覆盖一个程序输入year、month、day日期,功能是计算十天前的日期,写判定表和测试用例If ( V_A > 100 && V_B == 0) {V_Y = V_Y / V_A;_山东大学软件测试技术期末试题
山东大学软件学院2022软件测试技术期末试题回忆_山东大学软件测试技术期末试题-CSDN博客
文章浏览阅读2.6k次,点赞5次,收藏86次。本文档详述了2022年大三下学期软件测试期末考试要点,包括软件缺陷理解、系统与回归测试、自动化测试实践、单元调试、测试覆盖策略、队列状态分析、代码复杂度评估及测试用例设计。全面复习软件测试核心概念和技术细节。
《软件测试技术》复习大纲
第一章
软件测试学科的发展
正向测试与反向测试的定义,关系
- 验证软件正常工作
- 评价一个程序或系统的特性或能力并确定是否达到预期的结果
- 在设计规定的环境下运行软件的所有功能,直至全部通过
- 假定软件有错误
- 测试是为发现错误而针对某个程序或系统的执行过程
- 寻找容易犯错误的地方和系统的薄弱环节,试图破坏系统,直至找不出问题
从从经济视角认知软件测试
SQA,与软件测试关系
这个SQA定义不需要背,用来理解SQA软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
第二章
缺陷定义,现象,判定准则
- 功能、特性没有实现或部分实现
- 设计不合理,存在缺陷
- 实际结果和预期结果不一致
- 运行出错,包括运行中断、系统崩溃、界面混乱
- 数据结果不正确、精度不够
- 用户不能接受的其他问题,如存取时间过长、界面不美观
- 需求规格说明书和其它需求、设计规范文档
- 竞争对手的产品
- 启发式测试预言
- 统计测试预言
- 一致性测试预言
- 基于模型的测试预言
- 人类预言
软件缺陷产生的原因有哪?
- 技术问题:算法错误,计算和精度问题,接口参数传递不匹配;系统的自我恢复或数据的异地备份、灾难性恢复等问题
- 团队工作:沟通不充分,误解
- 软件本身
- 文档错误,用户使用场合
- 时间上不协调、或不一致性导致的问题
产品质量的内容,内部,外部,使用质量

如何理解软件规格说明书缺陷
- 开发与用户沟通存在困难,对产品理解不一样
- 靠想象描述系统的实现结果,有些特性不清楚
- 需求变化的不一致性,用户的需求不断变化,不能及时在需求中得到正确描述
- 对规格说明书不够重视,对其投入人力,时间不足
- 沟通不够
verification,validation
软件测试不同层次测试的对象和任务
- 单元测试针对程序系统中的最小单元---模块或组件进行测试,一般和编码同步进行。主要采用白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件的已实现的功能与定义的功能是否一致、以及编码中是否存在错误。通常要编写驱动模块和桩模块
- 集成测试,也称联调,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题。现在提倡持续集成测试
- 一般在完成集成测试后进行系统功能测试,而且基于产品功能说明书,针对产品所实现的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用
- 验收测试的目的是向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样

静态测试的内容包括什么?开展相关活动时采用的形式有哪些?
测试工作的流程

软件测试的工作范畴
第三章
等价类划分法
- 有效等价类:输入完全满足程序输入的规格说明,有意义的输入数据所构成的集合,可检验程序是否满足规格说明规定的功能和性能
- 无效等价类:不满足程序输入要求或无效的输入数据构成的集合,可测试程序/系统的容错性——对异常输入情况的处理


边界值分析法
- 确定边界情况(输入或输出等价类的边界)
- 选取正好等于、刚刚大于或小于边界值作为测试数据
- 12个字符以内,不能为空
- 只能用字母、数字、_ 、-,不能用空格
- 以字母开始
- 大小写不敏感
- 不少于6个字符
- 大小写敏感

判定表方法






因果图方法









判定/分支覆盖
条件覆盖
判定-条件覆盖


条件组合覆盖


基本路径覆盖





功能图法
- 静态说明描述了输入条件和输出条件之间的对应关系
- 动态说明描述了输入数据的次序或者转移的次序










EFSM 扩展有限状态机
- 状态(State):系统在某一时刻所处的具体条件或情况。
- 事件(Event):触发状态转换的输入或条件。
- 转换(Transition):从一个状态到另一个状态的变化,通常由事件触发。
- 初始状态(Initial State):系统开始时的状态。
- 终止状态(Final State):系统结束时的状态(可选)。
- 变量(Variables):EFSM 可以包含变量,这些变量可以在状态转换过程中被读取或修改。
- 条件(Conditions):状态转换不仅仅依赖于事件,还可以依赖于变量的值和条件表达式。
- 动作(Actions):在状态转换时,可以执行一些动作,如修改变量的值或执行特定操作。
第四章
测试左移和右移,贯穿全生命周期的测试思想

w模型

- 测试过程和开发过程是同时开始、同时结束的,两者保持同步的关系
- 测试过程是对开发过程中阶段性成果和最终的产品进行验证的过程,所以两者相互依赖的。
- 前期,测试过程更多地依赖于开发过程
- 后期,开发过程更多地依赖于测过程。
- 测试过程中的工作重点和开发工作的重点可能是不一样的,两者有各自的特点,无论在资源管理,还是在风险管理,两者都存在着差异
TMAP定义,几个阶段,模型基石及关系
- 计划和控制:设计测试计划的创建,定义了执行测试活动的“who,what,when,where and how”。在测试过程中,通过定期和临时的报告,用户可以经常收到关于产品质量和风险的更新。
- 准备:准备阶段。决定软件说明书质量是否足以实现说明书和测试执行的成功。
- 说明:定义测试用例和构建基础设施。一旦测试目标确定,测试执行阶段就开始。
- 执行:需要分析预计结果的区别,发现缺陷并报告缺陷
- 完成:包括对测试用例的维护以及再利用,创建一个最终报告以及为了更好的控制将来的测试过程对测试过程进行评估

SBTM基本要素,结果,原理
- Session(会话)是一段不受打扰的测试时间(通常是90分钟),是测试管理的最小单元。
- Charter(章程):对每个session如何执行进行简要的描述,相当于每个session需要一个简要的计划(提纲)
- A session sheet (测试报告) : 相当于测试报告,供第三方(如测试经理、ScrumMaster等)进行检查的材料。它最好能被工具扫描、解析和合成。
- Debriefing(听取口头报告):口头汇报,更准确地说,是测试人和其lead/Manager之间的对话。
测试几个学派的特点
- 分析流派:认为测试是严格的和技术性的,在学术界有许多支持者
- 标准流派:将测试视为衡量进度的一种方法,强调成本和可重复的标准
- 质量流派:强调过程规范性,监督开发人员并充当质量的看门人
- 上下文驱动流派:强调人的价值,寻找涉众关心的bug
- 测试所发现的每个缺陷都和相关利益者相关
- 认为测试是一种有技巧的心理活动
- 强调人的能动性和启发性测试思维
- 探索性测试是典型代表
- 敏捷流派:强调自动化测试,使用测试来快速验证开发是完整的
TMMi,TPI,CTP, STEP定义,特点
充分吸收、CMM/CMMi的精华;
基于历史演化的测试过程;
业界的最佳实践。

第五章
代码评审的形式及各自特点
- 互查:在复审前,代码作者应该对代码进行注释;使用检查表(checklist)肯定能改进双方(作者和复审者)的结果;验证缺陷是否真正被修复
- 走查(Walk Through):采用讲解、讨论和模拟运行的方式进行的查找错误的活动。
- 引导小组成员在走查前通读设计和编码。
- 限时,避免跑题
- 发现问题适当记录,避免现场修改
- 检查要点是代码是否符合标准和规范,是否有逻辑错误
- 怀疑过程中发现的缺陷比通过测试实例本身发现的缺陷更多
代码走查是相对比较正式的代码评审过程。
- 会议评审(审查) Inspection
- 以会议形式,制定目标、流程和规则
- 按缺陷检查表(不断完善)逐项检查
- 发现问题适当记录,避免现场修改
- 发现重大缺陷,改正后会议需要重开。

单元测试定义,作用,目标
- 单元模块被正确实现:包括功能、性能、安全性等,但一般主要介绍单元功能测试。
- 确保代码在结构上可靠且健壮,能在各种条件下给予正确的响应
- 输入是否正确传递和得到保护(容错),输出是否正常
- 内部数据能否保持其完整性,包括变量的正确定义与引用、内存及时释放、全局变量的正确处理和影响最低
- 代码行、分支覆盖或MC/DC达到要求,如高于80%或95%
- 错误发现越早,成本越低.
- 发现问题比较容易
- 修正问题更容易
桩程序,驱动程序
集成测试的概念
- 模块内的集成,主要是测试模块内各个接口间的交互集成关系
- 子系统内的集成,测试子系统内各个模块间的交互 关系;
- 系统内的集成,测试系统内各个子系统和模块间的集成关系。
单一系统的集成测试的集成模式及优缺点
- 非渐增测试模式:先分别测试每个模块,再把所有模块按照设计要求放在一起结合成所需要的程序,如大棒模式。
- 渐增测试模式:把下一个要测试的模块与已经测试好的模块结合起来进行测试,测试是在模块一个一个的扩展下进行,其测试的范围逐步扩大。
- 渐增模式需要编写的软件较多,工作量大;非渐增模式测试开销小
- 渐增模式发现模块间接口错误早;非渐增模式晚
- 非渐增模式发现错误,较难诊断;渐增模式中发生错误往往和最近加进来的那个模块有关
- 渐增模式测试更彻底
- 渐增模式需要更多的机器时间
- 非渐增模式可以并行测试
微服务特点,测试目标?测试基本步骤?
- 自主性:可以对微服务架构中的每个组件服务进行开发、部署、运营和扩展,而不影响其他服务的功能。这些服务不需要与其他服务共享任何代码或实施。各个组件之间的任何通信都是通过明确定义的 API 进行的。
- 专用性:每项服务都是针对一组功能而设计的,并专注于解决特定的问题。如果开发人员逐渐将更多代码增加到一项服务中并且这项服务变得复杂,那么可以将其拆分成多项更小的服务。
- 启动被测微服务和外部服务的实例
- 调用被测微服务,该服务会通过外部服务提供的API读取响应数据
- 检查被测微服务是否能正确解析返回结果
集成测试的目标
- 数据穿过接口时可能丢失;
- 一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;
- 把子功能组合起来可能不产生预期的主功能;
- 个别看起来是可以接受的误差可能积累到不能接受的程度;
- 全程数据结构可能有错误等。
第六章
功能测试的基本思路
- 明确测试目标和质量要求
- 测试需求分析,输出测试项
- 选择合适的测试方法、工具
- 设计测试用例、开发测试脚本
- 执行测试、观察结果、报告缺陷
- 评估测试过程与结果
- 提交测试报告

回归测试需要解决的问题。回归测试的策略和方法
- 再测试全部用例:成本高
- 基于风险选择测试:基于一定的风险标准从测试用例库中选择回归测试用例。根据哪些功能被修改部分影响的可能性来选择
- 基于操作剖面选择测试:测试用例是基于操作剖面开发,测试用例的分布情况反映了系统的实际使用情况;选择那些针对重要功能或用户频繁使用功能的测试用例
- 再测试修改的部分:效率最高,风险最大
第七章
性能测试目标
- 获取系统性能某些指标数据
- 为了验证系统是否达到用户提出的性能指标
- 发现系统中存在的性能瓶颈,优化系统的性能
什么是性能测试?
系统性能表现
- 请求响应时间:客户浏览器向web服务器提交一个请求到收到响应之间的间隔时间
- 事务响应时间:一系列请求完成处理所花费的时间
- 数据吞吐量:单位时间内web服务器成功处理的HTTP页面或HTTP请求数量
按照测试目的分,性能测试类型
- 性能基准测试:在系统标准配置下获得有关的性能指标数据,作为将来性能改进的基线
- 性能验证测试:验证系统是否达到事先已定义的系统性能指标、能否满足系统的性能需求
- 性能规划测试:在多种特定的环境下,获得不同配置的系统性能指标,从而决定系统部署的软硬件配置选型
- 容量测试:可以看作性能的测试一种,因为系统的容量可以看作是系统性能指标之一
- 压力测试:模拟实际应用的软硬件环境及用户使用过程的高负载、异常负载、超长时间运行,从而加速系统崩溃,以检查程序对异常情况的抵抗能力,找出性能瓶颈、不稳定等问题。
- 渗入测试:通过长时间运行,使问题逐渐渗透出来,从而发现内存泄漏、垃圾回收(GC)或系统的其他问题,以检验系统的健壮性
- 峰谷测试:采用高低突变加载方式进行,先加载到高水平的负载,然后急剧降低负载,稍微平息一段时间,再加载到高水平的负载,重复这样过程,容易发现问题的蛛丝马迹,最终找到问题的根源
什么是压力测试
性能测试的基本过程
- 确定性能测试需求
- 根据测试需求,选择相应的测试工具和开发相应的脚本。
- 建立性能测试负载模型:
- 确定并发虚拟用户数量,每次请求的数据量,思考时间,加载方式和持续加载的时间等
- 是个迭代完善的过程
- 执行性能测试
- 提交性能测试报告

什么是安全性测试
渗透测试实施策略
软件安全性测试有哪两种?有什么关系和区别?
- 安全功能测试:数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等
- 安全漏洞测试:从攻击者的角度, 以发现软件的安全漏洞为目的。安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点
安全性测试的任务
- 全面检验软件在需求规格说明中规定的防止危险状态措施的有效性和在每一个危险状态下的反应
- 对软件设计中用于提高安全性的结构、算法、容错、冗余、中断处理等方案,进行针对性测试
- 在异常条件下测试软件,以表明不会因可能的单个或多个输入错误而导致不安全状态
- 对安全性关键的软件单元、组件,单独进行加强的测试,以确认其满足安全性需求
安全性测试方法按内外部分为哪两种?
- 基于威胁的方法
- 基于漏洞的方法
什么是XSS攻击和sql注入攻击,如何进行测试和防范
web安全性测试可从哪些方法开展(没找到)
- 检查应用系统架构,防止用户绕过系统直接修改数据库
- 检查身份认证模块,用以防止非法用户绕过身份认证
- 检查数据库接口模块,用以防止用户获取系统权限
- 检查文件接口模块,防止用户获取系统文件
- 检查其他安全威胁
什么是软件可靠性?可从哪几个指标度量?各自的定义
- 成熟性:通过错误发现率DDP(Defect Detection Percentage)来表现。DDP越小,软件越成熟。
- 容错性:指系统在出现硬件故障、软件错误或其他异常情况下,仍能继续正常运行并维持其预期功能的能力。
- 易恢复性:指系统在遭遇故障、错误或其他中断情况下,能够快速恢复到正常运行状态的能力。
容错测试的要点?
- 故障转移:确保测试对象在出现故障时能成功完成故障的转移,并能从导致意外数据损失或数据完整性破坏的各种硬件,软件和网络故障中恢复
- 数据恢复:对于必须持续运行的系统,一旦发生故障,备用系统将不失时机接替发生故障的系统,以避免丢失任何数据或事务
- 测试目标:
- 确保恢复进程将数据库,应用程序和系统正确地恢复到预期的已知状态
- 客户机,服务器断电
- 通过网络服务器产生的通信中断或控制器中断
什么是A/B测试?有什么特点
- 先验性:采用流量分割与小流量测试的方式,先让线上部分小流量用户使用以验证设计,再根据数据反馈来推广到全流量,减少产品损失
- 并行性:同时运行两个或两个以上版本的试验完成对比分析,而且保证每个版本所处的环境一致的,避免流程周期长的问题,节省验证时间
- 科学性:基于统计的数据来做出决策,避免主观或经验的错误决策
第八章
软件本地化,国际化,全球化,相互关系

- 国际化是本地化的基础和前提,为本地化做准备
- 本地化是国际化向特定本地语言环境的转换
- 国际化是软件产品源语言开发的一部分,属于Engineering
- 本地化可以独立于Engineering,可由第三方完成
unicode与utf-x关系,特点
软件本地化基本步骤
- 建立配置管理体系,跟踪目标语言各个版本的源代码
- 创造和维护术语表
- 源语言代码和资源文件分离、或提取需要本地化的文本
- 把分离或提取的文本、图片等翻译成目标语言
- 把翻译好的文本、图片重新检入目标语言的源代码版本
- 如果需要,编译目标语言的源代码
- 测试翻译后的软件,调整UI 以适应翻译后的文本
- 测试本地化后的软件,确保格式和内容都正确
本地化测试主要有哪些工作
- 功能性测试:所有基本功能、安装、升级等测试
- 翻译测试:包括语言完整性、术语准确性等的检查
- 可用性测试:包括用户界面、度量衡和时区
- 兼容性测试:包括硬件兼容性、版本兼容性等测试
- 文化、宗教、喜好等适用性测试
- 手册验证:联机文件、在线帮助、PDF文件等
软件本地化测试完整路线
第九章
自动化测试与测试自动化
如何理解测试自动化
- 显著降低重复手工测试的时间
- 建立可靠、重复的测试,减少人为错误
- 增强测试质量和覆盖率
- 完全替代手工测试和手工测试师
- 保证100%的测试覆盖率
- 弥补测试实践的不足
测试自动化实现的原理,几种技术
- 代码分析:类似于高级编译系统,在工具中定义类/对象/函数/变量等定义规则、语法规则等,在分析时对代码进行语法扫描,找出不符合编码规范的地方。
- 捕获和回放: 代码分析是一种白盒测试的自动化方法,捕获和回放则是一种黑盒测试的自动化方法。
- 直接编写脚本来操作、控制、验证对象:包括对象识别、脚本技术、对运行结果进行比较
- 对象识别 :对于页面对象的识别,分为Windows 对象 、Mac 对象、Web DOM对象
- 脚本技术: 脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式,可以通过录制测试的操作产生,然后再做修改。
- 自动比较技术:
- 静态比较和动态比较
- 简单比较和复杂比较
- 敏感性测试比较和健壮性测试比较
- 比较过滤器
自动化测试的流程

计划:计划自动化测试,收集测试信息测试需求是什么哪里能得到用到的数据
创建:记录用户操作,形成基本测试记录用户的操作核实成功回放
核实和提高:对回放和测试提高自动化测试插入测试点驱动测试用例
整合:运行多种测试检查数据流关联数据建立综合的测试场景
几种脚本技术
- 线性脚本:是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放
- 结构化脚本 :类似于结构化程序设计,具有各种逻辑结构、函数调用功能
- 数据驱动脚本:将测试输入存储在独立的(数据)文件中,而不是存储在脚本中
- 关键字驱动脚本 :脚本用一个简单的表格表示,是数据驱动脚本的逻辑扩张,实际封装了各自基本操作,每个操作由相应函数实现,开发脚本时,不需要关心这些基础函数,直接使用已定义好的关键字
自动化功能测试基本构成
- 录制测试脚本:对象识别
- 编辑测试脚本:加验证点优化脚本
- 调试脚本
- 执行:验证
- 结果分析:确定缺陷
TA框架的构成及各部分特点
- Harness/IDE:TA框架的核心,相当于“夹具”,其他组成部分作为插件与之集成
- 脚本语言:包括公共脚本库、项目归类的脚本库,可以与github这样的代码管理工具集成
- 代理:负责harness与工具的通信,控制测试工具的运行
- 工具
- 任务安排:安排和提交定时任务,事件触发任务,以便实现无人值守的自动化测试执行
- 报告

- Author:Rainnn
- URL:https://blog.rainnn.top//article/218eefba-b209-8029-90d9-fb93832d9464
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!













