软件测试复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件测试复习资料
————————————————————————————————作者:————————————————————————————————日期:
1、白盒与黑盒的概念应用
白盒测试也称为结构测试或则逻辑驱动测试,也就是已知产品的内部工作过程,清楚最终生成软件产品的计算机程序结构及其语句,按照程序内的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等,检验程序中的每条通路是否能按预定要求正确工作,检查程序内部动作或者运行是否符合设计规格要求,所以内部成分是否按规定正常运行。
白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖、循环覆盖、基本路径覆盖等。
逻辑覆盖又可进一步分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖等。
白盒测试余姚用于单元测试,其基本原则有:
(1)保证每个模块中所有度量路径至少被使用一次。
(2)完成所有逻辑值分别为真值和假值得条件下的测试。
(3)在上下便捷及可操作范围内运行所有循环,完成循环覆盖测试。
(4)检查内部数据结构以确保有效性,完成边界条件的测试。
黑盒测试方法,也称功能测试或则数据驱动测试方法,在测试时,把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对软件直接进行测试,检查系统功能是否按照需求规格说明书的规定正常使用、是否能适当的接收输入数据而输出正确的结果,检查相应的文档是否采用了正确的模板、是否满足规范要求等。
黑盒测试方法不关注软件内部结构,而是着眼与程序外部用户界面,关注软件的输入和输出,关注用户的需求,从用户的角度验证软件功能,实现端到端的测试,黑盒测试方法根据用户体验评估软件的质量,验证产品每个功能是否都能正常使用,是否满足用的要求。
黑盒测试方法中常用的具体方法有等价类划分法、边界值分析法、错误推出测法、因果图等。
借助这些方法可以简化测试数据的数量,设计更有效的测试用例。
黑盒测试方法常用于发现以下缺陷:
是否有不正确或遗漏了的功能;
能否正确的接收输入数据,能否产生正确的输出信息。
功能操作逻辑不合理。
界面是否出错、是否不美观。
安装过程中出现问题,安装步骤不清晰,不够方便灵活。
系统初始化问题。
.白盒测试和黑盒测试是什么? 比较一下他们的不同点?
答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。
软件的黑盒测试意味着测试要在软件的接口处进行。
这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
因此黑盒测试又叫功能测试或数据驱动测试。
黑盒测试主要是为了发现以下几类错误:
1、是否有不正确或遗漏的功能?
2、在接口上,输入是否能正确的接受?能否输出正确的结果?
3、是否有数据结构错误或外部信息(例如数据文件)访问错误?
4、性能上是否能够满足要求?
5、是否有初始化或终止性错误?
白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。
软件的白盒测试是对软件的过程性细节做细致的检查。
这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。
因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:
1、对程序模块的所有独立的执行路径至少测试一遍。
2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3、在循环的边界和运行的界限内执行循环体。
4、测试内部数据结构的有效性,等等。
.白盒测试和黑盒测试中设计测试用例的方法、依据有那些?
答:白盒测试的测试用例的设计方法是:逻辑覆盖和基本路径测试。
逻辑覆盖测试又可以分为:语句覆盖,判断覆盖,判断-条件覆盖,条件组合覆盖及路径覆盖;
基本路径覆盖它是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
白盒测试要求测试人员对程序的逻辑结构非常的了解,对测试人员来说具有一定的挑战性,故白盒测试主要有开发人员来完成。
黑盒测试的测试用例的设计方法是:等价类划分,边界值分析,错误推测法,因果图和功能图。
1、等价类划分:是把所有的可能输入划分成为若干部分,然后从每一个子集中选取具有代
表性的数据作为测试用例。
该方法是黑盒测试用例设计常用方法。
注意:等价类划分可有两种不同的情况:有效等价类和无效等价类。
有效等价类是指对程序的规格说明来说是合理的,有意义的输入数据构成的集合,利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
而无效等价类则恰恰相反。
2、边界值分析法:是对等价类划分方法的补充。
3、错误推测法:该方法是基于经验和直觉推测程序中所有可能存在的各种情况,从而有针
对性的设计用例。
基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,更加他们选择测试用例。
4、因果图方法:前面的等价类划分和边界值分析方法都重点从输入条件考虑,但未考虑输
入条件之间的联系,相互结合等。
考虑输入条件之间的相互结合,可能会产生新的情况。
5、功能图方法:一个程序的功能说明通常有动态说明和静态说明组成。
动态说明描述了输
入数据的次序或转移的次序;静态说明描述了输入条件与输出条件之间的对应关系。
2、CMMI的各个阶段
CMMI是对软件组织进化阶段的描述,随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力经过这些阶段逐步前进。
CMM将软件过程的成熟度分为5个等级,分别为:
►初始级。
软件过程的特点是杂乱无章,有时甚至很混乱,几乎没有明确定义的步骤,成功完全依赖个人努力和英雄式的核心任务。
►可重复级。
建立了基本的项目管理过程来跟踪成本、进度和机能,有必要的过程准则来重复以往在同类项目中的成功。
►定义级。
管理和工程的软件过程已经文档化、标准化,并综合成整个软件开发组织的标准软件过程。
所有的项目都采用根据实际情况修改后得到的标准软件过程来发展和维护软件。
►管理级。
制定了软件工程和产品质量的详细度量标准。
软件过程和产品的质量都被开发组织的成员所理解和控制。
►优化级。
加强了定量分析,通过来自过程质量反馈和来自新观念、新技术的反馈使过程能持续不断地改进。
2、P67用V模型
图
在进行需求分析和定义、系统设计、详细功能设计等过程中,测试团队要进行测试需求定义、测试计划等活动。
除此之外,测试团队还有更多的工作要做,充分体现全过程的软件测试。
(1)当开发人员进行需求分析和定义时,测试人员不仅参与需求分析、对需求定义进行评审,了解产品的设计特性、用户的真正需求,及时找出需求定义中的问题,而且可以根据需求定义文档,准备验收测试计划,设计验收测试用例,为将来验收测试做好准备,虽然验收测试时在较厚的阶段执行,但它的计划和设计工作却是最早的。
(2)当架构师或其他开发人员在做系统设计时,测试人员不仅了解系统是如何实现的,了解系统设计中有没有充分考虑系统的非功能特性。
和开发人员讨论如何验证系统的非功能特性。
测试人员还对系统设计结构进行评审,及时发现系统设计的问题,包括所设计的非功能特性是否具有可测行,而且准备相应的系统测试计划,设计相应的系统测试用例,同时根据系统所设计的平台和架构,开始准备系统的测试环境,包括硬件和第三方软件的采购,实际上,这些准备工作也需要较长的时间。
(3)在进行详细设计时,测试人员不仅和产品、开发等各个方面的人员讨论,完成设计规格说明书的评审,及时发现详细功能设计的问题,而且可以设计相应的功能测试试用例。
(4)一面编程,一面进行单元测试,是一种很有效的办法,可以尽快找出程序中的错误,充分的单元测试可以大幅提高程序质量,减少成本。
3、P277优秀测试工程师应具备的素质
(1)责任感:测试人员需要高度的责任感,本着对质量一丝不苟的追求,坚持用客户的观点看待问题,不放过任何一个可能存在的一点,从分关注细节。
(2)沟通能力:具有与技术人员和非技术人员的交流能力。
既可以和用户谈得来,又可
以同开发人员说的上话,但他们之间的沟通语言和方式有很大差别。
(3)技术能力:软件测试归根结底还是技术性工作,归属于研发部门,技术是基础。
(4)自信心:开发人员指责测试人员出了错是常有的事情,测试工程师对自己持有的正确观点是有足够的自信心,对自己所报的Bug有信心。
(5)耐心:有些软件测试工作需要难以置信的耐心,有时需要花费大量的时间去分离、识别一个错误,需要对其中一个测试用例运行几十遍、甚至上百遍,了解错误在什么特别的情况下才发生。
(6)怀疑精神:测试人员在耐心听每个人解释的时候,还要保持高度警惕、怀疑一切,直到自己的分析结构或亲自测试之后,才做出决定。
(7)适度的好奇心:测试人员有适度的好奇心,会促使他们向山洞中的深处探索,探索没有去过的地方,最终可以会有一个大发现。
(8)洞察力:具有适度的怀疑精神和好奇心,如果缺乏洞察力,测试能力还会受到较大的限制。
一个好的测试工程师具有一种先天的敏感性,并且能尝试着通过一些巧妙的变化去发现问题。
(9)反向思维和发散思维能力:所有负面测试都需要反向思维和良好的发散思维能力。
(10)记忆力:如果测试人员有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这对以后的测试有很大帮助,应为不少错误是由于开发人员的不良习惯导致的。
4、P183web安全性测试
(1)数据加密:某些数据需要进行信息加密盒过滤后才能在客户端和服务器之间进行传输,包
括用户登录密码、信用卡信息
(2)登录或身份验证:一般的应用站点都会使用登录或注册后使用的方式,因此,必须对用
户名和匹配的密码进行校验,以阻止非法用户登录。
(3)输入验证:web页面有很多表单提交,实际每个输入域都可能是一个潜在的风险,黑客
可以利用文字输入框,将攻击性的脚本输入进去,提交服务器处理来攻击服务器。
(4)SQL注入:从客服端提交特殊的代码,以手机程序及服务器的信息,从而获取必要的数
据库信息,然后基于这些信息,可以注入某些参数,绕过程序保护,针对数据库服务器进行攻击。
(5)超时限制web应用系统一般会设定超时限制,当用户长时间不做任何操作时,需要重新
登录才能打开其他页面。
会话的安全性还包括交换会话标识符、会话存储状态等的安全性。
(6)目录:web的目录安全性也不容忽视,如果web程序或web服务器的处理不合适,可以
通过简单的URL替换和推测,是整个web目标暴露出来,带来严重的安全隐患。
(7)操作痕迹:为了保证web应用系统的安全性,日志文件是至关重要的。
需要测试相关信
息是否写入日志文件,是否可追踪。
5、P195数据库关系控制测试
数据库的并发控制能力是指在处理多个用户在同一时间内对相同数据进行同时访问的能力。
一般的关系型数据库都具备这种能力,日常应用系统中也随处可见。
(1)丢失数据:当事务A和B对同一个数据源进行修改,B提交的结果破坏了A提交的结果,导致A对数据库的修改失效。
(2)不可重复读数据:是指事务A在读取数据后,事务B对其进行了修改并执行了更新操作,事务A无法再现前一次读取的结果。
(3)读脏数据:读脏数据是指事务A修改某个数据,并将其写到数据库,事务B读取相同数据的时候,事务A由于某种原因撤销操作,此时事务A已经将原来的数据还原,
而事务B所读取的数据和数据库中真实记录不一致,此时事务B督导的数据就是脏数据。
在数据库应用系统中,一般会使用加锁技术来进行并发控制。
并发流程分析、并发控制测试分析
6、用等价类划分方法写测试用例
(1)等价类划分法指把所有可能的输入数据,即程序的输入域分成若干个部分(子集)后,从每
个子集中选取少数具有代表性的数据作为测试用例的方法。
是一种重要且常用的黑盒测试的测试用例设计方法。
等价类可分为两种情况:有效等价类与无效等价类。
有效等价类是指:对程序的规格说明是有意义的、合理的输入数据所构成的集合;无效等价类意义与之相反。
程序规定:输入三个整数作为三边的边长构成三角形。
当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。
用等价类划分方法为该程序进行测试用例设计。
步骤1:确定等价类根据给出的程序输入的规定,可以划分如下等价类:
a. 输入值的集合:整数
b.输入值的个数:3个
c.要构成三角形,默认的输入值的范围:
正数 d.构成三角形的要素,输入值必须遵守下面的规则:两边之和大于第三边; e.
一般三角形等价类 f.等腰三角形。
g. 等边三角形
步骤2:建立等价类表,给每个等价类编号设a、b、c为三角形的三边
输入条件有效等价
类
编号无效等价类编号
3个整数整数 1 一边非整
数a非整数11 b非整数12 c非整数13
双边非整数ab非整数14 ac非整数15 bc非整数16
三边非整
数
abc非整数…3个数 2 给出一边只有a
只有b
只有c
给出双边只有ac
只有ab
只有bc
给出超三边
正数 3 一边小于
等于0 a<=0 b<=0 c<=0
双边小于等于0 a|b<=0 a|c<=0 b|c<=0
三边小于a|b|c<=0
等于0
一般三角形a+b>c 4 a+b<c
a+b=c a+c>b 5 a+c<b
a+c=b b+c>a 6 b+c<a
b+c=a
等腰三角形a=b 7 b=c 8 a=c 9
等边三角
形
a=b=c 10
7、P10软件测试和开发的关系
如啊你按测试和如啊你按开发构成一个全过程的交互、协作关系,两者自始至终一起工作,共同致力于同一个目标——按时、高质量的完成项目。
V模型能够准确的反映测试活动与分析设计活动的关系,说明软件测试活动和项目同时启动,软件测试的工作很早就开始了,避免了瀑布模型所带来的误区——软件测试是在代码完成之后进行。
在V模型中,左边的软件的定义和实现,右边的验证,右边是对左边工作成果的检验,以确认是否满足用户的需求。
V模型从左到右描述了基本的开发过程和测试行为,非常明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各个阶段的对应关系,即从四个层次完成软件的验证,即对需求。
系统架构设计、详细的产品设计和代码的验证。
(1)需求验证对应验收测试,客户需求的确认测试。
(2)系统架构设计的验证对应系统测试
(3)产品详细设计的验证对应功能测试
(4)代码的验证对应单元测试
也就是说,如果只在某一、两个方面完成对软件产品的测试,都说明测试时不完整的。
只有对这四个层次完成对软件铲平的测试,才是完整的。