热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件工程——第六章软件测试【转】

第六章软件测试主要内容:软件测试的目的和原则软件测试用例设计软件测试策略软件测试种类程序调试本章要点:软件测试的目的和原则。软件错误的分类软件测试的过程和策略软件测试用例设计的方

第六章    软件测试

主要内容:

软件测试的目的和原则

软件测试用例设计

软件测试策略

软件测试种类

程序调试

本章要点:

软件测试的目的和原则。

软件错误的分类

软件测试的过程和策略

软件测试用例设计的方法。

掌握软件测试中可靠性分析方法

软件测试的目的和原则

软件测试的目的

软件测试原则

软件测试的对象

测试信息流

测试与软件开发各阶段的关系

软件测试的目的

1、    测试是程序的执行过程,目的在与发现错误;

2、    一个好的测试用例在于能发现至今未发现的错误;

3、    一个成功的测试是发现了至今未发现的错误的测试。

软件测试原则

1、    应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。

2、    测试用例应由测试输入数据和对应的语气输出结果这两部分组成。

3、    程序员应避免检查自己的程序。

4、    在程序设计用例时,应当包括合理的输入条件和不合理的输入条件。

测试信息流

a软件配置

b测试配置

c测试工具

d测试结果分析

e排错(调试)

f修正后的文档在测试

测试与软件可发各阶段的关系

1、    软件开发过程是一个自顶向下,逐步细化的过程

2、    测试过程是依相反顺序安排的自顶向上,逐步集成的过程。

测试用例设计

常用的测试方法:黑盒测试,白盒测试

黑盒测试:这种方法是把测试对象看做一个黑盒子,检查程序的功能是否符合它的功能说明。

白盒测试:此方法把测试对象看做一个透明的盒子,对程序所有逻辑路径进行测试。

逻辑覆盖

逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属于白盒测试。

*语句覆盖          判定—条件覆盖

*判定覆盖                条件组合覆盖

*条件覆盖     路径覆盖

语句覆盖:就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。

判定覆盖:就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

条件覆盖:就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

判定—条件覆盖:就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。

条件组合覆盖:就是设计足够的测试用例,运行被测试程序,使得每个判断的所有可能的条件取值组合至少执行一次。

路劲测试:就是设计足够的测试用例,覆盖程序中所有可能的路径。

条件测试路径选择

当程序判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构。

循环测试路径选择

循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环。

黑盒测试的测试用例设计

1、    等价类划分

2、    边界值分析

3、    错误推测法

4、    果因图

等价类划分方法把所有可能的输入数据,即程序的输入域划分成若***分,然后从每一部分中选取少数有代表性的诗句作为测试用例。

等价类的划分有两种不同的情况:有效等价类和无效等价类。

划分等价类的原则:1、如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。2、如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。3、如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。4、如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。5、如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。

边界值分析

使用边界值分析方法设计测试用例,首先应确立边界条件。应当选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据。

用边界值分析设计测试用例应遵循原则:1、如果输入条件规定了取值范围,则应对该范围的边界内附近,恰好在边界和边界外附近(无效等价类中)设计测试用例。2、如果输入条件规定了数据的个数,则应对最小个数,最大个数,比最少个数少1,比最大个数大1等情况设计测试用例。3、针对规格说明中的每个输出条件使用前面的12原则。4、如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,线性表等)。应选有序的第一个和最后一个元素作为测试用例。

等价类和边界值方法的区别:

1、    边界值不是从等价类中随便取一个数据作为代表,而是选一个或几个特定值,使这个等价类的每个边界都作为测试的目标。

2、    边界值分析不仅要考虑输入条件,而且要考虑输出条件(输出等价类)。

一般联合使用等价类划分和边界值分析二种方法。

错误推测法

错误推测法德基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。

因果图:

因果图的适用范围:如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。

因果图方法最终生成的就是判定表。

用因果图生成测试用例的基本步骤:1.分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。2。分析软件规格说明描述中语义,找出原因与结果之间,原因与原因之间对应的是什么关系?根据这些关系,画出因果图。3、由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。4。把因果图转换成判定表。5。把判定表的每个列拿出来作为依据,设计测试用例。

在因果图中出现的基本符号:通常在因果图中Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。0表示某状态不出现,1表示末状态出现。

软件测试的策略

测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。

