目录

软件测试

软件测试

1.测试工具:

loadrunner:性能的负载测试工具 (支持的脚本语言:VB script)

testbed:单元测试和静态测试

KTflow:缺陷报告

UTF:功能测试

Testbed:

  • 衡量软件质量的指标有:源代码行数、代码段/模块/时间段内的平均Bug数、代码覆盖率、设计/开发约束等。
  • LDRA Testbed可以进行MISRAC 的规则检查,并且它也是唯一可以同时针对MISRA C进行规则检查、复杂度分析、覆盖率分析三项检查分析工作的工具。
  • 结构式测试实现单元测试。单元测试依据测试文档。
  • 覆盖软件设计文档中的全部单元。针对每一个函数的所有功能。
  • 对于输入输出,选取典型值,边界值设计测试用例。
  • 使用指针和数组检测指针是否非法引用,数组是否越界。
  • Tbrun实现单元测试的优势:

自动产生测试驱动与桩模块;

支持单元级与集成级测试;

代码修改后自动对测试用例进行验证;

支持回归验证;

支持与宿主机/目标测试平台验证;

2. V模型

2.1概述

https://i-blog.csdnimg.cn/blog_migrate/4520882f8ff4a12b59604307e385bf85.png

  • 单元测试:验证软件单元是否按照单元规格说明(详细设计说明)正确执行,即保证每个最小的单元能够正常运行。单元测试一般由开发人员来执行,首先设定最小的测试单元,然后通过设计相应的测试用例来验证各个单元功能的正确性;
  • 集成测试:检查多个单元是否按照系统概要设计描述的方式协同工作。集成测试的主要关注点是系统能够成功编译,实现了主要的业务功能,系统各个模块之间数据能够正常通信等;
  • 系统测试:验证整个系统是否满足需求规格说明;
  • 验收测试:从用户的角度检查系统是否满足合同中定义的需求或者用户需求;

V模型的特点

  • V模型体现的主要思想是开发和测试同等重要,左侧代表的是开发活动,而右侧代表的是测试活动;
  • V模型针对每个开发阶段,都有一个测试级别与之想对应;
  • 测试依旧是开发生命周期中的阶段,与瀑布模型不同的是,有多个测试级别与开发阶段对应;
  • V模型适用于需求明确和需求变更不频繁的情形;

2.2 单元测试

基本含义

  • 单元测试的对象:可以是模块、类、函数和对象等,不同的软件语言来决定;
  • 单元测试的主要目的:是验证单元是否满足了详细设计规格说明,发现需求和设计中的错误;
  • 单元测试设计的主要输入(测试依据):是详细设计规格说明、软件设计和数据模型等;
  • 单元测试的测试技术:主要采用白盒测试技术,黑盒测试技术作为单元测试的辅助;
  • 单元测试应该覆盖功能需求和非功能需求;
  • 单元测试经常会使用测试驱动的方法(测试驱动开发);

测试环境

  • 单元测试处理的对象直接来自开发人员,通常由开发人员来开展单元测试;
  • 单元测试可能并不能形成完成的系统,因此需要驱动模块和桩模块的支持:
    • 桩模块:用以模拟被测模块工作过程中所调用的模块,他们一般只进行很少的数据处理,例如打印入口和返回;
    • 驱动模块:用以模拟被测模块的上级模块,它接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印相应的结果;
  • 驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用;

单元测试关注点

  • 单元模块接口参数;
    • 实际参数和形式参数的个数是否相同;
    • 实际参数和形式参数的属性是否匹配;
    • 调用函数的参数顺序、个数和属性是否匹配;
  • 单元模块局部数据结构;
    • 不合适或者不相容的类型说明;
    • 变量没有初始化;
    • 不正确的变量名;
  • 单元模块的独立路径测试;
    • 误解或者用错了算符优先级;
    • 混和类型运算;
  • 与控制流相关的测试;
    • 错误的修改了循环变量;
    • 循环中止条件不可能出现;
  • 与异常处理相关的测试;
    • 输出的错误信息难以理解;
    • 错误的信息和实际的错误不符;

2.3 集成测试

