菜单
菜单
文章目录
  1. 软件测试

(no title)

软件测试

黑板问题+课本重点

杨德杰,blog.idejie.com


1.什么要进行软件测试

  • 产品质量的保证
  • 控制成本的关键
  • 软件可靠性确认
  • 让企业具备国际竞争的实力

2.软件测试的定义(IEEE)

  • 在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价;
  • 分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性 ;

3.简述测试正向思维和逆向思维

正向思维:

  • 软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
  • 软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果
  • 测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作。

逆向思维:

  • 测试是为了证明程序有错,而不是证明程序无错误
  • 一个好的测试用例是在于它能发现至今未发现的错误
  • 一个成功的测试是发现了至今未发现的错误的测试

4.软件测试的学科历史

  • 1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。
  • 1978~1983年,以破坏性检测为导向,测试是为了找到软件中的错误(逆向思维)。
  • 1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。
  • 1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。
  • 风险观点:软件测试被认为是对软件系统中潜在的各种质量风险进行评估的活动
  • 经济观点:就是以最小的代价获得最高的软件产品质量

4…Veification和 Vadidation 的区别

软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体

  • “验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性
  • “有效性确认”是确认所开发的软件是否满足用户真正需求的活动。

5.测试和开发的关系

.img

3.测试和质量保证的关系

  • **软件质量保证(Software Quality Assurance,SQA)**是软件工程领域中的一部分,为了确保软件开发过程和结果符合预期的要求,而建立的一系列规程和计划,以及依照规程和计划采取的一系列活动及其结果评价
  • 软件开发过程是按照计划和规范实施的
  • ·软件开发结果包括完整的软件和文档,并且符合可预期的目标和检验标准
  • SQA与软件测试之间相辅相成,既存有包含又存有交叉的关系。SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。而软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。
  • 他们的相同点在于二者都是贯穿整个软件开发生命周期的流程。他们的不同之处在于,SQA是一项管理工作,侧重于对流程的评审和监控,而测试是一项技术性的工作,侧重于对产品进行评估和验证

4.什么是软件质量特征?有哪些特征?

软件产品具有满足规定的或隐含要求能力要求有关的全部特征和特性。

包括:软件产品质量满足用户要求的程度、软件各种属性的组合程度、用户对软件产品的综合反映程度、软件在使用的过程中满足用户要求的程度

特征:

  1. 功能性:与一组功能及其指定性质有关的一组属性,这里的功能是满足明确或隐含的需求的那些功能。
  2. 可靠性:在规定的一段时间和条件下,与软件维持其性能水平的能力有关的一组属性。
  3. 易用:由一组规定或潜在的用户为使用软件所需作的努力和所作的评价有关的一组属性。
  4. 效率:与在规定条件下软件的性能水平与所使用资源量之间关系有关的一组属性。
  5. 可维护:与进行指定的修改所需的努力有关的一组属性。
  6. 可移植:与软件从一个环境转移到另一个环境的能力有关的一组属性。

其中每一个质量特征都分别与若干子特征相对应。

5.软件缺陷的定义?产生的原因?

定义:

  • 从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;
  • 从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。

原因:

  • 技术问题(算法错误,语法错误,计算和精度问题,接口参数传递不匹配)
  • 团队工作(沟通不充分,误解)
  • 软件本身(文档错误、用户使用场合不正确、时间上不协调)

6.为什么说软件产品规格说明书是软件缺陷存在最多的地方?

  • 用户一般是非计算机专业人员,软件开发人员和用户的沟通存在较大困难,对要开发的产品功能理解不一致
  • 由于软件产品没有涉及、开发,完全靠想象去描述系统的实现结果,所以有些特性不够清晰
  • 需求和变化的不一致性
  • 对软件产品规格说明书不够重视,在规格说明书的设计和写作上投入的人力、时间不足。
  • 没有在整个开发团队中进行充分沟通

7.软件测试的分类

按测试阶段:单元测试、集成测试、系统测试、验收测试

根据测试过程中被测软件是否被执行,分为静态测试和动态测试

按目标/特性:功能测试、性能测试、适用性测试、安全性测试、可靠性测试

按测试方法:白盒测试、黑盒测试

按被测试的对象::单元测试、程序测试、系统测试、文档测试、Web 应用和客户端测试、数据库和服务器测试

8.静态测试、动态测试定义与区别

静态测试:包括对软件产品的需求和设计规格说明书的评审、对程序代码的审查以及静态分析等等。静态分析的查错和分析功能是其他方法所不能替代的,可以采用人工检测和计算机辅助静态分析手段进行检测,但越来越多地采用工具进行自动化分析

动态测试:通过真正运行程序发现错误,通过观察代码运行过程,来获取系统行为、变量实时结果、内存、堆栈、线程以及测试覆盖度等各方面的信息,来判断系统是否存在问题,或者通过有效的测试用例,对应的输入输出关系来分析被测程序的运行情况,来发现缺陷