单元测试(Unit Testing又称模块测试,是针对软件设计的最小单元——程序模块,进行正确性检验的测试工作。

单元测试步骤:测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。驱动模块(driver)和桩模块(stub

部分常见错误清单

一、              模块接口检查表

1.          模块接受的输入参数个数与模块的变元个数是否一致?

2.          参数与变元的属性是否匹配?

3.          参数与变元所用的单位是否一致?

4.          传递给被调用模块的变元的数目是否等于那个模块的参数的数目?

5.          传递给被调用模块的变元属性和参数的属性是否一致?

6.          传递给被调用的模块的变元的单位和该模块参数的单位是否一致?

7.          传递给内部函数的变元属性、数目和次数是否正确?

8.          是否修改了只是作为输入用的变元?

9.          全程变量的定义在各个模块中是否一致?

10.      有没有把常数当做变量来传递?

二。完成外部输入/输出时的检查表

1、文件属性是否正确?

2Open语句是否正确?

3、格式说明与输入/输出语句给出的信息是否一致?

4、缓冲区容量与记录长度是否匹配?

5、在进行读写操作之前是否打开了文件?

6、队结束文件条件的判断和处理是否正确?

7.对输入/ 输出错误的处理是否正确?

8、有没有输出信息中有正文错误?

三、模块局部数据结构检查表

1.不正确或不一致说明?

2、错误的初始值或错误的缺省值?

3、变量名拼写错或缩写错?

4.不相容的数据类型?

5、下溢、上溢或是地址错误?

组装测试(Integrated Testing

通常,把模块组装成为系统的方式有两种:一次性组装方式和增殖式组装方式

增值式组装方式:1、自顶向下的增值方式2、自底向下的增值方式3、混合增值式测试

自顶向下增值的方式和自底向上增值方式各有优缺点。

一般来讲,一种方式的优点是另一种方式的缺点。

确认测试(Validation Testing)又称有效性测试,任务是验证软件的功能和性能及其他特性是否与用户的要求一致。

1、    进行有效性测试(黑盒测试)

有效性测试是在模拟的环境(可能就是开发的环境)下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。

2、    软件配置复查

软件配置复查的目的是保证

软件配置的所有成分都齐全

各方面的质量都符合要求

具有维护阶段所必须的细节;

而且已经编排好分类的目录。

验收测试(Acceptance Testing)是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用生产中的实际数据进行测试。

系统测试(System Testing)是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。

α测试和β测试

α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。

β测试是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。

测试种类:

软件测试是由一系列不同的测试组成。主要目的是对以计算机为基础的系统进行充分的测试。

功能测试:功能测试是在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。

可靠性测试:如果系统要求说明书中有对可靠性的要求,则需进行可靠性测试。

强度测试:强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。

性能测试:是要金叉系统是否满足在需求说明书中规定的性能。特别是对于实际系统或嵌入式系统。

恢复测试:恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。

启动/停止测试:这类测试的目的是验证在机器启动及关机阶段,软件系统正确处理的能力。

配置测试:这类测试是要检查计算机系统内各个设备或各种资源之间的相互联结和功能分配中的错误。

安全性测试:是要检验在系统中已经存在的系统安全性、保密性搓洗是否发挥作用,有无漏洞。

可使用性测试:主要从使用的合理性和方便性等角度对软件系统进行检查,发现人为因素或使用上的问题。

可支持性测试:是要验证系统的支持策略对于公司与用户方面是否切实可行。

安装测试:它的目的不是找软件错误,而是找安装错误。

过程测试:在一些大型的系统中,部分工作由软件自动完成,其他工作则需由各种人员,包括操作员,数据库管理员,终端用户等,按一定规程同计算机配合,靠人工来完成。

互联测试:是要验证两个或多个不同的系统之间的互连性。

兼容性测试:这类测试主要验证软件产品在不同版本之间的兼容性。

容量测试:是要检验系统的能力最高能达到的什么程度。

在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。

文档测试:这种测试是检查用户文档(如用户手册)的清晰性和精确性。

调试(Debug

软件调试是进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步诊断和改正程序中潜在的错误。

调试的步骤:

1、    从错误的外部表现形式入手,确定程序中出错位置。

2、    研究有关部分的程序,找出错误的内在原因。

3、    修改设计和代码,以排除这个错误。

4、    重复进行暴露了这个错误的原始测试或某些有关测试。

几种主要的调试方法:

调试的关键在于推断程序内部的错误位置及原因,可以采用以下方法:

强行排错:这种调试方法目前使用较多,效率较低。他不需要过多的西靠,比较省脑筋。

回溯法调试:这是在小程序中常用的一种有效地调试方法。一旦发现了错误,人们先分析错误征兆,确定最先发现“症状”的位置。

归纳法调试:它的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。

常以3W1H形式组织可用的数据:

What”列出一般现象,“Where”说明发现现象的地点,“When”列出现象发生时所有已知情况“How”说明现象的范围和量级。

演绎法调试:演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。

调试原则:

在调试方面,许多原则本质上是心理方面的问题,调试由两部分组成,调试原则也分成两组。

确定错误的性质和位置的原则

用头脑去分析思考与错误征兆有关的信息。避开死胡同。

只把调试工具当做辅助手段来使用。避免用试探法,最多只能把它当做最后手段。

修改错误的原则:

在出现错误的地方,很可能还有别的错误。当心修正一个错误的同时有可能会引入新的错误。

***********************************************************************************************
*【Author】:missysm586
*【Date】:2013年08月10日
*【URL】:http://blog.csdn.net/missysm586/article/details/5889254
*【Notice】:
*1、本文为原创技术文章,首发博客园个人站点。
*2、转载和引用请注明作者及出处。
*3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
*4、本声明为文章一部分,转载和引用必须包括在原文中。
***********************************************************************************************


推荐阅读
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • Windows7企业版怎样存储安全新功能详解
    本文介绍了电脑公司发布的GHOST WIN7 SP1 X64 通用特别版 V2019.12,软件大小为5.71 GB,支持简体中文,属于国产软件,免费使用。文章还提到了用户评分和软件分类为Win7系统,运行环境为Windows。同时,文章还介绍了平台检测结果,无插件,通过了360、腾讯、金山和瑞星的检测。此外,文章还提到了本地下载文件大小为5.71 GB,需要先下载高速下载器才能进行高速下载。最后,文章详细解释了Windows7企业版的存储安全新功能。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
author-avatar
我还是看好小棠呀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有