基本含义

  • 集成测试,又叫组装测试、联合测试等;
  • 集成测试是对组件之间的接口进行测试,以及和系统其他部分的相互作用;
  • 最简单的形式是两个已经测试的单元组合成一个组件,来测试它们之间的接口和数据交换;
  • 集成测试的主要工作:把单元测试通过的各个模块逐步集成在一起,来测试数据是否能够正确传递和调用,以及各个模块是否能正确的协同工作;
  • 集成测试可以应用在不同的测试级别,比如单元集成测试、系统集成测试等;

集成测试的关注点

  • 单元模块是否传输了错误的数据,或者没有传输数据;
  • 接受数据的单元不能操作或者崩溃,比如单元功能缺陷、接口格式不兼容、协议不兼容等;
  • 单元之间通讯正常,但是使用不同的方法来解析收到的数据,比如规格说明矛盾、理解错误等;
  • 数据能正常传输,但是传输时间错误,比如时序问题,或者传输的时间间隔太短,比如吞吐量、负荷、容量等问题;

2.4 系统测试

基本含义

  • 系统测试是将已经集成好的软件系统,作为计算机系统的一部分,与计算机硬件、某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列严格有效的测试;
  • 系统测试关注的是项目或产品范围中定义的整个系统或产品的行为;
  • 在系统测试中,测试环境应该尽量和最终使用的目标或产品使用的环境相一致,从而减少和环境相关的失效;

测试目标

  • 系统测试的目标是确认整个系统是否满足了规格说明中的功能和非功能需求,以及满足的程度;
  • 系统测试应该发现由于需求不正确、不完整或实现和需求不一致而引起的失效,并识别没有文档化或被忘记的需求;
  • 常见的系统测试包括压力测试、容量测试、性能测试、安全测试、容错测试等;

为什么系统测试

  • 在较低的测试级别,测试主要是针对技术规格说明的,即从软件开发者的技术观点角度加以考虑。而系统测试从客户或用户的观点来考虑整个系统。测试人员确认系统是否完全正确的满足了需求。
  • 许多功能和系统属性是从系统的所有组件相互调用的过程中得到的,因而只能在整个系统级别才能看到,也只能在这个时候才能进行观察并测试。

2.5 验收测试

基本含义

  • 验收测试通常是由使用系统的用户来进行,同时系统的其他利益相关者也可能参与其中;
  • 验收测试目的是通过验收测试,对系统功能、系统特定部分或特定的系统非功能特征进行测试;
  • 发现缺陷不是验收测试的主要目标,验收测试也可以用来评估系统是否可以在市场部署、用户使用系统的准备情况等;

验收测试类型

  • 合同验收测试
  • 规范验收测试
  • Alpha和Beta测试
  • 用户验收测试
  • 运行(验收)测试

3. 相关试题

1.软件测试的目标是()。发现问题,降低风险

软件测试的目标是为了发现程序中的错误而执行程序的过程。

测试决不能证明程序是正确的。

2.用于判断新引入的变化没有给现有软件造成破坏的测试方法是()回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。

3.在游戏或软件开发完成的初期,由游戏公司或软件公司发送限定的激活码或账号给玩家,由玩家测试并向游戏公司反馈使用情况和存在的问题,以促进游戏的进一步完善的环节称为()内测

公测:公开测试。其实就是向广大玩家完全公开,注册的账号数量没有限制。

内测:内部测试。经历了封测后,游戏进一步完善。发布出来,让大众玩家可以注册试玩,通过玩家玩后的反应和建议,进一步将游戏的BUG、设置、职业能力等等进行修订。

封测:封闭测试。其版本实为未成熟的,有很多的BUG。在里面玩和正常没分别,但是禁止用户注册。

4.系统测试采用哪种测试技术()黑盒测试

系统测试是一个对于软件的整个系统的性能以及稳定性测试,不用使用到算法内部逻辑结构和具体的算法。

系统测试是指将通过集成测试的软件系统,作为计算机系统的一个重要组成部分,与计算机硬件、外设、某些支撑软件的系统等其他系统元素组合在一起所进行的测试,目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或矛盾的地方。

常用的系统测试方法:

