51Testing软件测试论坛
标题:
软件测试
[打印本页]
作者:
Lighthouse
时间:
2005-3-16 12:54
标题:
软件测试
软件测试
软件测试 1
第一部分:软件测试 2
第一章:软件危机和软件生存周期 2
第二章:软件测试的意义 2
第三章:什么是软件测试 3
第四章:正确认识软件测试 3
第二部分:软件错误和软件质量保证 4
第一章:软件错误类型 4
第二章:错误数量估计 4
第三章:软件质量因素和质量特性 4
第四章:软件质量保证的任务 5
第五章:程序排错 5
第三部分:软件测试策略 5
第一章:静态方法和动态方法 5
第二章:黑盒测试与白盒测试 5
第三章:测试步骤 6
第四章:人工测试 7
第四部分:黑盒测试 7
第一章:等价类划分 7
第二章:因果图 8
第三章:正交试验设计法 8
第四章:边值分析 8
第五章:判定表驱动测试 8
第六章:功能测试 9
第五部分:白盒测试 9
第一章:程序结构分析 9
第二章:逻辑覆盖 9
第三章:域覆盖 9
第四章:符号测试 9
第五章:路径分析 9
第六章:程序插装 9
第七章:程序变异 9
第一部分:软件测试
第一章:软件危机和软件生存周期
软件生存周期包括六个阶段:
· 计划(Planning)
确定开发的总目标,给出软件功能、性能、可靠性、以及接口等方面的设想。
研究完成该软件任务的可行性,探讨问题解决的方案。对可供开发使用的资源(软件、硬件、人力等)、成本、可取得的效益和开发进度作出估计。制定完成开发任务的实施计划。
· 需求分析(Requirement Analysis)
对开发的软件进行详细的定义,由软件人员和用户共同讨论决定,那些需求是可以满足的,并给予确切的描述。
· 设计(Design)
· 程序编写(Coding)
· 测试(Testing)
检验开发成果是否符合要求。分为:
1. 单元测试:单独检验各模块工作。
2. 集成测试:将已经测试的模块组装起来进行检验。
3. 系统测试:按规定的需求,逐项进行有效性测试,以决定开发的软件是否合格,能否交付用户使用。
· 运行与维护(Running and Maintenance)
第二章:软件测试的意义
测试的含义
· 正确性测试:给出测试数据,运行被测软件,将所得到的结果与预期结果进行比较,从而判断程序的正确性。
· 广义的测试:贯穿在整个开发各个阶段的复查,评估与检测活动统称为确认、验证、测试活动。
· 确认:如何决定最后的软件产品是否正确无误。
· 验证:如何决定软件开发的每一个阶段,每个步骤的产品是否正确无误,并与前面的开发阶段和开发步骤保持一致。
· 软件评估:对软件的运行情况作出评估,保证它能够继续满足用户的需求。
· 回归测试:重新运行以前已经正确无误的测试用例,以便消除由于软件修改而带来的各种错误。
测试与前期开发工作的关系
计划 系统测试
需求分析 系统测试、确认测试
概要设计 集成测试
详细设计 模块测试
编码 模块测试
各个阶段的测试活动
· 需求分析阶段
制定V.V&T计划;确定与测试用例相关的需求;复审并分析需求(针对问题的清晰性、完整性、正确性、一致性、可测试性、可跟踪性进行复审)。
· 概要设计阶段
针对要执行的逻辑功能而生成的测试数据,补充软件需求。
· 详细设计阶段
设计要考虑到基于系统物理结构的测试数据。
· 编码和测试阶段
针对编码过程中对设计的修改补充修改测试用例规格说明。
为了确保软件产品能够符合用户的需求,必须着眼于整个软件生存期,进行各个阶段的V,V&T活动,从而使得软件在开饭完成后,不致于和用户的需求有较大的差距。
第三章:什么是软件测试
使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
广义的理解:软件测试应该包括:可接受性测试、诊断信息测试、效率测试。具体包括:正确性、可靠性、有用性、健壮性、性能。
第四章:正确认识软件测试
理解的误区:
· 测试工作没有设计那样具有开拓性。
· 测试的目的是破坏性的,是对设计工作的否定。
· 测试工作没意思。
· 测试工作是靠运气的。
· 对程序的盲目自信。
应该明确的观点:
· 进行彻底的测试是不可能的。测试既不能进行的不足,也不能过渡。
· 能够高效率揭露程序错误的测试是成功的测试。
· 软件错误不可避免。软件开发的复杂性。
· 软件的错误是扩散性的,越早发现问题,开发成本越低。
· 程序正确性验证不能代替测试。
软件测试信息流:
· 测试->评估测试结果
实施测试应该给出的三类信息、软件配置:被测对象的需求规格说明书、设计说明书、源代码。2、测试配置:测试计划、测试配置、测试用例、测试程序。
第二部分:软件错误和软件质量保证
第一章:软件错误类型
软件正确性的标准:
· 程序编写语法错误。
· 程序执行运行错误。
· 程序中无不适当语句。
· 程序能通过典型有效数据测试。
· 程序能通过典型无效数据测试。
· 可以通过任何可能数据的测试,并且给出正确结果。
软件错误分类:
· 软件需求错误:需求不合理,不完全,有逻辑错误。
· 功能和性能错误:功能错误,遗漏,冗余。信息有误,不确切,异常情况处理有误。
· 软件结构错误:程序控制流或控制顺序有误,处理过程有误。
· 数据错误:数据定义或者结构有误,存取和操作有误。
· 软件实现和编码错误:编码风格,变量定义。
· 软件集成错误:接口有误,各部分在配合方面不协调。
· 软件系统结构错误:操作系统调用错误和环境使用错误。
· 测试定义和测试执行错误:测试设计方案实施有误。
第二章:错误数量估计
· 撒播模型
· 回归模型
第三章:软件质量因素和质量特性
软件运行特性:
· 正确性:能够满足规格说明书的要求。
· 可靠性:软件能否按照规定履行职能。
· 效率:需要的资源和代码。
· 完整性:未经允许的人员使用软件的能力。
· 可用性:是否容易学习使用。
软件的修正特性:
· 可维护性:找到错误的位置和修改的工作量。
· 灵活性:修改某个运行的软件要付出的工作量。
· 可测试性:进行测试的工作量。
软件的转移特性:
· 可移植性:从不同软硬件环境移植的工作量。
· 可复用性:部分程序再次利用的程度。
· 共运行性:与其他软件协作工作的工作量。
第四章:软件质量保证的任务
· 采用技术手段。
· 组织正式技术评审。
· 软件测试。
· 推行软件工程标准。
· 对软件变更进行控制。
· 对软件质量进行度量。
· 对软件质量情况及时记录和报告。
第五章:程序排错
排错的方法:
· 内存信息转储:保存现场的寄存器以及所有信息。
· 跟踪:需要重新编译。
· 打印语句:在程序的特定位置安排打印语句。
· 开发专用的排错程序。
排错策略:
· 试错法。
· 回溯法。
· 向前追踪。
· 二分查找法。
· 归纳法。收集信息-确定错误类型-作出假设-审查假设-实施修正-验证修正。
· 演绎法:枚举若干可能的原因和假设-排除原因-研究假设-证明假设。
第三部分:软件测试策略
第一章:静态方法和动态方法
静态方法:不利用计算机运行被测试的程序,采用其他手段检测。对被测程序进行特性分析的方法的总称。
第二章:黑盒测试与白盒测试
黑盒测试:功能测试,数据驱动测试,被测程序被当作打不开的黑盒。在完全不考虑内部特性的情况下,测试者只知道该程序输入盒输出之间的关系或者程序的功能。根据需求规格说明书推断测试结果的正确性。黑盒测试是从用户观点出发的测试。
· 测试人员需要兼顾各个层次的功能进行测试。
· 发展可靠的高效的功能测试方法。
· 规格说明书中没有的东西将不被测试。
白盒测试:结构测试,逻辑驱动测试,基于程序的测试。测试者可以分析程序的内部构造,根据内部构造设计测试用例,不考虑程序的功能。
· 语句覆盖:要求所有语句都能够被检验过。
· 分支覆盖,判定覆盖:要求所有判定的两个分支的取值都得到覆盖。
· 条件覆盖:当判定包含多个条件时,每个条件的取值都得到检验。
黑盒测试是从用户的观点,从数据得输入输出关系进行测试的。只从程序外部特性进行测试,不涉及程序内部结构。白盒测试根据程序内部的结构进行测试,不考虑外部特性。黑盒和白盒测试相加的办法进行测试,可以尽可能的发现错误。
第三章:测试步骤
单元测试-集成测试-确认测试-系统测试
单元测试:
特征:
· 由开发人员进行。
· 任何一个单元都包括数据输入、加工、得到结果。
· 有规格说明书。
目标:
· 模块接口:被测模块信息能否正常无误的流入和流出。
· 局部数据结构:模块工作过程中,内部的数据能否保持完整性,数据的内容,形式及相互关系不发生错误。
· 边界条件:在为限制数据加工而设置的边界处,模块能否正常工作。
· 覆盖条件:模块的运行能否作到满足特定的逻辑覆盖。
· 出错处理:模块工作中发生了错误,其出错处理能否正常有效工作。
模块接口测试注意事项:
· 接受的输入参数与模块的变量个数是否一致。
· 参数和变量属性是否匹配。
· 是否会修改只作为输入值的变量。
· 全局变量在所有模块中的定义是否一致。
· 是否有常数作为变量来传送。
· 文件属性是否正确。
· 缓冲区大小。
· 初始值是否正确。
· 上溢、下溢、地址错误。
驱动模块:用来模拟被测模块的上级模块。
桩模块:用来模拟被测模块工作中调用的模块。
集成测试:
非增式测试方法:在配备辅助模块的条件下,对所有模块进行个别的单元测试。然后按照程序结构图把各个模块联结起来。把联结后的程序当作一个整体进行测试。
特点:模块接口处有差错,只能在最后暴露出来。
增式测试方法:
作者:
Lighthouse
时间:
2005-3-16 12:55
· 自顶向下增式测试:首先对主模块进行单元测试,然后把下一级模块和主模块联结起来,然后再增加下一级模块。
特点:逐步求精,测试数据难以生成。
· 自底向上增式测试:首先测试最底层模块,然后增加上一级模块,最后增加主模块。
特点:由于最后一层模块没有完成,不能开始测试;所以设计和测试工作不能交叉进行。
特点:差错逐步暴露,辅助模块较少,部分模块得到频繁考验。
确认测试:检验所开发的软件是否能够按照顾客的要求运行。
确认测试准则:需要根据需求规格说明书,完成测试规格说明书。
配置审查:确保所开发的软件所有资料完整。
系统测试:
恢复测试:采用各种方法干预软件出错,进而检验系统的恢复能力。
安全测试:验证安装在系统内的保护机能够对系统进行保护,使之不受各种非正常的干扰。
强度测试:检验系统的能力最高实际限度。
性能测试:检验安装在系统内的软件运行性能。
第四章:人工测试
审查会:inspection
评审:review
程序检查:program inspection
代码审查:code inspection
代码静态检查:desk checking
评审的目的是在于找出软件产品的问题。评审的对象是软件产品而不是开发者。
评审的作用:
· 利用评审数据提高软件质量。
· 发现遗漏、多余、错误这三类问题。
第四部分:黑盒测试
第一章:等价类划分
把程序的输入划分为若干部分,然后从每个部分中选取少数代表性数据当错测试用例。
· 划分集合:使用集合中的一个输入条件作为测试数据进行测试,不能发现程序中的错误,那么使用集合中的其他输入条件进行测试也不可能发现错误。
· 有效等价类:对程序的规格说明是有意义的、合理的输入数据所构成的集合。
· 无效等价类:对程序的规格说明是不合理的或无意义的输入数据所构成的集合。
等价类的划分方法
· 如果输入条件规定了取值范围或值的个数,则可以确定一个有效等价类和两个无效等价类。
· 输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可能有一个有效等价类和一个无效等价类。
· 如果我们确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应该将等价类进一步划分为更小的等价类。
测试用例的设计:
· 为每个等价类划分唯一的编号。
· 设计一个测试用例,使其可能多的覆盖尚未覆盖的有效等价类。
· 设计一个测试用力,使其覆盖一个无效的等价类。重复覆盖会忽略某个错误。
第二章:因果图
步骤:
· 分析原因和结果,原因是输入,结果是输出。
· 分析程序规格说明书中的描述语义的内容。并将其表示成联结各个原因和各个结果的因果图。
· 有些原因和结果的组合情况是不可能出现的。标明约束条件。
· 将因果图转换为判定表。
第三章:正交试验设计法
从大量的试验点中挑选中适量有代表性的点,依据正交表,合理安排试验的一种科学的试验设计方法。
第四章:边值分析
· 如果输入条件规定了取值范围,则应该取边界值及其稍大和稍小的值。
· 针对规格说明的每一个输入条件使用上述原则。
· 如果程序规格说明中提高的输入或输出域是个有序的集合,应该注意选取有序集的第一个和最后一个元素作为测试用例。
· 分析规格说明,找出其他可能的边界条件。
第五章:判定表驱动测试
· 规格说明以判定表形式给出,或是很容易转换成判定表。
· 条件的排列顺序不会也不影响执行那些操作。
· 规则的排列顺序不会也不影响执行那些操作。
· 每当某一规则的条件满足,执行定要的操作后,不必检验别的规则。
第六章:功能测试
第五部分:白盒测试
第一章:程序结构分析
控制流分析:控制流图,程序流程图。
数据流分析:针对代码优化,查找变量。
信息流分析:验证程序变量之间信息的传输遵循的保密要求。
第二章:逻辑覆盖
语句覆盖:在测试时,每个语句至少执行一次。
判定覆盖:使得程序中每个判断的取真分支和取假分支至少经历一次,判断的真假值均曾被满足。
条件覆盖:程序中每个判断中,每个条件的可能取值至少满足一次。
判定-条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次。并且每个判断本身的判定结果也至少出现一次。
路径覆盖:测试用例覆盖程序中所有可能的路径。
第三章:域覆盖
域错误:执行路径对于输入域的一类情况,如果程序的控制流有错误,对于某一特定的输入可能执行的是一条错误路径,这种错误称为域错误。
第四章:符号测试
允许程序的输入不仅是具体的数值数据,而且包括符号值。就是用符号代替具体的值。
第五章:路径分析
检验程序从入口开始,执行过程中经历的各个语句,直到出口。
第六章:程序插装
借助往被测程序中插入操作来实现测试目的的方法。
第七章:程序变异
错误驱动测试方法,该方法是针对某类特定程序错误制定的。
· 程序强变异
· 程序弱变异
作者:
wzb521
时间:
2005-3-16 13:36
不错,支持一下了
如果是自己总结的,那我很佩服
而且非常羡慕
作者:
smartbaby
时间:
2005-3-16 17:22
写的很好!
欢迎多发这样的好文章!
作者:
lulenz
时间:
2005-10-8 09:06
标题:
很大的帮助 谢谢
我是新手 正不知道怎么入门 看了你的贴 很有帮助 谢谢
作者:
423799223
时间:
2006-12-12 18:56
不错
能不能有具体的资料
作者:
alandeng1987
时间:
2007-1-8 15:54
高手哦,崇拜ing....
作者:
wwwxzl
时间:
2007-1-10 13:33
sdlkfj2
作者:
wodesen
时间:
2007-5-12 17:02
看了,知识啊
作者:
yuxuan555269
时间:
2007-11-28 14:16
辛苦了,支持一下
作者:
xiaotaomi
时间:
2009-9-7 14:54
写的不错 顶一下
作者:
xmy942002
时间:
2009-10-10 16:27
总结的不错,若补充上集成测试策略等就更好了
作者:
yuyali520
时间:
2010-5-12 17:11
作者:
zoes0307
时间:
2011-7-14 09:58
学习学习啊!!
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2