9.黑盒测试和白盒测试

白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

10.针对不同测试对象的4种基本组合方法

11.软件测试的级别

单元测试:针对程序系统中的最小单元—模块或组件进行测试,一般和编码同步进行。主要采用白盒测试方法

集成测试:也称组装测试、联合测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的模块之间问题

系统测试:一般须在完成集成测试后进行,而且是针对应用系统进行测试。系统功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用

验收测试:向未来的用户表明系统能够像预定要求那样工作,验证软件的功能和性能如同用户所合理期待的那样

安装测试:按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用环境中,进行一步一步的安装操作性的测试

12.什么是测试用例

  • 为了特定的测试目的而设计的测试条件,测试数据及与之相关的测试规程的一个特定的使用实例或场景,也称为有效发现软件缺陷的最小测试执行单元
  • 测试脚本是测试工具执行的一组指令计划
  • 测试用例是测试人员在测试过程中的重要参考依据
  • 测试用例将有助于节约测试时间,提高测试效率。
  • 良好的测试用例不断地被重复使用,使得测试过程事半功倍
  • 测试用例是一个知识积累的过程

13.重要:等价类划分法、边界值分析法、判定表方法、因果图法、

14.必考:基于逻辑覆盖的方法

15.画出w模型。并简述每个阶段主要工作?

16.TMM的建立得益于什么?成熟度描述?

得益于:

  • 充分吸收 CMM 精华
  • 基于历史演化的测试过程
  • 业界的最佳时间

五级成熟度

17.检查点?CTP?4P?

为了能客观地决定各个关键域的级别,TPI 模型提供了一种度量工具-检查点

关键测试过程(Critical Test Process,CTP):内容参考模型、上下文相关的方法,并能对模型进行裁剪

4P:计划(Plan)、准备(Prepare)、执行(Perform)和完善 (Perfect);计划和完善主要是管理工作,准备和执行是实践工作

18.STEP?比较

STEPSystematic Test and Evaluation Process,系统化测试和评估过程)是一个内容参考模型

  1. STEP与CTP比较类似,而不像TMMI和TPI,并不要求改进需要遵循特定的顺序。
  2. 某些情况下,STEP评估模型可以与TPI成熟度模型结合起来使用

19.单元测试的定义?目标?作用?方法(静态测试的运用)?

  • 单元测试是对软件基本的组成单元进行独立的测试

  • 单元模块被正确编码:验证代码与软件系统设计的一致性;对单元的代码规范性,正确性,安全性等进行验证

  • 作用

    • 尽早发现错误,错误发现越早,成本越低,发现问题比较容易,修正问题更容易

    • 检查代码是否符合设计和规范,有利于将来代码的维护

  • 静态测试

    • (互查(Peer Review)
    • 走查 (Walk Through)
    • 评审 ( Inspection ))
  • 动态测试:白盒测试和黑盒测试

20.桩程序?驱动程序?例子?

驱动模块(drive):对底层或子层模块进行测试所编写的调用这些模块的程序

桩模块(stub):对顶层或上层模块进行测试时所编写的替代下层模块的程序。

21.产品评审?走查和评审的区别?

码评审:互查、走查、会议评审(审查)

走查:采用讲解、讨论和模拟运行的方式进行的查找错误的活动

会批评审:以会议形式,制定目标、流程和规则,按缺陷检查表(不断完善)逐项检查。发现问题适当记录,避免现场修改,发现重大缺陷,改正后会议需要重开

img

22.写出集成测试的过程?有哪些方式(例子)

非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。

渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试

大棒集成方法:采用大棒集成方法**,**先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性的全部集成起来进行集成测试 。

自顶向下集成方式

1.对主控模块测试;

2.根据选定的结合策略,每次用一个实际模块代替一个桩程序;

3.结合下一个模块的同时进行测试;

4.为保证加入模块没有引进新的错误,回归测试

自底向上的集成方法

1把底层模块组合成实现某个特定软件子功能的族

2写一个驱动程序,协调测试数据的输入和输出

3对由模块组成的子功能进行测试

4去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族

2步开始不断重复进行上述过程,直至完成

混合策略

混合法:上层“自顶向下”,下层“自底向上”

23.什么是系统测试?目的是什么?

系统测试:检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到要求。其测试内容包括:功能测试,非功能测试与回归测试等。

目的:充分运行系统,验证整个系统是否满足功能和非功能的质量需求

24.功能测试的目的?基本思想特点?作用?

  • 根据产品规格说明书,验证被测试的系统是否满足各方面的使用要求
  • 客户需求为导向,全面理解功能特性

25.回归测试及其作用?

在程序有修改的情况下保证原有功能正常的一种策略和方法

  • 所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;
  • 不影响软件原有功能的正确性。

26.性能测试及其主要工作?

性能测试(performance test)就是为了发现系统性能问题或获取系统性能相关指标而进行的测试。一般在真实环境、特定负载条件下,通过工具模拟实际软件系统的运行及其操作,同时监控性能各项指标,最后对测试结果进行分析来确定系统的性能状况

