工作流测试用例(精选12篇)
1.工作流测试用例 篇一
一、测试计划的有效性和全面性
无论做什么工作,都是计划先行,然后按照所制定的计划去执行、跟踪和控制。软件测试也一样,先要制定测试计划,是做好整个测试工作的前提。所以在进行实际测试之前,应制定良好的、切实可行的、有效的测试计划。软件测试计划的目标是提供一个测试框架,不断收集产品特性信息,对测试的不确定性(测试范围、测试风险等)进行分析,将不确定性的内容慢慢转化为确定性的内容,该过程最终使得我们对测试的范围、用例数量、工作量、资源和时间等进行合理的估算,从而对测试策略、方法、人力、日程等做出决定或安排。
1.测试计划的要点
测试规划与软件开发活动同步进行,在需求分析时,就开始测试策划,确定测试需求、目标、资源等。测试计划可以按不同的测试阶段(集成测试、系统测试等)来组织,也可以为每个测试任务或目标(安全性、性能、可靠性等测试)进行考虑。
测试计划主要集中在测试目标、质量标准、测试策略、测试范围、测试用例设计方法、所需资源和日程安排等,其关键是制定有效的测试策略,界定清楚地测试范围,识别出测试中所存在的各种风险并找出风险回避、监控和管理的方法,针对不同的测试目标或阶段确定测试方法,对测试工作量及所需的资源、时间进行合理的估算。所有这些,都是为了两个根本目的:测试的质量和效率。
2.制定测试策略
制定测试策略主要分析测试的目标和质量指标、确定测试的对象和依据,测试的重点和所采用的方法,包括在规定的时间内哪些测试内容要完成,软件产品的特性或质量在哪些方面得到确认。测试策略可以分为:
基于测试技术的测试策略,根据软件系统的技术构成和层次结构,着重考虑如何分层测试、选择哪些测试工具、如何将白盒测试和黑盒测试有机地结合起来等。
基于测试方案的综合测试策略,根据测试的目标和范围,着重考虑如何更好地满足测试需求、如何让功能测试、适用性测试和兼容性测试等进行有机结合、如何充分利用测试资源、如何更有效地完成回归测试等。
为了更好地制定好测试策略,要做到:
全面细致地了解产品的项目信息:应用领域、测试范围、市场需求、产品特点、主要功能和技术架构;
基于模块、功能、系统、版本、性能、配置和安装等各个因素对产品质量的影响,客观地、全面地展开测试计划;
根据软件单元在系统结构的重要性差异和一旦发生故障将给客户造成的损失大小,来确定软件测试的等级、重点和先后次序;
需要在测试用例数和测试覆盖率上进行权衡而获得一个平衡点,以便能使用尽可能少的有效测试用例去发现尽可能多的程序错误。测试不足意味着让用户承担隐藏错误带来的危险;同时反过来看,过度测试则又会浪费许多宝贵的资源或耽误软件产品的发布时间。
3.确定测试范围
测试主要依据 “产品设计规格说明书”、代码所发生的变化及其影响的区域,来确定哪些功能和特性要测试,哪些功能和特性不需要测试。在确定测试范围时,主要考虑的因素有:
优先级最高的需求功能
新增加的功能和编码改动较大的已有功能
容易出现问题的部分功能
过去测试不够充分的地方
经常被用户使用的功能和配置(占20%)
4.所需资源和日程安排
为了合理、准确地安排日程,对测试工作量要进行正确的估计。除了对工作量的估计之外,还要正确评估参与该项目人员的培训时间、适应过程和工作能力等。由于涉及到不同的项目、不同的测试人员、不同的前期介入方式,要对每人每天能够完成的平均测试用例数目做出一个准确的估计确实很困难,但是可以根据以前一些项目测试的经验或历史积累下来的数据进行判断推理,并适当增加10%-20%的余量,估算结果就比较准确了。
在估算的基础上,进行有效的、合理的资源安排。在不同的测试阶段人力资源的需求是不一样的,所以人力资源的计划要有一定的灵活性和动态性,形成有机的动态平衡,保证测试的进度和资源的使用的效率。
5.编制测试计划的技巧
要做好测试计划,测试设计人员要仔细阅读有关资料,包括用户需求规格说明书、设计文档等,全面熟悉系统,并建议注意以下方面:
让所有合适的相关人员参与测试项目的计划制定,特别是在测试计划早期;
测试所需的时间、人力及其它资源的预估,尽量做到客观、准确、留有余地;
测试项目的输入、输出和质量标准,应与各方达成一致;
建立变化处理的流程规则,识别出在整个测试阶段中哪些是内在的、不可避免的变化因素,加以控制。
6.测试项目计划的评审
测试项目的计划不可能一气呵成,而是要经过计划初期、起草、讨论、审查等不同阶段,才能将测试计划制定好。测试计划的评审是完成测试计划关键的一个环节,包括测试组织内部的自我评审、讨论和修改,然后交到评审会进行正式的评审,直至测试计划得到审批。
测试计划的正式评审,项目中的每个人(产品经理、项目经理、开发工程师等)都应当参与。计划的审查是必不可少的,每一个参与者都可能根据其经验及专长提出问题或建议,弥补在测试范围、工作量、风险等各方面的不足,进一步完善测试计划。
二、测试用例在测试活动中的作用:
1.强化测试用例在测试活动中的作用
测试用例在实际中没有起多大作用 , 在实际测试时根本没有按测试用例执行,测试执行后没有把新的测试用例补充到用例库中等等。
为何如此? 根本原因是对测试用例重要性的认识不够,测试流程不完善,针对测试用例的管理流程更不完善,其实,从三个方面具体来说:
1)测试用例的重要性是毋庸置疑的,它是软件测试全部过程的核心,是测试执行环节的基本依据,如果这个依据不能足够发挥它应起的作用,那是不是说这个依据不明确、依据设计的不合理呢?答案是肯定的!
2)制定了完备有效的测试用例,为什么不按测试用例执行测试呢?首先是因为企业没有严格和良好的机制促使和保证测试执行者这样做;其次是个别测试人员投机取巧心理作祟的表现。
3)测试用例设计得不可能天衣无缝,不可能完全满足软件需求的覆盖要求,测试执行过程里肯定会发现有些 测试路径或数据在用例里没有体现,那么事后该将其补充到用例库里,以方便他人和后续版本的测试;如果没有这样做,那么测试部门负责人和每个测试员都难辞其疚,是该重新坐下来思考一下公司的测试用例管理规范和测试流程了。
2.改进测试用例执行过程
那么究竟如何做,才能尽量避免上述问题呢?
我们不妨从软件开发周期的每个阶段就把这些问题考虑进去,以便从初始就力争将问题缩到最小,将问题扼杀在萌芽阶段。
1)软件需求分析阶段,测试人员从软件生命周期的需求阶段就开始介入。通常测试人员的测试工作开展在开发周期的末尾,如果前期不涉入,如何通晓整个系统的需求和架构而对其充分测试呢?
项目的测试负责人和测试工程师在 需求阶段 的任务有:
a.参与软件需求调研,以测试角度分析需求的可测性,可构思将来对其测试的方法、原则等;更重要的是,对不可测或难以测试性问题要及时与客户或项目经理协调解决。
b.全面了解系统需求,从客户角度考虑软件测试需要达到的验证状态,即何些功能点需重点测试、何些无需,以便将来制定测试计划。
2)软件分析设计阶段:
l 测试人员除制定测试计划书等基本工作外,还有一个相当必要的任务,那就是将系统的可测性落实到书面文档,以备将来编写测试用例。(之所以要这么做,是因为考虑到很多企业编写测试用例直接参考需求规格说明书或者分析流程图,这样跨度大,难度也大,是造成测试用例不完备、覆盖范围小的重要原因)。
l 测试人员更要编写一份《软件功能点测试描述书》,它是软件的详细测试分析文档,其主旨是将系统分析人员的开发分析文档加工成以测试为角度的功能点分析文档,重要的是描述对系统分解后每个功能点逐一的校验描述,包括何种方法测试、何种数据测试、期望测试结果等,这些信息都是描述性的,无须具体数据;它的作用是据此编写测试用例,以及测试执行时的参考依据,基于它直接来源于需求,覆盖当然最全,也最能贴近客户要求。
l 当然该文档不是非要不可,如果有类似的替代文档或有工具可自动实现此功能,则会倍加受推崇!
3)软件开发阶段: 编写测试用例。应该遵守的原则是:
n 首先,从覆盖率来说,测试用例库的用例要达到最大覆盖软件系统的功能点。编写测试用例时,基本上就是将《软件功能点测试描述书》中的每个功能点进行操作上的细化:一是从步骤上描述到达校验点的方式,二是从内容上描述以何种数据校验功能点;如此可实现趋向最大需求覆盖率。
n 其次,从数量来讲,一个多于半年开发周期(指从编码开始直到提交客户的时间段)的软件系统,它的用例数量不要低于 4000 个,甚至更多!(IBM 等大公司测试过程的人士会认为 4000 还是很少的数目。我们试想,对于一个中小型软件系统,如果设计出 5000 个用例,那它的测试覆盖率还怕不高么)!
n 再次,如此众多测试用例的管理问题。是的,最好是需要测试用例管理工具软件。以 word 或 excel 来编写测试用例也可以。)测试用例 格式上一般内容以外的几个要点:
l 制定适合本公司的测试用例模版;
l 是用例模版里要有关键字索引,以方便按关键字分类查找,如测试方法(分手工 / 自动两种);
l 是测试用例要有 状态跟踪,可根据用例执行状态索引用例(测试通过、测试失败、测试中断等);
l 是执行失败的用例要 链接到相应的缺陷报告,如有根据缺陷报告检索测试用例的试图更妙,可评估该缺陷影响范围的大小;
l [FS:PAGE] 是测试用例的修改,以及每个测试周期的运行都有 日志记录,以便后期追踪
和新员工参考;)软件测试阶段,测试负责人划分不同的测试阶段(如集成测试、系统测试、回归测试、性能测试等),再划分不同的子测试周期(如前两个星期做 冒烟测试,测试方式是手工 / 自动,测试版本是 **,测试环境是 **,包括服务器端与客户端等;接着做第一模块功能测试;如此顺次。),再为项目组测试人员分配测试用例(通常原则是每个人负责几块区域的测试任务),测试人员则按照详细的用例文档去执行测试,测试失败则提交软件缺陷报告。这里要遵循的几个原则是:
A)有健全且严格的体制保证测试执行者严格按照测试用例执行测试。这并不妨碍测试者创造力的发挥,因为前期用例的设计和编写就是项目全体测试人员智慧的结晶!我们一直苦苦追寻众多测试工程师加班加点辛苦工作的原因,其实大都发生这一阶段;如此实施,即便没有解决根本问题,也会大大提高测试执行效率。
B)如有对测试用例认识模糊或内容遗漏的地方,可暂做记录待后期解决,或经测试负责人与项目其他管理人员同意方可更新用例库。
C)测试负责人每日负责跟踪本测试子周期或阶段的测试用例执行情况,以及每日提交的缺陷报告,根据执行进展状态以及缺陷数量或严重等级与项目高层或其他人员展开交流,商议解决途径,并确定或调整未来时间的测试任务。
D)测试执行者负责执行自己区域的测试用例,还要负责跟踪该区域软件缺陷的修改进展,根据其状态 不断验证软件功 能点。
E)通过缺陷管理工具来 管理软件缺陷 ;这样的集成工具都提供了清晰的报告模版及强大的追踪功能,测试团队的每一成员按照自己的角色和权限访问缺陷管理工具,并不断跟踪软件缺陷的状态。
F)对于自动测试(包括自动化功能测试和性能、压力测试),有一些特殊要点。是自动化测试无须编写测试用例,只要在编写时将用例库里适合或需要自动测试的用例的测试方法(不同工具可能名称不同)设为自动即可,故而到此阶段才提及自动化测试。自动化测试的实施方案有所不同,每款测试工具的使用和测试流程也不同,但都可以从在这一阶段编写测试脚本,并运行自动测试。这里要提的其他几个基本原则是:
l 是选择恰当的测试工具品牌,并要求提供培训;
l 是项目的自动化测试工作有专人负责跟踪,以保证工作质量,他们可不参与日常测试;l 是确定自动化测试成员在项目中的角色,一般自动化测试成员隶属于项目测试负责人,负责人同样跟踪其工作状态;
l 是选择最简单、最重用的测试用例使用自动测试方法;
l 是使用工具厂商提供的测试框架编写脚本,千万别采用单纯录制回放的方式,要开发出健壮且重用性强的测试脚本 ;
l 是有专人更新脚本,也有专人跟踪自动测试结果;
l 一般选择的测试工具品牌和缺陷管理工具品牌是同一厂商,以方便不同类型缺陷的集中管理;
l 是在多人协作开发测试脚本、代码量相对较大情况下,应考虑使用配置管理工具来管理测试脚本。)由于不同公司开发产品的特殊性,也许需要特殊类型的测试,如安全测试、甚至代码级单元测试等,这些内容需要酌情考虑测试用例的编写,以及测试的执行。)软件验收阶段 :除了提交软件测试评估报告(各种类型测试结果的评估都应有报告)这些基本工作外,对于测试用例,此时要集中时间更新,更新整个测试周期中一切需要更新的内容,以方便未来新版本的测试。即便您开发的是项目软件--提交客户后没有新版本--那也需要后期维护,维护阶段需要重新测试某功能点,然而用例如果不准确,碰巧又是一个
新员工来做,那就死翘翘了!)其他说明:加强测试部门内部人员的培训教育很重要,包括工作技能与个人素质两方面,可通过国内主要的培训机构,也可是购买工具厂商的直接培训。应该说,很多测试新人对于测试用例的书写还存在问题,更别提及测试用例的管理或执行;以此可见,我们的测试工程师需要培训的空间还很大。
3.总结
综上所述,我们得出结论--测试用例在测试中没起到应有的作用,是因为测试用例编写质量不高,覆盖不够,执行不利;测试执行时不遵循测试用例,执行后不更新用例库,是测试部门的整体工作流程不健全、不规范。
2.工作流测试用例 篇二
随着航空型号功能的日趋复杂, 软件在型号中的应用越来越多, 其规模和复杂度也日趋上升。由软件所导致的问题的比例也在上升, 软件已经成为影响航空型号产品质量和可靠性的关键因素之一。软件测试作为软件研制的重要环节, 其是否充分、有效, 将直接影响到软件产品的质量[1]。
软件测试类型按照开发阶段分为单元测试、部件测试、配置项测试和系统测试[2]。对于航空型号软件而言, 系统测试是最重要的测试, 它能够发现软件中潜藏的时序、软硬件接口等方面的问题。
1 系统测试概述
系统测试是在真实系统工作环境下或系统仿真环境下检验完整的软件配置项能否和系统正确连接, 并满足系统设计文档的要求[3]。系统测试过程描述见图1。
2 系统测试类型及测试用例设计要求
常见的系统测试类型分为功能测试、性能测试、边界测试、接口测试、余量测试、安全性测试、强度测试等[3]。不同的测试类型, 在设计测试用例时, 其测试点各有不同, 下面结合测试实践经验, 对不同的测试类型的测试点进行分析。
2.1 功能测试
功能测试是对软件需求规格说明中的功能需求逐项进行的测试, 以验证其功能是否满足要求。其测试点包括:
1) 用正常值的等价类输入数据值测试;
2) 用非正常的等价类输入数据值测试;
3) 进行每个功能的合法边界和非法边界值输入的测试;
4) 用一系列真实的数据类型和数据值运行, 测试超负荷、饱和及其他“最坏情况”的结果;
5) 对控制流程的正确性、合理性等进行验证。
功能测试是最基本的测试, 同时也是最重要的测试。在进行功能测试时, 首先要明确功能测试的正常等价类, 同时在用例设计中别遗漏了正常等价类;根据输入数据的属性展开想象, 设计非正常的功能测试用例, 并且注意预期结果;设计测试用例时, 一方面分析输入数据, 另一方面分析操作流程。
2.2 性能测试
性能测试是对软件需求规格说明中的性能需求逐项进行测试, 以验证其性能是否满足需求。其测试点包括:
1) 数据采集功能的测试;
2) 测试在获得定量结果时程序计算的精确性 (处理精度) ;
3) 测试其时间特性和实际完成功能的时间 (响应时间) ;
4) 测试为完成功能所处理的数据量;
5) 测试程序运行所占用的空间;
6) 测试负荷潜力;
7) 测试软件的性能和硬件性能的集成;
8) 测试系统对并发事物和并发用户访问的处理能力。
性能测试经常与余量测试、强度测试、容量测试一起进行, 基本的性能度量应当首先以没有争议的方式在主要的功能上被执行;其次在系统处于竞争模式下进行, 即在一种苛刻的环境中衡量资源的使用常常是必要的。
2.3 边界测试
边界测试是对软件处在边界或端点情况下运行状态的测试。边界测试测试点包括:
1) 软件的输入域或输出域的边界或端点的测试;
2) 状态转换的边界或端点的测试;
3) 功能界限的边界或端点的测试;
4) 性能界限的边界或端点的测试;
5) 容量界限的边界或端点的测试。
边界测试是最为普遍的测试类型之一, 几乎所有的软件都有边界测试。看到有范围和数值要求时, 应立刻联想到数值边界;同时注意不同分辨率 (数据精度) 的边界, 如整数和浮点数的范围、角度的范围、时间的范围等。
2.4 接口测试
接口测试是对软件需求规格中的接口需求逐项进行的测试。接口测试的测试点包括:
1) 测试所有外部接口, 检查接口信息的格式及内容;
2) 对每一个外部输入/输出接口必须做正常和异常情况的测试;
3) 测试硬件提供的接口是否便于使用;
4) 测试系统的特性 (如数据特性、错误特性、速度特性) 对软件功能、性能特性的影响;
5) 对所有的内部接口的功能、性能进行测试。
接口测试往往与软件的功能测试结合在一起, 但是接口测试的关注点是接口。接口测试同样需要考虑正常与异常数据的情况, 并且明确所测对象有哪些接口, 然后根据接口的格式特点设计用例。
2.5 余量测试
余量测试是对软件是否达到需求规格说明中要求的余量的测试。按照国军标要求, 一般至少留有20%的余量。余量测试的测试点为:
1) 全部存储量的余量;
2) 输入/输出及通道的吞吐能力余量;
3) 功能处理时间的余量。
余量测试需要分析能够进行余量测试的测试项。余量测试一般为隐含需求, 一般要求留有20%的余量;只要所测对象含有数据要求均可考察其余量, 目前比较重视主要是硬件配置方面的余量;余量测试需在任务较繁重的前提下进行, 并对余量提取是否合适进行确认。
2.6 安全性测试
安全性测试是检验软件中已存在的安全性、安全保密性措施是否有效的测试。其测试点包括:
1) 对安全性关键的软件部件, 必须单独测试安全性需求;
2) 在测试中全面检验防止危险状态措施的有效性和每个危险状态下的反应;
3) 对设计中用于提高安全性的结构、算法、容错、冗余及中断处理等方案, 必须进行针对性测试;
4) 对软件处于标准配置下其处理和保护能力的测试。
5) 应进行对异常条件下系统/软件的处理和保护能力的测试;
6) 对输入故障模式的测试;
7) 必须包含边界、界外及边界结合部的测试;
8) 对安全性关键的操作错误的测试;
9) 对具有防止非法进入软件并保护软件的数据完整性能力的测试;
10) 对重要数据的抗非法访问能力的测试。
2.7 强度测试
强度测试是强制软件运行在不正常到发生故障的情况下 (设计的极限状态到超出极限) , 检测软件可以运行到何种程度的测试。其测试点包括:
1) 最大处理的信息量;
2) 数据能力的饱和实验指标;
3) 最大存储范围 (如常驻内存、缓冲等) ;
4) 在人为错误 (如寄存器数据跳变、错误的接口) 状态下进行软件反应的测试;
5) 需进行持续一段规定的时间, 而且连续不能中断的测试。
3 软件系统测试设计
3.1 系统测试用例设计策略
具体的软件测试项目中, 设计测试用例有多种方法, 对于简单的功能, 选取一种适合的方法即可满足要求, 而对复杂的功能, 运用某一种方法设计出的用例显然不能全面的覆盖各个测试点, 应该联合使用各种的方法, 形成一种综合策略。具体地说, 可以归纳为下述策略:
1) 将测试需求分解为测试项, 选用的测试类型的集合要覆盖规定的测试类型, 对现有条件无法测试的测试项 (不可测项) 要给出不可测的原因, 并给出降低风险的方法;
2) 在编写某一测试类型测试用例时, 要尽可能多地覆盖相应的测试要求;
3) 对重要功能使用频度高的功能, 可适当增加测试用例数量 (包括对各种可能出现的异常情况的考虑) ;
4) 对静态分析中复杂度高的模块所对应的功能适当增加测试用例数量;
5) 在一个功能中发现缺陷后, 要生成用例测试其余功能是否存在同样缺陷;
6) 依靠专业积累, 彻底全面地思考测试场景, 发现并有效的找出隐错;
7) 测试类型并非正交的, 多个测试类型之间存在交叉, 设计测试用例时应把握二个原则:即不能重复、不能遗漏。
3.2 测试实践
在某软件系统测试过程中, 依据软件设计文档进行了测试需求分析和策划, 制定了测试计划, 明确了测试项, 并编制了测试说明, 对软件进行了全面的测试, 共设计了31个测试项目、648个测试用例, 覆盖了功能、性能、边界、接口、余量、强度和安全性所有的测试类型 (见表1) , 达到了国军标对软件测试类型的覆盖要求, 也对软件设计文档的各项设计要求及相关指标进行了测试验证。
表1测试项目及测试用例覆盖情况统计表
在设计测试用例过程中, 有些用例可以按照第2章节描述的方法进行独立设计, 但大部分测试用例的设计需要采用组合策略, 既满足覆盖性要求, 同时也提高测试的效率。表2列举了在测试过程中, 针对不同的测试类型分解的部分测试项的实例。从表2可以看出, 既有通过组合设计的测试项目, 也有进行独立设计的测试项目。
3.3 测试结果评价
在某软件的测试中, 根据以上测试类型综合设计测试项, 使设计出的测试用例更合理, 更全面。通过执行这些用例, 对软件功能进行了全面的测试, 发现了软件在设计方面存在的问题。软件测试工作通过了上级部门组织的评审, 对软件是否实现了预期的功能和是否可以进行系统联试起到了良好的评价作用。
4 结论
本文介绍了常见的系统测试类型及其用例设计方法, 这些方法都是在日常测试任务中实用的设计方法。在实际的测试过程中, 通过各种测试类型的交叉和组合应用来设计用例, 可以有效地对软件进行测试, 提高了测试效率, 降低了测试成本。该系统测试用例设计方法已用于多个型号软件的测试过程, 经证明是一个通用性强、切实有效的设计方法。
参考文献
[1]弹载软件系统测试方法研究.科学技术与工程[J].2008, 8 (13) :3559-3562.
[2]石柱.软件工程标准手册[M].北京:中国标准出版社, 2004.
3.回归测试中机器挑选用例方法研究 篇三
【关键词】机器学习;回归测试;测试用例
1.引言
机器学习(Machine Learning, ML)是一门交叉型学科,它涉及到了多个领域,包括:概率与统计学、高等数学、逼近和凸分析等。机器学习人类的学习过程和学习行为,并且加以计算机的模拟或实现。在机器学习过程中,机器本身了获取新的知识或技能。
在机器学习和人工智能的壮大发展的时代背景,对传统的测试工作提出了一些新的挑战。研究通过机器学习的方法,提升传统的测试工作的效率,进一步的提高整个软件开发活动的劳动生产率。
2.软件测试工程的研究综述
软件测试是用于分析是否程序出现错误的过程,测试使用人工操作或者软件自动运行的方式。每个不同的软件有对自身错误的定义方式:通常是软件需求规格中定义了预期结果。
软件测试分类
1、从是否要变异/执行被测试软件分类,分为静态测试和动态测试。如基于代码审查的单元测试,以及相关代码审查工具,都属于静态测试的范畴。
2、从是否要针对软件结构、算法进行覆盖分类,分为白盒测试和黑盒测试。
3、从测试活动在软件开发过程中所处的不同阶段分类,分为单元测试、集成测试、系统测试、验收测试。
我们这里讨论的“回归测试”是属于系统测试的最后一个阶段。
在修改了旧代码后,需要对这部分子都进行测试,以确保这个代码修订没产生新的错误。在大多数情况下,回归测试占测试周期和测试自由的50%。因此,如果能够制定更有效的回归测试用例,将极大的提升整个测试的效率。
回归测试的流程如下:
(1)找出程序中因为新增需求或者故障解决,而被修改的代码
(2)从总的用例库中,去除掉不再合适的测试用例:这部分用例可能是修改没涉及的功能,也可能是一些系统性稳定性的低优先级的测试用例
(3)针对修改的影响部分,增加一部分相关模块的测试用例
(4)搜索出最基本的测试用例,纳入到测试计划:这部分测试用例保证软件不出现意外的基本功能错误
(5)用上述2~4的测试用例集合,形成回归测试的测试范围
3.现有回归测试用例选择方法
对于一个软件开发项目来说,项目的测试组在实施测试的过程中会将所开发的测试用例保存到“测试用例库”中,并对其进行维护和管理。当得到一个软件的基线版本时,用于基线版本测试的所有测试用例就形成了基线测试用例库。在需要进行回归测试的时候,就可以根据所选择的回归测试策略,从基线测试用例库中提取合适的测试用例组成回归测试包,通过运行回归测试包来实现回归测试。保存在基线测试用例库中的测试用例可能是自动测试脚本,也有可能是测试用例的手工实现过程。
针对修改部分的测试是我们希望改进的内容
当前是优秀的高级工程师逐一的查看开发提交的各个修改点,根据自己对相关部分的理解,以及对开发修改点的学习。整理出需要回归的测试点:这种方法的主要问题是:
需要优秀的工程师参与,这位工程师必须同时具备:既了解测试组的全部测试用例库,也需要能够理解开发提供的修订说明。
每一轮测试完成后,就需要人工干预,从而产生下一轮的测试用例
替代人工的方法是,为每一轮测试,执行类型level 0/1/2这样的测试用例等级。这样同样会带来冗余的测试用例执行,拉长了测试进度。
4.机器选择测试用例的方法
用机器来模拟和替代人工的挑选测试用例:是在回归测试中引入智能化方法的先决条件。整体按照如下的流程:
首先进行的是为每一条测试用例,生成不同的特征向量。在这个步骤中,将原始的测试用例转变成为“记录每个词出现的频率”的数学符号。最后生成如下表格:
其中行代表不同的测试用例,列代表不同的词语描述,数字代表不同的词语在不同测试用例中出现的词频。
然后,根据TFIDF算法将测试用例生成的文本特征向量,转换成为最终的文本特征向量。
这样,表一通过TFIDF算法最终转化的向量表示如下:
完成了特征词语的选择后,就要给选出的特征词语赋以权重。比如“测试”一词,在每个测试用例中都有出现,那么这个词虽然词频很高:但是“权重为零”——也就是说这个词对于描述不同测试用例的不同特征,无任何帮助。对于本研究方案而言,我们使用TF*IDF算法,计算出精确的统计量,以描述特征词语对于中文内容的重要性。
最后,将代码变更说明收集起来,计算特征向量。同时将测试用例库中的内容也做成特征向量。逐个的拿代码变更的特征向量,与用例库中的特征向量进行对比:选出与代码变更特征向量相识程度最高的。这个特征向量所代表的测试用例,既为下一轮回归测试的输入。在这个模块中,我们选择KNN算法,KNN算法也叫K最近邻算法。抽取测试用例库中的每个文本,逐一的与被测试的向量进行比较,每个比较完成后相似度被计算出来。下一步:找出K个最相似的测试用例。并在此基础上给每个被选出的测试用例打分,取分值大者作为比较结果。具体计算公式为:
其中:d为待测文本(开发提交的代码变更说明)向量,q为训练集中文本(原始的测试用例描述)向量。
这里给出一个具体实践:
开发提交了一个代码变更说明如下
最后机器推荐的相关性最紧密的四个用例,如下表:
可以看出,这四个被挑出来的点,都是对ACL重定向的测试:并且测试覆盖了物理端口、AP端口、SVI端口三种不同的端口类型。
进一步的,对这部分的测试进行基于代码覆盖率的验证,可以证明机器挑选出的四个测试用例,确实的有测试覆盖到开发修订的代码。
5.结束语
让机器来自主选择回归测试用例,然后将这个方法融入到自动化测试框架中。让自动化测试框架具有一定智能,能够“自主的产生回归测试用例的变化集合”。譬如整个ACL模块测试用例个数达到300,如果全部回归费时费力,而人工参与分析则会打断持续的自动化测试过程。新方法使用四个测试用例,就可以对开发修订提交的代码进行覆盖;这样一方面我们减少了回归测试的测试用例个数,另外一方面开发修订的代码,也被完整的测试了。
参考文献
[1]米歇尔(Mitchell,T.M.).机器学习.机械工业出版社,2008-03-01
[2]盧苇,彭雅.几种常用文本分类算法性能比较与分析.湖南大学学报(自然科学版), 2007.
[3]JOACHIMST.A probabilistic analysis of the rocchio algorithm with TFIDF for text categorization Nashville:1997:143-151.
4.测试用例编写规范 篇四
统一测试用例编写的规范,以保证使用最有效的测试用例,保证测试质量。
2. 范围
适用于公司对产品的业务流程、功能测试测试用例的编写。
3. 术语解释
3.1 测试分析:对重要业务、重要流程进行测试前的分析。
3.2 业务流程测试用例:关于产品业务、重要流程的测试用例。
4. 业务流程测试用例编写原则
4.1 系统性
4.1.1 对于系统业务流程要能够完整说明整个系统的业务需求、系统由几个子系统组成以及它们之间的关系;
4.1.2 对于模块业务流程要能够说明清楚子系统内部功能、重要功能点以及它们之间的关系;
4.2 连贯性
4.2.1 对于系统业务流程来说,各个子系统之间是如何连接在一起,如果需要接口,各个子系统之间是否有正确的接口;如果是依靠页面链接,页面链接是否正确;
4.2.2 对于模块业务流程来说,同级模块以及上下级模块是如何构成一个子系统,其内部功能接口是否连贯;
5. 测试用例设计的方法
5.1 等价类划分法
5.1.1 确定等价类的原则
5.1.1.1 如果输入条件决定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。
5.1.1.2 如果输入条件规定了输入值的集合,或者规定了“必须如何”的条件,此时可确立一个有效等价类和一个无效等价类;
5.1.1.3 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类;
5.1.1.4 如果规定了输入数据的一组值,而且程序对每个输入值分别进行处理,此时可为每一个输入值确立一个有效等价类,此外,针对这组值确立一个无效等价类,它是所有不允许输入值的集合;
5.1.1.5 如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)。
5.1.1.6 如果确知,已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
5.1.2 测试用例的选择原则
5.1.2.1 为每一个等价类规定一个唯一的编号;
5.1.2.2 设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直至所有的有效等价类都被覆盖过;
5.1.2.3 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直至所有的无效等价类都被覆盖为止。
5.2 边界值分析法
5.2.1 测试用例的选择原则
5.2.1.1 如果输入了条件规定了值的范围,则应取刚达到这个范围的边界值,以及刚刚超越这个边界范围的值作为测试输入数据;
5.2.1.2 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大多1、比最小小1的数作为测试输入数据;
5.2.1.3 根据规格说明的每个输出条件,使用前面的原则;
5.2.1.4 如果程序的规格说明给出的输入输出域是有序集合,则应选取集合的每一个元素和最后一个元素作为测试用列;
5.2.1.5 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;
5.2.1.6 分析规格说明,找出其他可能的边界条件。
6. 测试用例设计的原则
6.1 全面性
6.1.1 应尽可能覆盖程序的各种路径
6.1.2 应考虑存在跨年、跨月的数据
6.1.3 大量数据并发测试的准备
6.2 正确性
6.2.1 输入界面后的数据应与测试文档所记录的数据一致
6.2.2 预期结果应与测试数据发生的业务吻合
6.3 符合正常业务惯例
6.3.1 测试数据应符合用户实际工作业务流程
6.3.2 兼顾各种业务变化的可能
6.4 仿真性
人名、地名、电话号码等应具有模拟功能,符合一般的命名惯例;不允许出现与知名人士、小说中人物名等雷同情况。
6.5 可操作性
测试用例中应写清测试的操作步骤,不同的操作步骤相对应的操作结果。
7. 测试用例编写格式细则
7.1 测试用例内容
7.1.1 具体实施可以采用EXCEL和图形相结合,可用EXCEL编写测试用例的同时插入图形来加以说明。测试用例设计的内容可由:模块名、功能说明或图形说明、测试用例输入、应输出结果、实际输出结果、结论、BUG编号、BUG级别8部分组成。
7.1.2 在测试用例设计模版中有“业务流程测试用例设计模版”(包含整体业务流程)和“功能测试用例设计模版”两个模板可按需要选择。
7.2 测试用例表格格式
7.2.1 表格内容的字体为宋体;
7.2.2 表格内容的字型为12号;
8. 测试用例优先级
测试用例优先级
描 述
A
测试计划中重要的模块功能和业务流程
B
测试计划中比较重要的模块功能和业务流程
C
测试计划中次重要的模块功能和业务流程
D
测试计划中不重要的模块功能和业务流程
E
系统小单元、系统容错功能
对于A、B 级应重点考虑
9. BUG级别
参考软件测试停止标准中的错误级别.
5.常见的软件测试用例设计方法 篇五
一、等价类划分
1)确定等价类
有效等价类代表对程序的有效输入;无效等价类代表的是其他不正确的任何输入。如果需要,我们还可以将一个等价类划分为更小的一些等价类。
比如,规格说明规定了“请输入书籍的数量(1~99)以及书籍的类型(硬皮、软皮或活页)”。它们对应的等价类分别如下:
书籍数量
书籍类型
2)生成测试用例
1.为每个等价类设置编号。
2.编写测试用例,尽可能多的覆盖尚未被覆盖的有效等价类。直到所有的有效等价类都被测试用例覆盖。测试用例及其覆盖的有效等价类如下:
3.编写测试用例,覆盖一个且仅一个尚未被覆盖的无效等价类。直到所有的无效等价类都被测试用例所覆盖。测试用例及其覆盖的无效等价类如下:
用单个的测试用例覆盖无效等价类,是因为有些输入的错误检查可能会屏蔽或取代其他输入的错误检查。比如②⑦,也许程序提示“非法的书籍数量”后,就不会执行对书籍类型的检查了。
二、边界值分析
经验证明,考虑了边界条件的测试用例比其他没有考虑边界条件的测试用例,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中恰好处在边界、或超过边界、或在边界以下的状态。
上例中的书籍数量范围是1~99,那么应该针对0,1和99,100的情况分别设计测试用例。
从定义可以看出,等价划分只关注输入空间(输入等价类)的不同,边界值分析还需要从输出空间(输出等价类)设计测试用例。
举例来说:
某个程序按月计算个人所得税的速算扣除数,且最小金额是0,最大金额是13,505。使用边界值分析法,应该设计测试用例测试速算扣除数结果为0和13505的情况。此外,还应观察是否可能设计出导致速算扣除数为负数,或者超过13505的测试用例。
边界值分析法和等价划分重要的区别是,等价划分是从等价类中挑选任意一个元素作为测试数据;边界值分析法考察正处于等价划分边界或在边界附近的状态。
三、因果图
边界值分析和等价划分的缺点是,未对输入条件的组合情况、输入条件之间的相互制约关系进行分析。
1)因果图的基本关系
恒等(Identify):若a为1,则b为1;否则b为0。
非(NOT):若a为1,则b为0;否则b为1。
或(OR):若a或b或c为1,则d为1;否则d为0。
与(AND):若a和b和c都为1,则d为1;否则d为0。
2)因果图的约束条件
1、对于输入条件的约束有E、I、O、R四种:
异(E):E必须总为真,而a、b最多只有一个为1。
或(I):I为真时,a、b和c中至少有一个必须为1。
唯一(O):a、b中,有且仅有一个必须为1。
要求(R):如果a为1,b也必须为1。
2、对于输出结果的约束只有M一种:
屏蔽(M):如果结果a为0,则b强制为0。
一、假设有一规格说明:
“第一列中的字符必须是‘A’或‘B’,第二列中的字符必须是一个数字。在这种情况下,对文件进行更新。如果第一个字符不正确,产生提示信息X12。如果第二个字符不是数字,产生提示信息X13。”
(1)将规格说明分解为可执行的片段,确定“因”和“果”,为每个“因”和“果”都赋予唯一的编号。“因”是条件,是指一个明确的输入条件等价类。“果”是动作,是指一个输出或系统转换(输入对程序或系统状态的延续影响)。
(2)分析规格说明的语义,转换为因果图。原因①和原因②不可能同时成立,为因果图添加对应的约束条件,得到右图。
因果图和添加了约束条件后的因果图
(3)将因果图转换为判定表,每一列代表一个测试用例。
判定表
(4)将判定表中的列转换为测试用例。
二、将因果图转换为判定表的思路(以上述的例子来说明)
1.选择一个“果”作为当前状态。例:71。
2.对因果图回溯,找出导致该“果”为1的所有因的组合(需要考虑到约束条件)。例:001,000。
3.在判定表中为每个“因”的组合生成一列。例:(列3)和(列4)。
4.对于每种“因”的组合,判断所有其他“果”的状态,并放置在对应的每一列中。例:已得在001,000两种组合下结点71的结果为1。判断在“因”为001的组合下,得到70和72的结果为0。判断在“因”为000的组合下,得到70的结果为0,72的结果为1。将“果”的状态填入其对应的列。
对因果图进行回溯时,需要做到以下考虑:
1.当回溯经过一个结果为1的OR结点时,不要将OR结点的1个以上的输入同时设为1。
2.当回溯经过一个结果为0的AND结点时,应列举出导致该结果为0的所有输入情况的组合。然而,当该AND结点的一个输入条件为0时,其他输入有一个或更多的1,则不必考虑其他输入为1的所有情况。
3.当回溯经过一个结果为0的AND结点时,所有输入皆为0的这一种情况应当列举出来。
找出因果图中,所有导致输出状态为0的输入条件
(1)根据上述第c)条思路,我们只需列出使得结点⑤和结点⑥皆为0的情况。结点①②③④的取值状态为:
0,0,0,0(5=0,6=0)
(2)根据第b)条思路,对于结点⑤为1而结点⑥为0的情况,应该列出导致⑥为0的所有输入情况组合。同时,只需列出一种使得⑤为1的情况即可,不需要列出⑤为1时的所有输入情况组合。又根据第a)条思路,当结点⑤为1时,我们不应将结点①和②同时设为1。于是,得到结点①②③④的取值状态:
1,0,0,0(5=1,6=0)
1,0,0,1(5=1,6=0)
1,0,1,0(5=1,6=0)
同样的,对于⑤为0而⑥为1的情况,也只需要列出⑥为1的一种情况即可(尽管在本例中也只有这一种)。
0,0,1,1(5=0,6=1)
因果图有助于用一个系统的方法选择出高效的测试用例集。它还有一个额外的好处,就是可以指出规格说明的不完整性和二义性。但通常它不能生成全部应该被确定的有效测试用例。
注意:因果图方法没有充分考虑边界条件。建议,最好是单独考虑边界值分析。这不意味着我们要为此增加相应多的测试用例,而是在由因果图生成测试用例时,可以将边界条件分析一并考虑进去。最好的结果是既满足了两方面的目标,又不需要增加新的测试用例。
四、错误推测
错误猜测是一项依赖于直觉的非正规的过程,其基本思想是人们利用直觉和经验猜测可能犯得错误或错误易发情况的清单,然后编写测试用例来暴露这些错误。
6.工作流测试用例 篇六
互联网Web测试用例设计思路
1、Web测试用例设计思路:主要是Web测试用例操作与界面流程,我们为什么在心中有思路,但是写测试用例就无从下手,那就是一个人在做了ERP内部系统测试后,再从事Web测试工作,写测试用例的时候就会模仿以前的工作经验去编写测试用例,所以编写出的测试用例重复性的用例比较多,执行力也比较少。
2、Web测试用例设计思路:看到上面第一点的朋友,如果你是这样的话,这条就是教你如果去放开思路编写用例,我们每个公司的企业文化里面都会含有一个字的文化,那就是“创新”,为什么要选择创新没,大家都知道没有创新的公司,就会必死,就像诺基亚的塞班系统一样,塞班系统以前10年多辉煌的历史,转眼就被安卓取代,为什么就是塞班系统升级时,会重构与重写很多代码,代码只会增加没有大多减少,使系统运行起来慢。我们编写测试用例一样要学会创新,不能用以前行业的思路对现在的行业来进行工作。我们要放开思路大胆的去设想一些可能发生的事情。
上面2点主要是教大家,如何去理解项目,如何去放开思路,创新用例。(可能大家没看出什么含义,大家不要担心,请开下面的设计用例的方法吧!)
互联网Web测试用例设计方法
1、按照模块设计用例
为什么要按照模块设计用例呢?因为互联网Web有成千上万的连接,里面也含有相同的跳转页面地址,也有模块单独分立,如:搜索、导航、友情连接、留言等都是独立的页面,也是属于Web页面中的模块。
2、按照主要功能设计用例
为什么要按照主要功能设计用例呢?因为我刚刚说了Web页面中有成千上万的连接,很多连接其实都是只想一个页面,如:首页里面包含、新闻、资料、文章,我们点击不同的页面就好进入不同的详细页。这时我们只有按照功能进行用例的设计,这样可以减少用例的重复性。
3、按照需求与项目流程设计用例
7.软件测试中可复用测试用例研究 篇七
随着软件产业的快速发展, 软件作为一种产品被广泛应用于各个领域, 其功能越来越强大, 复杂度越来越高, 人们对软件质量的要求也越来越高。为满足不同领域、不同行业复杂多变的软件需求, 进一步提高软件开发的质量和效率, 软件开发者开始更多的关注和研究软件复用技术。软件复用技术的研究、应用给软件开发带来了效率、经济的双重好处。
在软件开发复用技术发展的影响下, 测试人员开始将复用的思想应用到软件测试领域, 特别是对测试用例复用的研究。测试用例复用就是将一个软件已经执行过的测试用例, 在不同时间、不同程度的应用到同一软件新的测试或是同类软件的测试中。有效的复用测试用例不仅能提高测试效率, 还能借鉴前人经验、解决经验不足的问题。测试用例是测试工作的指导, 是软件测试必须遵守的准则, 是编写测试脚本的“设计规格说明书”。目前对于测试用例复用的规范化、系统化方面仍有许多待解决的问题。
1 测试用例在软件测试中的作用
测试用例是软件测试过程的核心, 是测试执行的最根本依据。每个测试人员 (包括分析、设计、编程和测试人员) 的工作环境、技术背景、设计思路各不相同, 测试用例可以指导测试的实施, 控制测试的实施过程;规范测试数据的准备以及测试脚本的编写, 保证测试的规范性;测试工作组要有相应的测试审核部门, 通过一些量化的数据如测试覆盖率、测试合格率等衡量测试用例的优劣, 分析测试缺陷, 评估测试结果。
1.1 可复用测试用例的质量特性
文献[2]给出了可复用测试用例的特性, 以此来判定一个测试用例是否具有可复用性。本文在对大量测试用例及其复用情况进行了学习研究后, 认为可复用测试用例应具有以下四个必要质量特性:通用性、独立性、规范化和可维护性。
(1) 通用性
复用的测试用例要不局限于具体应用, 不过分依赖于开发的环境。一般来说, 在面向对象开发这样的主流模式中, 复用的组件或构件在功能上变化不大, 因此基于该模式开发的软件在测试过程中生成的测试用例可复用性很大。比如低层被测对象的测试用例或其部分内容常常被复用到对高层对象的测试中。
(2) 独立性
通常测试用例能否成功被复用, 很大程度上依赖于测试用例的独立性。测试用例之间往往存在着相互的联系, 一些测试用例的成功执行要取决于其他测试用例的执行状态。这就要求每个测试用例要完成的目标必须单一, 不能包含过多的实现细节。一个系统功能点集合F (F1, F2, ……, Fn) 对于任意两个功能点Fi、Fj (i≠j) , 则分别存在Fi、Fj对应的测试用例集Ti、Tj, 满足Ti∩Tj=φ。对一个项目测试产生的测试用例资源, 对其进行抽象化、规范化处理, 使其与被测项目的关联度降至最低, 此时生成的测试用例则可作为复用资源放入测试构件库中。
(3) 规范化
测试用例大都是测试人员根据个人经验和对被测软件的理解而设计的, 通常也都是用自然语言来描述, 没有统一的标准。一个好的测试用例不仅要体现软件的测试思想、技巧, 同时还要包含大量的测试数据、结果以及测试过程。用一定的规范将测试用例组织成一个统一的标准形式, 这样的测试用例才是可以被理解的、可复用的。此外对测试用例库的管理也要有一套规范的流程。
(4) 可维护性
对测试用例的复用研究其根本目的就是要形成一个成熟的、可靠的可复用测试用例库。通用性是可复用测试用例的基本特性, 那么对具体的测试而言就少了实现细节。因此为了应对不同被测软件的需求、设计和环境, 库中的测试用例应该能够稍加修改就可以在同一领域或相似领域进行广泛应用。
1.2 测试用例复用的优点和困难
通过大量研究实践得到如下测试用例复用的优点和困难。其优点如下: (1) 通过复用测试用例, 可以缩短软件的测试周期, 大大提高测试效率; (2) 在前人经验和测试用例库的基础上, 提高了测试的可靠性; (3) 降低了测试的费用, 节省了软件成本; (4) 在一定程度上解决了测试人员经验不足的问题。但是测试用例复用的困难也是不容忽视的, 其难点如下: (1) 测试用例的分类标准难以确定。测试用例库的组织方式有很多, 要让测试人员在最短的时间内检索到想要的可复用的测试用例, 需要对测试用例库的组织、存储进行科学有效的管理; (2) 最根本最关键的测试用例数据库的维护挑战, 相关人员 (如质量管理员、评审管理员、配置管理员等) 要对测试用例库进行有效、持续的科学管理; (3) 测试用例可复用度量标准的确定, 要有合理、准确的度量标准; (4) 被测软件之间的差异, 这就对可复用测试用例库的灵活性和可靠性提出了更高的要求。
2 软件测试中测试用例的复用
根据对软件测试复用经验和方法的研究得到了软件测试用例复用的组成:复用成分的获取、复用成分的管理和复用成分的利用。
(1) 复用成分的获取:通过分析确认有复用价值的测试用例, 对其进行标准化处理后, 按照领域、行业、项目等进行多级合理的分类, 并按一定的组织、存储方式, 将它们放入测试用例库中。同时提供检索机制, 以便于以后在库中能够迅速查找到最合适的用例。
(2) 复用成分的管理:对数据库中的测试用例实行有效维护。在维护中不断添加新的测试用例, 完善旧的测试用例, 删除有问题的测试用例。在软件的迭代开发中, 需求或功能不断变化, 所需的测试用例也要随着做相应的修改。对于软件需求没有变化, 只是入库的测试用例不是那么完善的, 在测试过程中要不断完善, 使测试效果更贴近用户需求;对于需求变化了, 功能增加了的, 需要设计新的测试用例, 新设计的测试用例经测试、评审、规范化后才可以放入到数据库中;对于需求变更, 有的功能模块被取消了的, 保留之前的测试用例, 有可能在同领域或功能相似的软件测试中会被用到。测试用例的维护模式如图1所示:
(3) 复用成分的利用:基于组件的软件工程, 在组件的开发过程中, 低层被测对象的测试用例或其部分内容常常被复用在高层被测对象的测试中[1].例如单元测试中产生的功能类测试用例资源在以后的集成测试或回归测试中就可以被拿来利用;软件的迭代开发过程中, 先前版本的测试用例可以复用到新版本的测试中去;同一行业不同项目之间的测试用例资源也可以相互借鉴利用。
3 测试用例复用的应用研究及实现过程
在同一领域的不同项目中, 或是基于组件开发的系统中, 都存在着测试用例复用的应用。测试用例是动态的, 要随测试环境、需求、设计、实现做相应的变化。本文主要对某大型物流系统仿真实际运行环境中满足需求的系统验收测试阶段产生的测试用例进行了分析研究。
用形式化的语言——六元组S={id, name, pre, in, ope, exp}来定义一个测试用例, 其中id为测试用例编号, name为测试用例名称, pre (取precondition前三个字母) 为测试的前置条件, in为测试输入, oper (取operation前四个字母) 为测试操作, exp (取expectation前三个字母) 为预期结果。
针对物流园车辆租赁的业务流程抽象出的场景测试流如图2所示:
需要进行测试的功能点集合F{F1, F2, ……, Fn}, 测试用例库为T{T1, T2, ……, Tn}, 输出满足条件的可复用测试用例的集合为S, 算法思想如下:
4 总结
测试用例的设计是软件测试中重要的一个环节, 其作为一种无形的有价值资产, 有效复用的研究意义重大。本文在学习研究大量可复用测试用例具体应用后, 提出了可复用测试用例的提取及数据库的维护过程。给某大型物流系统仿真实际运行环境的系统验收测试工作带来了便利。
摘要:软件测试是保证软件质量的重要手段, 测试用例是软件测试的关键环节, 测试用例的选择对测试质量有着至关重要的影响。为了提高测试效率、积累测试经验、节省测试成本, 测试用例复用的研究意义重大。本文在大量测试用例复用研究的基础上总结了可复用测试用例的质量特性、复用的优点以及存在的困难, 提出了可复用测试用例的提取及可复用测试用例数据库的维护过程。最后研究内容在某大型物流系统中进行了测试验证, 证明研究是有效的。
关键词:可复用性,质量特性,测试用例,提取,可复用测试用例库
参考文献
[1]徐仁佐, 陈斌, 陈波, 等.构造面向对象软件可复用测试用例的模式研究[J].武汉大学理工学报, 2003, 49 (5) :592-593.
[2]肖良, 杨根兴, 蔡立志.软件测试用例可复用性度量[J].计算机应用与软件, 2010, 27 (6) :46-49.
8.图书管理系统用例图 篇八
实验报告
计算机与信息工程学院
一、实验目的
在熟悉用例概念与应用的基础上,掌握用例模型的建立,包括: 1.掌握用例图的建立。
2.掌握用例描述文档的编写。3.掌握建模工具的使用。
二、实验内容
根据以下需求设计一个图书馆管理系统的用例图模型,包括:用例图和主要用例的描述文档。
基本功能要求:
图书管理:新书登记,图书查询,图书注销; 借阅管理:借书,还书,查询今日到期读者;
读者管理:增加读者、删除读者、查询读者、读者类别管理(可以设置不同类的读者,并使不同类读者对应不同类的图书流通参数,如可借册数,可借天数,可续借次数,可续借天数等);
报表管理:包括图书借阅统计报表,被注销图书统计报表等;报表可以有多种格式可供选择;可以把报表输出到文件中,可以预览报表、打印报表等。
系统管理:系统管理员使用,包括用户权限管理(增加用户,删除用户,密码修改等),数据管理(提供数据修改、备份、恢复等多种数据维护工具),系统运行日志,系统设置等功能。
三、实验思想
(1)分析系统需求;
(2)确定系统参与者:读者、图书管理员、图书管理系统;(3)确定系统用例;
四、实验结果 借阅人用例图:
图书系统管理员用例图: 图书管理员用例图:
1.用例名称: 登录
用例描述:根据用户输入的用户名和密码判断用户的身份,赋予相应的权限。前置条件:无
后置条件:根据用户所有的权限进入相应的操作界面。基本操作流程: 输入用户名 2 输入密码 校验密码是否正确。根据用户身份进入相应的操作界面。
可选流程:如果密码不正确,提示重新输入密码;
如果用户名不正确,提示没有此用户。2.用例名称:查询图书
用例描述:由读者进行操作,查询图书馆中有没有需要图书,如果有,显示该图书编号、书名、作者、出版日期、当前借阅状态等信息。前置条件:以顾客身份登录 后置条件:无 基本流程: 以读者身份登录。输入图书的名称或作者名称。显示相关图书的信息。
可选流程:如果没有该图书,返回提示信息:“没有找到图书”。3.用例名称:借书
用例描述: 由图书管理员把读者的借书卡的条码读入计算机,再将读者所选图书的条码读入计算机,在不超过读者允许借书的情况下,累计该读者所借的书;否则提示超过借书数量。
前置条件:以图书管理员的身份登录系统。后置条件:图书信息中相应记录的还书日期值做改变;将借书明细加入借书记录中。
基本操作流程: 以图书管理员身份登录系统。2 进入借书功能。录入读者的借书卡条码。4 识别读者类别,提示读者可以借阅图书的数量及借阅时间
等。如果允许借阅,继续4,否则提示已达到借书数量。5 录入图书的条码,显示该图书的信息。6 还有其他图书,重复步骤3。7 保存操作。
可选流程 在保存之前,可以取消操作。4.用例名称:续借
用例描述: 由图书管理员把读者的借书卡的条码读入计算机,计算机显示读者所借图书及状态,选定需要续借的图书,系统提示还书时间,保存操作。前置条件:以图书管理员的身份登录系统。后置条件:图书信息中相应记录的还书日期值做改变;将续借明细加入借书记录中。
基本操作流程: 以图书管理员身份登录系统。2 进入续借功能。录入读者的借书卡条码。计算机显示读者所借图书及状态。如可以续借则选定需要续借的图书;否则提示无法续借。6 系统提示还书时间。7 保存操作。
可选流程:在保存之前,可以取消操作。
5.用例名称:还书
用例描述: 由图书管理员把图书的条码读入计算机,系统显示该书的读者资料,提示是否超出借阅期限。如未超出则显示还书成功;如超出则计算罚金。前置条件:以图书管理员的身份登录系统。
后置条件:图书信息中相应记录的状态值做改变;将还书明细加入还书记录中。基本操作流程: 以图书管理员身份登录系统。2 进入还书功能。3 录入读者的借书卡条码。系统显示该书的读者资料,提示是否超出借阅期限。5 如未超出则显示还书成功;如超出则计算罚金。
可选流程: 在保存之前,可以取消操作。
6.用例名称:新书登记
用例描述:由图书管理员将新书的信息录入计算机中,进行保存。前置条件:以图书管理员的身份登录系统。后置条件:图书信息中增加一条记录。基本操作流程: 以图书管理员的身份登录系统。2 进入新书登记功能。3 输入新书的相应信息。4 保存操作。
可选流程:在保存之前,可以取消操作。
7.用例名称:修改或注销图书
用例描述:由图书管理员修改图书的信息或注销图书,进行保存。前置条件:以图书管理员的身份登录系统。后置条件:图书信息中相应记录更新或删除。基本操作流程: 以图书管理员的身份登录系统。2 进入图书管理功能。选定需要修改或删除的图书。4 修改图书的相应信息或删除图书。5 保存操作。
可选流程:在保存之前,可以取消操作。
8.用例名称:增加读者
用例描述:由图书管理员将新读者的信息录入计算机中,进行保存。前置条件:以图书管理员的身份登录系统。后置条件:读者信息中增加一条记录。基本操作流程: 以图书管理员的身份登录系统。2 进入读者管理功能。输入新读者的相应信息,设置读者类别。4 保存操作。
可选流程:在保存之前,可以取消操作。
9.用例名称:修改或删除读者 用例描述:由图书管理员修改读者的信息或删除读者,进行保存。前置条件:以图书管理员的身份登录系统。后置条件:读者信息中相应记录更新或删除。基本操作流程: 以图书管理员的身份登录系统。2 进入读者管理功能。3 录入读者的借书卡条码,查询读者,确定需要修改或删
除的读者。修改读者的相应信息或删除读者。5 保存操作。
可选流程:在保存之前,可以取消操作。
五、实验心得
9.医院病房监护系统用例图实验报告 篇九
该系统中,每个病房的病症监视器要按时将病人的病症信号传送到监视系统去并且对信号进行分析,当病症信号异常的时候,系统会自动报警,并且打印病情报告和更新病例,而医生则要求随时打印病情报告,按时更新病例; 行为者:值班护士,医生,病人
a)值班护士负责监控中央监视系统,并根据医生的要求随时打印病症报告,并且定期更新病例;
b)病症监视器是负责采集病人的病症信号,每个病房都有监视器; c)中央监视系统是负责分析监视器采集的病症信号,但信号有异常的时候,中央监视系统会自动报警,并且实时打印病人的病情报告,而且立即更新病例;
三 用例图:
定期更新病例查看病例随时打印病情报告上下级关系医生值班护士监控采集病症信号打印 病情报告报警<
四 实验小结;
1)此用例图中的行为者和用例均比自动售货机中的行为者和用例多,要理清楚各个用例与行为者以及行为者与行为者之间的关系,2)在此用例图中个人觉得不要把中央监视系统作为一个行为者,它主要的执行功能就是信号处理,当系统发现信号有异常时就自动报警;
10.工作流测试用例 篇十
关键词:软件测试,测试用例,粒子群
随着计算机科学技术的飞速发展,计算机及软件已广泛应用于许多领域。为了适应在广泛应用情况下出现的各种各样的问题,需要严格保证软件系统的质量。软件测试是保证软件质量、提高软件可靠性的关键。但软件测试需要耗费巨大的人力、物力和时间,故提高软件测试的自动化程度对于确保软件开发质量、降低软件开发成本都是非常重要的。其中,提高生成测试用例的自动化程度又是提高软件测试自动化程度的关键。
本文在分析了软件测试中测试用例自动生成技术的发展现状和粒子群优化算法的基本原理的基础上,结合软件测试中测试用例自动生成的需求,改进了基本粒子群优化算法,提出了基于改进算法的测试用例自动生成算法,一定程度地提高了软件测试自动化程度。
1 国内外研究现状
测试用例对测试过程的重要性不言而喻,一个优秀的测试人员编写的测试用例可以很大程度上提高测试的合理性和工作效率。因此,让计算机自动生成完备的、合理的测试用例也就成了整个测试系统的关键。
从上个世纪60年代以来,许多国内外的学者对于测试用例的自动生成进行了多方面的研究,提出了很多方法。
D.Bird[1]等采用随机法自动生成测试用例,其基本思想是对输入空间进行随机选取,将选出来的样本作为测试数据。这种随机法可以不受限制的随机生成大量的测试数据,但是生成的测试数据是一个庞大的集合,需要大量的时间来执行这些数据。
C.Ramanmoorthy[2]等人提出的是符合执行法。该方法的主要思想是把符号值做为程序输入,静态“执行”指定路径的语句,从而得到变量的值。这里的执行只是按照程序执行的顺序将相应的变量用符合表达式代换,并没有动态运行被测程序。因此,随着程序规模的增大,该方法的可用性也就随之变差。
以上两种方法都是静态法,与之对应的是动态法。Korel[3]所提的方法就是动态法的一种,该方法采用的是步进的方式执行程序,一次只前进一个分支谓词,并且提出了谓词函数的概念,用来度量分支谓词的接近满足程度。此外,M.Gallagher[4]和Neelam Gupta[5]还分别对动态法中的程序插桩方法和迭代松弛法两者进行了系统的阐述。国防科技大学的单锦辉[6]博士则将迭代松弛法改进之后再用于测试用例自动生成,并开发了完整的系统原型。
上个世纪90年代以来,人们开始尝试将遗传算法等人工智能技术运用于软件测试技术中,并取得了初步的成果。其基本思想是首先选择输入数据并运行程序,然后根据运行结果“进化”出新的输入数据继续试探,直至找到正确的解。Jones B F和Sthamer H[7]将遗传算法应用于路径测试。荚伟[8]等将遗传算法应用在软件测试数据自动生成中。马臻[9]将遗传算法与免疫算法相结合,提出了一种改进的免疫遗传算法,并应用于构件化软件测试用例生成。人工智能技术运用于软件测试中的优点是不受搜索空间限制性条件的约束,并且不需要其它辅助性信息,所以对于一些传统方法难于处理的大空间、全局优化等复杂度较高的问题,该方法具有独特的优势和高效性。但是,这些基于遗传算法的测试用例测试方法存在算法复杂、参数不易设置、过早收敛和优化效率低等问题。
近年来出现了很多新的更为高级的群体智能算法,其基本思想是模拟自然界生物群体行为来构造随机优化算法。典型方法有M.Dorigo提出的蚁群算法,J.Kennedy与R.Eberhart提出的粒子群优化算法(Particle Swarm Optimization),以及Sibyue D Miillert提出的细菌群体趋药性算法(Bacterial chemotaxis:BC)。这些群体智能算法适合于大规模约束问题的处理,对函数性态要求较弱、寻优结果和初值无关,并具有一定的并行性,该算法已经在非线性规划、分式规划等问题中表现出了良好的效果。软件测试的特点决定了群体智能技术在这一领域上将大有可为。
2 基本粒子群优化算法原理
粒子群优化算法是智能优化算法的一种,它的基本思想是通过群体中个体之间的协作和信息共享来寻找最优解。粒子群优化算法首先生成初始种群,即在可行解空间中随机初始化一群粒子,每个粒子都为优化问题的一个可行解,并由目标函数为之确定一个适应值。每个粒子将在解空间中运动,并由一个速度决定其方向和距离。通常粒子将追随当前的最优粒子,并经逐代搜索最后得到最优解。在每一代中,粒子将跟踪两个极值,一个是粒子本身迄今找到的最优解pbest,另一个是整个种群迄今找到的最优解gbest。
通常数学表示为:设在一个n维的空间中,由m个粒子组成的种群,X={X1,…Xi,…Xm},其中第i个粒子位置为Xi={Xi1,Xi2,…Xin}T,其速度是Vi={Vi1,Vi2,…,Vin}T。它的个体极值为Pi={Pi1,Pi2,…,Pin}T,种群全局极值为Pg={Pg1,Pg2,…,Pgn}T,按照追随当前最优粒子的原理,粒子Xi将按照公式(1)、(2)改变速度和位置[10]:
式中的d=1,2,…,n;i=1,2,…,m,m为种群规模;t为当前进化代数,即粒子的飞行步数;r1和r2为分布于[0,1]之间的随机数;c1、c2为学习因子或加速常数。
3 基于粒子群算法的测试用例自动生成方法
3.1 粒子群算法的改进
本文针对基本粒子群算法在处理高维复杂问题时容易陷入局部最优这一问题,对其进行了改进,即在局部最优位置、全局最优位置对粒子当前位置影响的基础上,增加了“邻居”最优位置对粒子当前位置的影响。将种群中除此粒子外的其它所有粒子都看作此粒子的邻居,使粒子不仅能从全局最好粒子中学习经验,而且能从“邻居”即临近的粒子中适应值最好的粒子吸取经验,使粒子之间能更好地共享社会信息。
本文针对基本粒子群算法公式(1)进行了改进,则该公式变为:
由公式(3)、(2)组成的迭代算法为改进的粒子群算法。
其中:下标d表示粒子的第d维;i表示粒子;c3为学习因子或加速常数;r3为分布于[0,1]之间的随机数;pk表示第i个粒子的“邻居”中具有最好适应值的粒子k的的位置;其余参数与基本粒子群算法公式中的参数一致。
3.2 构造适应值函数
基于本系统的特点,本文采用分支函数叠加的方法来构造适应值函数。构造适应值函数如下:
设待测路径上有m个分支点,n个参数,则m个分支函数分别为:f1=f1(x1,x2,…xn),f2=f2(x1,x2,…xn),…,fm=fm(x1,x2,…xn);而该路径的分支函数为:
其中,C为一个较大的整数。
3.3 基于改进的粒子群算法的测试用例自动生成算法
在基于改进的粒子群算法的测试用例自动生成算法中,将测试数据作为粒子群向量x的元素。首先随机生成测试数据,然后用改进的粒子群算法搜索最佳的测试数据,使得适应值达到最大。
算法具体步骤为:
1)分析被测程序,确定适应值函数,对被测程序插桩;
2)选定粒子数m、适应值阈值、最大允许迭代次数T、c1、c2、c3和r1、r2、r3;
3)迭代次数t=0;Fg=0;Fp=(0,0,…,0)
4)while(Fg<=&t
5)for(i=0;i
{使用粒子群中的每一个粒子来执行插桩后的程序;根据粒子运行之后的结果,评定粒子的适应值:
if(Fi>Fp(i)){Fp(i)=Fi;pi=xi;}
if(Fi>Fk(i)){Fk(i)=Fi;pk=xi;}
if(Fi>Fg){Fg=Fi;pg=xi;}}
6)for(i=0;i
{按公式(3)计算vi;按公式(2)计算xi;}
7)t=t+1;
在上述步骤中,Fi为第i个粒子的适应值,xi是其对应的粒子位置;Fp为第i个粒子迄今搜索到的最优适应值,其对应的粒子位置为pi;Fk为第i个粒子的“邻居”中具有最优适应值的粒子k的适应值,其对应的粒子位置为pk;Fg为粒子群迄今搜索到的最优适应值,其对应的最优粒子位置为pg。
4 实验结果分析
本文用一个判断三角形类型的程序作为被检测程序,使用本文改进的算法自动生成测试用例,并与遗传算法进行了比较。实验结果采用迭代次数和运行时间作为评价指标,生成所有目标路径测试用例的迭代次数越少、时间越短,说明算法效果越好。
表1是本文改进的算法和遗传算法在粒子群数和种群数从10到30时,生成最优解的迭代次数情况及相应的运行时间。实验中对每个粒子群数和种群数各运行10次。表1记录了找到最优解迭代次数的平均值,生成最优解所需的时间则是10次运行的平均值。
从表1可以看出本文改进的算法的平均迭代次数和平均运行时间都比遗传算法的要少,本文改进的算法生成所需测试用例的迭代次数大约是遗传算法的1/11,平均运行时间大约是遗传算法的1/16。实验证明,本文改进的粒子群优化算法生成测试用例的效果明显较好。
5 结束语
本文提出的基于改进的粒子群优化算法的测试用例自动生成算法具有算法简单、易实现,测试用例自动生成效率高,算法局部收敛能力强等特点,非常适合软件测试中测试用例自动生成的应用。
本文只实现了数值类型的数据,对其它类型的数据比较难处理,还需要进一步进行研究,实现更大程度的自动化。
参考文献
[1]Bird D,Munoz C U.Automatic Generation of Random Selfchecking Test Cases[M].Engelwood Cliffs,NJ:Prentice Hall,1983.
[2]Ramanmoorthy C V,Ho S B F,Chen W T.On the Automated Generation of Program Test Data[J].IEEE Transactionson Software Engi-neering.1976,SE-2(4).293-300.
[3]Korel B.Automated Software Test Data Generation[J].IEEE Transactions on Software Engineering,1990,8,16(8).870-879.
[4]Gallagher M,Narasimhan V L.ADTEST:A Test Date Generation Suite for Ada Software Systems[J].IEEE Transactions on Software En-gineering,1997,23(8):473-484.
[5]Gupta N,Mathur A P,Soffa M L.Generating Test Data from Branch Coverage[C].The Fifteens IEEE International Conference on Auto-mated Software Engineering,2000,9.
[6]单锦辉.面向路径的测试数据自动生成方法研究[D].长沙:国防科学技术大学,2002.
[7]Jones B F,Sthamer H.Automatic Structural Testing Using Genetic Algorithms[J].Software Engineering Journal.1996,11(5):299-306.
[8]荚伟,谢军.遗传算法在软件测试数据自动生成中的应用[J].北京航空航天大学学报,1998,24(4):434-437.
[9]马臻.基于遗传算法的构件化软件测试用例生成研究[D].西安:西安理工大学,2006.
11.工作流测试用例 篇十一
要减少不必要的代码,有一个好方法:想想谁会使用系统,又该如何开发用户需要的系统,
有很多项目都试图通过定义功能性和非功能性需求来确定需求。可是这些需求没有说明一个人如何使用系统,以及一个功能在何种场景下必须运行。需求收集的方法应该为项目团队提供上下文,这样才能深入理解需求。
谁需要那个支票账户?
克拉丽莎,资深经理
我的项目团队陷入困境。他们实现了一堆只开发完一部分的功能,可是没有哪个能够真正运行。我召开了一个会议,以决定接下来该做什么。
在会议上,我想知道:为了完成项目,哪些用户是他们的首要服务对象。他们看着我,脸上毫无表情,
管理资料
“你们看,我们是一家银行。我们希望年满18岁、将要进入大学的人们首先使用我们的服务。还有住在郊外的妈妈们,她们还有其他资产,75岁的老奶奶,以及年方15已经靠做家务挣得零花钱的孩子们。我们可以为他们提供不同的理财服务。如果他们走进来,我们希望他们成为我们的客户。对于这些不同类型的客户,我们真地想过要给他们提供什么样的产品么?”
他们以前太过专注于系统的内部功能,忽视了系统真正要为之服务的用户。我们把期望捕获的用户重新进行了排序,项目团队因此得以完成需求定义,并完成系统的功能。
人,总是人的因素,不是么?
只要大家了解需求的上下文,开发人员、测试人员和文案人员就能知道如何开发、测试、编写文案。如果他们不能了解,要是需求以功能性和非功能性需求的方式罗列,他们也可以问一些更好的问题,从而深入了解需求。
12.测试工作经验总结 篇十二
功能测试最重要的是理解业务和需求。知道系统要实现什么功能,业务流程是怎样的,然后就可以根据需求编写测试计划和测试用例了。测试书籍上介绍常用的编写测试用例的方法有:等价类、边界值、因果图、判定表等,在实际工作中,我使用较多的有等价类、边界值、场景法和错误猜测法。在这里需要提一点,将测试用例按测试目的进行分类,比如用户界面、功能点、业务场景等,会让测试用例的结构看起来更清晰,执行测试用例的效率也更高。
要做好功能测试,还需要对整个系统的数据库结构比较清楚,每个功能点涉及哪些数据表,对数据的操作方式是怎样的。这样就不单从前台页面来进行测试,通过对数据库中数据的验证,可以发现隐藏的一些bug。比如库表没有进行关联删除,从前台页面是看不出来的,但实际可能导致程序出现问题。对一些比较复杂的组合查询或数据排序,也可以自己编写sql语句对结果进行验证。
了解程序的框架结构和一些开发知识也有助于更好地测试程序和定位错误。
测试用例的编写经验步骤和数据的分离
将输入的各种数据已参数的形式表达在操作步骤中,而不需要为每一种输入数据创建一个测试用例。
例如:atm存款
好的测试用例,在执行的步骤(Step)的表达上应该是尽可能和数据相分离。举例来讲,有一个ATM机取款的功能,可能有以下几个场景:
1.密码正确的登录
2.密码错误的登录
3.密码输入三次错误,卡被锁定
4.取少于余额的款项
5.尝试取大于余额的款项
6.尝试取等于余额的款项(考虑手续费)
6.取款额度大于当次的限制
7.取款额度大于当天的限制
7.取款次数大于限制次数
等等
不管你用什么用例设计的方法论来做指导,作为这个简单的例子,有经验的人都应该能看出,此处的很多步骤是可以重用的,总结下来如下(此处只列出了操作的步骤,略去了系统的交互中的反馈结果):
1.插入卡->A:输入密码->B:按“确定”键->重复A-B
2.A:选择取款功能->B:填写取款金额->C:点击“确定取款”的按钮->D:取现金->重复A-D
因此,我们只需要写出两套比较完整的步骤,将密码和取款金额多数字用参数来表达即可。这样是不是简单了很多呢?单独的测试基础数据准备工作
将测试基础数据提前准备好,写到你单独的测试数据准备文档中,而不是分散到 所有使用到它的case中才去描述。测试用例的前后置条件
除了第二点中谈到的数据需要准备外,在测试用例这个Level,必须有一些条件满足,您才能开始执行它。集中的把这些步骤整理成一个相对独立的操作单元,具体用例中只要引用就可以了,这样会便于对用例的理解和在多处复用。
【工作流测试用例】推荐阅读:
测试月工作总结07-24
渗透测试工作思路09-02
系统测试工作总结07-11
2023工作要点知识测试(答案)06-11
测试前的准备工作07-12
软件测试工作周报总结09-27
软件测试工作经历11-05
基层党组织工作测试12-01
测试工程师的工作描述06-17
测试员个人工作总结范文07-16