软件测试核心概念
2017-09-22 10:15:42 104 举报
AI智能生成
软件测试
作者其他创作
大纲/内容
软件测试
什么是软件
软件=程序+数据库+文档+服务
软件测试的定义
软件测试是使用人工和自动手段来运行或测试某个系统的工程,其目的在于检验被测软件系统是否满足规定的需要,或是弄清楚被测系统的预期结果与实际结果之间的差别
软件测试的误区
如果有良好的设计和高水平的程序员,就不需要测试了
软件测试并不创造任何代码和产品,可以不需要测试
测试等与调试
软件需求规格说明应详细的包含所有用户的需求
软件测试可以提高软件质量
测试没有技术含量
软件缺陷的概念
软件测试员认为软件难以理解
软件未达到需求规格说明书中指明不会出现的错误
软件出现了需求规格说明书中指明的范围
软件功能超出需求规格说明书中指明的范围
软件未达到需求规格说明书中虽未指出但应达到的目标
软件测试的发展历程
第一阶段:初始阶段
第二阶段:定义阶段
第三阶段:集成阶段
第四阶段:管理、测量和最优化阶段
外包测试现状
现场测试模式
内部测试模式
设立联合研发中心
Bug
<div>庞大而昂贵的真空管组成,计算机运行产生的光和热,吸引了一只小虫子钻进真空管里,导致整个计算机无法工作,找到并取出后,恢复工作,bug这个词就流传下来</div>
软件缺陷
<div>软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好</div>
<div>软件未达到需求规格说明书中指明的功能</div>
<div>软件出现了需求规格说明书中指明不该出现的错误</div>
<div>软件功能超出需求规格说明书中指明的范围</div>
<div>软件未达到需求规格说明书中虽未指出但应达到的目标</div>
黑盒测试技术
测试方法
<div><div><div>基于决策表的测试方法等</div></div></div><div><div><div><br></div></div></div>
等价类测试
<div><div><div>定义:依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个有代表性的测试数据开展测试</div></div></div>
满足条件
<div><div><div>(1)被测系统对该等价类中的每个数据的处理方式相同(保证等价)</div></div></div>
<div><div><div>(2)各等价类之间互不相交,即每个数据唯一隶属一个等价类(保证不冗余)</div></div></div>
<div><div><div><div><div>(3)所有等价类的并集是整个输入域(保证完备)<br></div></div></div></div></div>
<div>等价类划分的原理:通过等价划分满足:测试的完备性和无冗余性</div><div><div><div><div><div> 划分原则:分而不交、合而不变、类内等价</div><div><br></div></div></div></div></div>
等价类测试的分类
有效等价类
<div><div><div><div><div>定义:对于SRS而言,合理、有意义的输入数据构成的集合,即被测对象能接受的数据,用于考查软件的正常工作能力</div></div></div><div><div><div><br></div></div></div></div></div>
无效等价类
<div><div><div><div><div>定义:对于SRS而言,不合理、无意义的输入数据构成的集合,即被测对象不能接受的数据,用于考查软件的容错能力</div></div></div><div><div><div><br></div></div></div></div></div>
SRS
<div>等价类划分的简便原则</div>
<div><div><div><div><div>(1)将某个输入条件所有可以取的值划分为一个有效等价类,其余取值划分为一个无效等价类(2)针对有效等价类,通过不断施加规则,将满足规则和不满足规则的数据划分为不同的有效等价类(3)重复该步骤,将有效等价类中不断划分为更多子有效等价类,直至无法继续划分为止,最终得到的每个有效等价类代表了被测对象的一种特殊的处理方式<br></div></div></div><div><div><div><br></div></div></div></div></div>
<div>等价类中所有数据是否完全等价的简便原则</div>
<div><div><div><div><div>1)在某个指定的等价类中,被测对象对该等价类中的输入数据或输入项的处理方式是否一致(2)如果不一致,则该等价类需要进一步做等价划分</div></div></div></div></div>
<div><div><div>强组合:最终得到的测试用例完全覆盖所有输入条件的有效等价类的所有组合情况;实质是构成有效等价类数量的笛卡儿积,即完全组合</div></div></div>
<div><div><div>弱组合:测试用例仅需覆盖所有输入条件的有效等价类即可<br></div></div></div>
<div><div><div><div><div><div>什么是等价类划分?依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个有代表性的测试数据开展测试</div></div></div></div></div></div>
测试中几个概念
<div>黑盒测试:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下检测每个功能是否正常使用<span>白盒测试:又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。</span></div><div><div><div></div></div></div>
<div>静态测试:不运行程序,只是对程序进行检查和审核 <span>动态测试:使用和运行程序进行检查</span></div>
<div>通过性测试:审查软件,描绘状态,尝试各种合法可能性,确认状态及其转换正常</div><div><div><div><div><div><div><div>失效行测试:为了破坏软件而设计和执行的测试用例</div><div><br></div></div></div></div></div></div></div>
边界值测试
<div>定义:在被测对象的边界及边界附近设计测试用例</div><div><div><div><div><div>基于:独立性假设和单缺陷假设</div></div></div></div></div>
<div>测试难点(4点)</div>
<div>输入域(被测数据)的确定</div><div><div>边界的确定</div></div><div><div>边界点附近邻域的设置</div></div><div><div><div>测试用例的设计</div></div></div>
<div>输入域:整体输入域:多个输入条件共同构成的具有一定实际意义的输入域</div><div><div><div><div><div><div><div><div><div> 个体输入域:输入条件分别构成的单个输入域的集合</div></div></div></div></div></div></div></div></div>
<div>边界值测试用例设计—数据选择:</div>
<div>穷举法:在每个边界点的邻域范围内取所有数据</div><div><div>典型值法:在边界点a处选择a-1 ,a ,a+1 这三个值作为测试数据</div></div><div><div>强边界法:测试用例覆盖所有输入条件的所有边界组合</div></div><div><div>弱边界法:基于单缺陷假设,仅覆盖输入条件的单个边界点即可</div></div><div><div><div><div><div><div><div><div><div><div><div>全边界法:强边界+弱边界</div></div></div></div></div></div></div></div></div></div></div>
决策表
<div><div><div><div><div>是一个用表格形式来整理逻辑关系的工具,由横向的条件(因)和动作(果)和纵向的规则(测试用例)组合而成</div></div></div></div></div>
<div>使用决策表生成测试用例</div>
<div><div><div><div>1.分析条件和动作 2.生成决策表 3.简化决策表 4.转成测试用例</div></div></div></div>
<div>场景设计的基本原则</div>
<div><div><div><div>最少的场景数等于事件流的总数,基本流与备选流的总数2.有且唯一有一个场景仅包含基本流3.对应某个备选流,至少应有一个场景覆盖,且在场景中应该避免覆盖其他备选流</div></div></div></div>
<div>基于场景的测试基本思想</div>
<div><div><div><div>通过分析不同事件的触发顺序和处理结果;构建各个事件流,并基于这些事件的触发控制业务流程,形成多个不同的场景,最终基于场景设计测试用例</div></div></div></div>
<div>基本流</div>
<div><div><div><div>从系统的某个初始状态开始,经一系列状态变化后到达终止状态的过程中最主要的一个业务流程。</div></div></div></div>
<div>备选流</div>
<div><div><div><div>以基本流为基础,在经过基本流每个判定节点处满足不同的触发条件从而导致其他事件流</div></div></div></div>
<div>因果图</div>
<div><div><div><div>用图解的方法表示输入输出之间的各种组合关系,写出判定表,从而设计相应的测试用例</div></div></div></div>
<div>因果图测试</div>
<div><div><div><div>1.分析需求2.找出因果关系,原因与原因之间的关系,画出因果图3.将因果图转换成决策表4.根据(3)中的决策表,设计用例的输入数据和预期输出</div></div></div></div>
<div>因果图的使用场景</div>
<div><div><div><div><div>应用的输出结果依赖于各种输入条件的组合或各种输入条件之间有某种相互制约关系时</div></div></div></div></div>
<div>因果图法</div>
<div><div><div><div>从需求中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转化成判定表,通过判定表生成测试用例的方法。</div></div></div></div>
<div>状态迁移图法</div>
<div><div><div><div>是一种基于产品规格分析,对系统的每个状态及与状态相关的函数进行测试,通过不同的状态验证程序的逻辑流程</div></div></div></div>
<div><div><div><div>有限状态机,可以用状态图,状态表,状态树表示</div></div></div></div>
<div>状态迁移图的使用步骤</div>
<div>1.根据需求,理解关键字段,获得主要的状态</div>
<div>2.绘制状态迁移图</div>
<div>3.画出状态迁移树</div>
<div><div><div><div><div>4.抽取测试用例规则(每个状态至少到达一次)</div></div></div></div></div>
<div>因果图</div>
<div><div><div><div>用图解的方法表示输入输出之间的各种组合关系,写出判定表,从而设计相应的测试用例</div></div></div></div>
子主题
子主题
子主题
子主题
测试用例
条件
<div><div><div>办理长期出差</div></div></div>
<div><div><div>未办理长期出差,出差到省会城市</div></div></div>
<div><div><div>未办理长期出差,出差到不是省会城市</div></div></div>
不出差
动作
1500
1000
800
不补助
0 条评论
下一页