工作:

  • 获取系统性能某些指标数据
  • 为了验证系统是否达到用户提出的性能指标
  • 发现系统中存在的性能瓶颈,优化系统的性能

27.压力测试?主要类型?特点?

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

  • 并发性能测试(重点)

过程也是一个负载测试过程,即逐渐增加并发虚拟用户数负载,直到系统出现性能瓶颈或者崩溃为止。

  • 疲劳强度测试

采用系统稳定运行情况下能够支持的最大负载,持续长时间运行,以发现性能问题。

  • 大数据量测试

独立的数据量测试

    • 针对某些系统存储、传输、统计、查询等业务进行大数据量测试

综合数据量测试

    • 和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案

28.可靠性测试?容错性测试?

安全性测试:根据ISO 8402的定义,安全性是**“使伤害或损害的风险限制在可接受的水平内”**

可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。

容错性测试(Fault-tolrent test)是检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。

29.验收测试的概念和步骤?

验收测试 (Acceptance Test): 在软件产品完成了系统功能和非功能测试之后、产品发布之前所进行的软件测试活动它是技术测试的最后一个阶段,也称为交付测试。

步骤:

  • 制定测试计划及验收通过准则,通过客户评审(需求阶段)

  • 设计测试用例并通过评审

  • 准备测试环境与数据,执行测试用例,记录测试结果

  • 分析测试结果,根据验收通过准则分析测试结果,作出验收是否通过及测试评价。

    • 测试项目通过;
    • 测试项目没有通过,但存在变通方法,在维护后期或下一个版本改进;
    • 测试项目没有通过,并且不存在变通方法,需要很大的修改;
    • 测试项目无法评估或者无法给出完整的评估。此时须给出原因
  • 提交测试报告

30.α测试和β测试

  • **Alpha testing **:开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正

    经过α测试调整的软件产品称为β版本

  • **Beta testing **:组织外部的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、反馈使用意见。然后软件开发公司再对β版本进行改错和完善

31.国际化?本地化?二者关系?软件国际化的标准?

软件国际化(SW Internationalization,I18N)

    • I18N是借助功能设计和代码实现中软件系统有能力处理多种语言和不同文化,使创建不同语言版本时,不需要重新编写代码的软件工程方法。

软件本地化(SW Localization,L10N)

    • L10N是将一个软件产品按特定国家/地区或语言市场的需要进行加工,使之满足特定市场上的用户对语言和文化的特殊要求的软件生产活动。

关系:

  • I18N是L10N的基础和前提,为L10N做准备
  • L10N是I18N向特定本地语言环境的转换
  • I18N 是软件产品源语言开发的一部分,属于Engineering
  • L10N 可以独立于Engineering,可由第三方完成

软件国际化标准

1 运行时可动态切换某种国家或地区的语言

2 在应用软件启动前或启动时可以设置某种语言

包括:

    • 切换语言的机制。
    • 与语言无关的输出接口。
    • 与语言无关的输入接口和标准的输入协议
    • 资源文件的国际化
    • 支持和包容本地化数据格式

32.软件本地化的测试内容?

    • 功能性测试,所有基本功能、安装、升级等测试;
    • 翻译测试,包括语言完整性、术语准确性等的检查;
    • 可用性测试,包括用户界面、度量衡和时区等;
    • 兼容性调试,包括硬件兼容性、版本兼容性等测试;
    • 文化、宗教、喜好等适用性测试
    • 手册验证,包括联机文件、在线帮助、PDF文件等测试

33.什么是测试自动化?三层含义?

测试自动化:是把以人为驱动的测试转化为机器执行的一种过程,即模拟手工测试步骤,通过执行由程序语言编制的测试脚本,自动化的完成软件的单元测试、功能测试、负载测试或性能测试等全部工作。

三层含义:

(1)“一切”,不仅代表测试的全部工作—被测试的对象进行验证,还包括测试的其他工作,包括缺陷管理、测试管理、黄静安装、设置和维护等。

(2)“可以”,意味着某些工作无法由系统自动完成,如脚本的开发、测试用例的设计,需要创造性,其工作需要手动处理。

(3)即使由系统进行自动化测试,还少不了人工干预,包括事先安排自动化测试任务、测试结果分析、调试测试脚本等。

34.测试自动化的实现原理?

35.几种脚本技术?

      • 线性脚本,是录制手工执行的测试用例得到的脚本,这种脚本包含所有的击键、移动、输入数据等,所有录制的测试用例都可以得到完整的回放
      • 结构化脚本,类似于结构化程序设计,具有各种逻辑结构、函数调用功能
      • 数据驱动脚本,将测试输入存储在独立的(数据)文件中,而不是存储在脚本中P220图

36.怎么判定测试结束?测试用例?测试覆盖率?测试缺陷率?

37.ISO9126定义的软件质量特征?