性能测试是指对软件的运行性能指标进行测试,判断系统集成之后在实际的使用环境下能否稳定、可靠的运行。

强度测试也称压力测试、负载测试。强度测试是要破坏程序,检测非正常情况下系统的负载能力,也就是检查系统能力的最高实际限度。

安全性测试的目的在于检查系统对非法侵入的防范能力,验证安装在系统内的保护机构是否确实能够对系统进行保护,使之不受各种干扰。

软件兼容性测试检测软件之间能否正确的交互和共享信息,其目标是保证软件按照用户期望的方式进行交互,是用其他软件检查软件操作的过程。

恢复测试的主要目的是检查系统的容错能力。通过采用多种人工干预方式使系统失效,检验系统的恢复能力。

5.单元测试的测试用例主要根据( )的结果来设计。详细设计

单元测试-详细设计 集成测试-概要设计 确认测试,系统测试-需求文档 验收测试-用户需求

6.关于测试驱动开发,描述错误的是。C

A.测试驱动开发是一种敏捷开发方法

B.TDD需求开发人员学习测试相关知识

C.测试驱动开发不适合使用CMM/CMMI方法

D.测试驱动开发可以和相对编程结合使用

CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。此外还是化妆品的名字。CMMI(Capability Maturity Model Integration,能力成熟度模型集成)将各种能力成熟度模型(即:Software CMM、Systems Eng-CMM、People CMM和Acquisition CMM)整合到同一架构中去,由此建立起包括软件工程、系统工程和软件采购等在内的诸模型的集成,以解决除软件开发以外的软件系统工程和软件采购工作中的迫切需求。这两种方法属于测试驱动开发的方式。

7.软件测试计划评审会需要有 项目经理、客户(可选)、配置管理员、测试经理、开发组长等人的参加。

  1. 软件测试:

静态测试:代码审查,代码走查,桌面检查,静态分析,技术评审;

动态测试:

白盒测试也称结构测试或逻辑驱动测试,测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖(语句覆盖,判定覆盖,条件覆盖,判定条件覆盖,条件组合覆盖,路径覆盖),循环测试,基本路径测试,域测试,符号测试,程序插装,变异测试,数据流测试(定义覆盖,引用覆盖,定义引用覆盖)         灰盒测试:介于白盒黑盒之间

黑盒测试也称功能测试或数据驱动测试,测试方法有等价类划分法,边界值分析法,判定表驱动法,因果法,正交试验法,状态测试,场景测试,错误推断法,功能图法

9.软件验收测试的合格通过准则是:

1、软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。

2、所有测试项没有残余的一级二级三级的错误。

3、立项审批表、需求分析文档、设计文档和编码实现一致。

4、验收测试工件齐全(测试计划,测试用例,测试日志,测试通知单,测试分析报告)

10.在软件开发过程中,()适用于事先不能完整定义需求的软件开发。演化模型

瀑布模型,提供一种结构化的、自顶向下的软件开发方法,是所有软件生命周期模型的基础。

演化模型,针对实现不能完整定义需求的软件项目,利用迭代的思想,使软件逐步开发、逐步完善的机制,产品需求分解成多组,分批循环开发。

螺旋模型,遵从瀑布模型,迭代和风险驱动的开发过程,将瀑布模型的多个阶段转化到多个迭代过程中,适合大型系统的开发。过程:需求、架构、设计、开发、测试。

喷泉模型,主要用于面向对象软件技术开发项目,特点是各项活动之间没有明显界限。过程为:分析、设计、实现、确认、维护和演化。

  1. 确定模块的功能和模块的接口是在软件设计的那个阶段完成的?概要设计

概要设计( Preliminary Design ):分析设计备选方案,并定义软件体系 结构 、构件、接口、以及一个系统或构件的时间和大小估计的过程。

详细设计( detailed design ):将一个系统或构件的概要设计进行精化和扩展,达到设计充分完善而能够被实现程度的过程。

12.描绘软件结构的图形工具有:层次图、HIPO图、结构图

需求分析:E-R图,数据流图,状态转换图,层次方框图,IPO图,Warnier图

详细设计:程序流程图,盒图(N-S图),PAD图,判定表,判定树