同步操作将从 罅茯翔飞/Software Testing 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
学时安排:72课时(理论36+实践36)
教材:清华大学出版社 《软件测试》(第2版) 周元哲 编著
软件是一系列按照特定顺序组织的计算机数据和指令的集合。
软件 ≠ 程序(代码)
软件包含如下内容:
开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述、程序逻辑、程序间相互关系、数据格式和存储等。
从管理的角度规定涉及软件生存的信息:
为使用和运行软件产品的任何人规定培训和参考信息,促进软件产品的市场流通或提高可接受性。使得那些未参加开发本软件的程序员维护它。
软件项目是一种特殊的项目,具有如下特点:
描述: 定义出本次任务都需要做什么,做成什么样子。
参与者: 产品经理、需求分析师、客户
描述: 由项目组相关成员去研究需求是否可行,能不能做出来。
参与者: 产品经理、架构师、项目经理、开发
描述: 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。
参与者: 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发
输出:《需求规格说明书》
描述: 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。
参与者: 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等
描述: 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。
参与者: 项目经理、架构师、开发、测试
描述: 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。
参与者: 开发
描述: 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。
参与者: 任务责任人(开发)、测试
描述: 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。
参与人: 配置管理人员、测试
10. 支持维护
描述: 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。
参与人: 支持维护人员/售后工程师
软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。
The process of executing a program with the intent of finding errors.
测试是为发现错误而执行程序的过程。
这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。
瀑布模型
这是一种经典模型,提供了软件开发的基本框架。
强调开发工作(计划、设计、开发、测试、维护等)各阶段之间的先后顺序,不可以并行操作。
瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。为了更早的发现问题,测试应延伸到需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。
优点:
缺点:
V模型
强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。
优点:
相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。
缺点:
虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。
W模型(双V模型)
明确表示出了测试与开发的并行关系
优点:
W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。
缺点:
W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。
螺旋模型
大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。
敏捷模型
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。专注于交付对客户有价值的软件(可以工作的)。
强调以人为核心,程序员团队和业务专家之间的紧密联系,频繁交付新的软件版本,紧凑的自我组织型团队,更注重软件开发中人的作用。
在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
《联盟敏捷宣言》
解读:
个体和互动高于流程和工具
以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。
在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。
工作的软件高于详尽的文档
为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。
客户合作高于合同谈判
主动拥抱变化,及时响应,持续交付。
响应变化高于遵循计划
通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费
缺点:
由于其项目周期很长,所以很难保证开发的人员不更换,而缺少文档就会造成在交接的过程中出现很大的困难。
IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
符合下面4个条件之一就是缺陷:
缺陷来源 | 描述 |
---|---|
需求说明书 | 需求说明书错误或描述不清 |
设计文档 | 设计文档描述不准确,与需求不一致 |
系统集成接口 | 各模块参数不匹配 |
数据流(库) | 数据字典、数据库中的错误 |
程序代码 | 编码问题 |
缺陷类型 | 描述 |
---|---|
功能 | 未达到规格说明书中规定的功能,影响系统使用 |
用户界面 | 未按照原型设计,影响交互,如:显示格式,按钮位置 |
文档 | 文档内容不完整或不正确,影响发布和维护 |
软件包 | 由于软件配置库、变更管理或版本控制引发的错误 |
性能 | 执行时间长、处理速度慢、负载高等方面 |
接口 | 与其他模块参数不匹配 |
严重性: 表示软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程度。
优先级: 表示修复缺陷的重要程度和紧迫程度。
级别 | 名称 | 说明 | 示例 |
---|---|---|---|
S1 | 致命错误 | 严重阻碍开发或测试工作的进行,必须马上解决 | 安装包或App无法安装 网页不能访问 不能启动 死机 核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件 |
S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露 数据无法保存 |
S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 |
S4 | 次要错误 | 次要功能实现有问题或者手册相关问题 | 个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用) 次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等) 错别字 手册描述不合理或样式格式有问题 |
S5 | 轻微缺陷 | 建议,不属于缺陷 |
级别 | 名称 | 说明 |
---|---|---|
P1 | 低 | 不影响整个系统的正常运行,一般指建议性的问题 |
P2 | 中 | 不影响继续测试,但也是必须要修改的,对功能的实现有所影响,如果时间允许应该修复 |
P3 | 高 | 影响整个测试的继续进行,要马上修改 |
P4 | 急 | 系统无法继续执行下去,必须立即修改 |
严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,由简到难。
综合使用重要性等级和严重性双标准的优先顺序:
S1. 致命错误 | S2. 严重缺陷 | S3. 主要错误 | S4. 次要错误 | S5. 轻微缺陷 | |
---|---|---|---|---|---|
P4. 急 | 立即修复 3小时内 |
第2修复 1天内 |
第4修复 2天内 |
第7修复 3天内 |
第11修复 4天内 |
P3. 高 | 第3修复 1-2天内 |
第5修复 2-3天内 |
第8修复 3-4天内 |
第12修复 4-5天内 |
第15修复 5-6天内 |
P2. 中 | 第6修复 3-4天内 |
第9修复 4-5天内 |
第13修复 5-6天内 |
第16修复 6-7天内 |
第18修复 2-3周内 |
P1. 低 | 第10修复 8-7天内 |
第14修复 7-9天内 |
第17修复 8-12天内 |
第19修复 3-4周内 |
第20修复 择期 |
最优化、最简单的生命周期是:(理想情况)
一个缺陷很可能会被反复打开→关闭。在日常工作过程中,由于开发修订其他缺陷影响、需求变更等因素缺陷可能会被反复打开→关闭。
缺陷状态 | 描述 |
---|---|
打开 | 确认提交的缺陷,等待处理 |
已分配 | 分配开发人员进行修复 |
已解决 | 经过开发人员修复,等待测试人员验证 |
已验证 | 测试人员验证修复成功 |
已关闭 | 修复完成,确认测试通过 |
重新打开 | 测试验证依然存在缺陷,等待开发修复 |
推迟 | 暂不解决,可能在下一个版本修复 |
保留 | 条件不允许,不能修复 |
不能重现 | 开发不能复现这个缺陷,需要测试人员检查缺陷发现步骤 |
以上是上报bug、创建bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含:
差错:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源)
错误:软件内部问题,设计错误、编码错误。(内部原因)
失效:软件系统运行时偏离了用户需求。(外部表现)
软件系统越来越复杂,一个软件不能够由单独的软件工程师单独编写,而是由团队进行配合,每个人可能只负责一个模块,对于全局没有过多的了解,这时如果运行软件就会容易产生很多的错误。在行业内将这些错误叫做BUG。并且每一个软件工程师都会有思维的死角,自己不容易发现自己编写出来的错误。所以这个时候就需要专门的软件测试工程师用专业的测试方式来检查软件。检查该软件是否符合客户要求的产品设计,是否能够符合大多数用户的使用习惯,如果发现异常状态及时进行处理。软件市场虽然远远没有达到饱和但是各种各样功能的软件也层出不穷竞争激烈,对软件开发的质量要求也是日益增高。
我国软件测试行业起步较晚,发展较慢,直到21世纪初期,我国才逐步开始重视软件测试行业。但近年来,软件行业的快速发展为软件测试行业的发展提供了良好的基础,随着我国软件测试行业的发展,行业内企业向规模化发展将获得规模效应,可以有效降低企业的单位成本;而软件测试技术的不断发展,也将淘汰那些技术实力较弱的企业,促使行业内企业向专业化方向发展。
在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量1。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。
从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。
当前国内软件测试行业主要存在以下问题:
国内外软件测试差距
软件测试阶段对照表:
测试阶段 | 主要依据 | 参与人员/测试方式 | 主要测试内容 |
---|---|---|---|
单元测试 | 《详细设计》 | 开发小组执行白盒测试 | 规范、逻辑、路径 |
集成测试 | 《概要设计》 《需求文档》 |
开发小组执行白盒测试、黑盒测试 | 接口、路径、功能、性能 |
系统测试 | 《需求文档》 | 独立测试小组执行黑盒测试 | 功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试 |
验收测试 | 《需求文档》 | 用户执行黑盒测试 | 同上 |
测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括:测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。
简单的认为,测试用例是为某个特定目标而编制的一组测试输入、执行条件和预期结果,用于核实是否满足某个特定的软件需求。
选择测试用例是软件测试员最重要的一项任务,不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。准确评估风险,把无穷尽的可能性减少到可以控制的范围是软件测试成功的诀窍。
术语
测试用例维护一般分为以下几种情况:
黑盒测试也称功能测试,通过测试来检测每个功能是否都能正常使用。
着眼于程序外部结构,不考虑内部逻辑结构,通过测试检验每个功能是否能正常使用。在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当的接受输入数据而产生正确的输出信息。
黑盒测试从用户的角度出发,以输入数据与输出数据的对应关系进行测试,数据驱动。
黑盒测试注重测试软件的功能需求,主要视图发现下列几类错误
等价类是指某个输入域的子集合。在该子集合中,测试某等价类的代表值就等于对这类其他值的测试,对于揭露程序的错误是等效的。
要注意的是,在进行等价类划分的过程中,我们不仅要考虑有效等价类划分,也要考虑无效等价类划分。
有效等价类:是指输入完全符合程序规格说明的数据集合。利用有效等价类可以测试程序是否满足规格说明书规定的功能和性能。
无效等价类:和有效等价类相反,是指对程序的规格说明无意义、不合理的输入数据构成的集合。
我们要测试学习成绩这一输入框(假设总成绩都是100),那么我们就可以如下图划分,有效的成绩是>=0且<=100的,无效的是<0和>100这两部分。
另外图中还有一个无效等价类没有表现出来--非数字字符(比如:英文字母、中文、特殊的符号等单一或者组合,如a、abc、你好、你abc、你=我、\你\a\等;以及他们分别与数字组合,比如:a123、321a、你123、12你、1你2、1\2、1=你等)。
那么根据上述分析,最终设计出来的测试用例如下:
等价类最终必须是分割到最小单位,只有这样才能保障测试覆盖全面。
非数字字符可以是包含英文字符、中文、特殊符号的字符串或者字符,所以其实它又可以分为三个无效等价类,分别是:
边界值分析法是等价类划分法的补充。顾名思义,边界值分析法是对输入的边界值进行测试。从实践中我们可以发现,人们无论是在生活中还是在工作中往往会忽略边界值的条件,所以在输入或者输出的边界上会发生大量的错误。因此,在测试用例设计中,需要对输入的条件进行分析并且提取其中的边界值条件,通过对这些边界值的测试来查出更多的错误。
常见的边界值:
一般边界值分析 对于含有n个变量的程序,取值为min、min+、normal,max-、max,测试用例数目为4*N+1。
健壮性边界值分析 健壮性边界值测试是边界值分析的一种扩展。变量除了取min、min+、normal、max-、max 5个边界值外,还要考虑略超过最大值(max+)以及略小于最小值(min-)的取值。因此,对于含有n个变量的程序,健壮性边界值分析产生6*n+1个测试用例。
延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢:
选取的边界值数据应该包括:
-1,0,1,59,60,61,79,80,81,99,100,101
通常情况下,软件测试所包含的边界检验有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等,而相应地,这些类型的边界值应该在最大/最小,首位/末尾,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下。
测试项 | 边界值 | 测试用例设计思路 |
---|---|---|
数字 | 起始位数-1 结束位数+1 |
成绩,正确0-100,边界-1,0,100,101 |
字符 | 起始-1个字符 结束+1个字符 |
用户名输入框,正确1-32位,边界0、1、32、33,注意中文字符占位不同 |
方向 | 刚差一点 刚超一点 |
游戏,通过门口,边界值门内一步和门外一步 |
空间 | 小于空余空间一点 大于满空间一点 |
磁盘剩余20G,边界19.9G和20.1G |
位置 | 上下左右里面一点 外面一点 |
按钮,四边内四点,外四点 |
如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则较适合采用边界值分析。这里的关键是 “独立”的“物理量” 。例如,Date是3个变量(年、月、日)的函数,对其采用边界分析测试用例,就会发现测试用例是不充分的,例如,没强调2月和闰年。其存在问题是因为没有考虑月份、日期和年变量之间存在的依赖关系。由于边界值分析假设变量是完全独立的,因此边界值分析测试用例是对物理量的边界独立导出变量极值,不考虑函数的性质,也不考虑变量的语义含义。 边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。
等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行动之间的关系。
决策表由4部分组成:
规则:任何条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的列就是规则。显然,决策表中列出多少条件取值,也就有多少规则,条件项和动作项就有多少列。
所有条件都是逻辑结果(即真/假、是/否、0/1)的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表叫做扩展条目决策表。决策表设计测试用例,条件解释为输入,动作解释为输出。
决策表适合以下特征的应用程序:
决策表(判定表)设计测试用例的具体步骤如下:
需求:输入三边值,判定是哪种三角形:非三角形、不等边三角形、等腰三角形、等边三角形
条件桩:
动作桩:
决策表:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
a+b>c? | N | Y | Y | Y | Y | Y | Y | Y |
a+c>b? | N | Y | Y | Y | Y | Y | Y | |
b+c>a? | N | Y | Y | Y | Y | Y | ||
a=b? | Y | Y | N | N | N | |||
a=c? | Y | N | Y | N | N | |||
b=c? | Y | N | ||||||
非三角形 | √ | √ | √ | |||||
不等边三角形 | √ | |||||||
等腰三角形 | √ | √ | √ | |||||
等边三角形 | √ |
测试用例:
用例ID | a | b | c | 预期输出 |
---|---|---|---|---|
TC1 | 1 | 2 | 4 | 非三角形 |
TC2 | 1 | 4 | 2 | 非三角形 |
TC3 | 4 | 2 | 1 | 非三角形 |
TC4 | 3 | 3 | 3 | 等边三角形 |
TC5 | 3 | 3 | 4 | 等腰三角形 |
TC6 | 3 | 4 | 3 | 等腰三角形 |
TC7 | 4 | 3 | 3 | 等腰三角形 |
TC8 | 3 | 4 | 5 | 不等边三角形 |
决策表把复杂问题的各种可能情况一一列出,易于理解。但是,决策表不能表达重复执行动作的缺点。
使用判定表设计测试用例的条件如下:
这5个必要条件使得操作的执行完全依赖于条件的组合。对于不满足条件的判定表,可增加其他的测试用例。
前面我们介绍的等价类划分法和边界值分析法都没有考虑到输入情况的组合。这样虽然各种输入条件可能出错的情况已经看到了,但是多个输入情况组合起来可能出错的情况却被忽视了
地铁自动充值机充值
假设自动充值机每次只能投入面值50或者面值100的人民币,投入钱后会有充值50和充值100两个选项
等价类划分法和边界值分析法可能不会测试到投入面值50的人民币,然后点击充值100这种异常情况;因此,当程序的输入条件有多个的话,就需要用到因果图法来设计测试用例了。
因果图利用图解法分析输入的各种组合情况,适合描述多种输入条件的组合、相应产生多不动作的方法。因果图法最终生成的是判定表。
对于逻辑结构复杂软件,先用因果图进行图形分析,再用判定表进行统计,最后设计测试用例。当然,对于比较简单的测试对象,可以忽略因果图,直接使用决策表。
需求:第一列字符必须是A或者B,第二列为数字,才允许进行文件修改。如果第一列字符不正确,输出提示L,第二列不是数字,输出提示M,采用因果图设计测试用例
原因:
结果:
因果图:
决策表:
1 | 2 | 3 | 4 | 5 | 6 | |
---|---|---|---|---|---|---|
A | 1 | 1 | 0 | 0 | 0 | 0 |
B | 0 | 0 | 1 | 1 | 0 | 0 |
数字 | 1 | 0 | 1 | 0 | 1 | 0 |
修改文件 | 1 | 0 | 1 | 0 | 0 | 0 |
提示L | 0 | 0 | 0 | 0 | 1 | 1 |
提示M | 0 | 1 | 0 | 1 | 0 | 1 |
测试用例:
用例ID | 第一列 | 第二列 | 预期输出 |
---|---|---|---|
TC1 | A | 1 | 修改文件 |
TC2 | A | C、汉、# | 提示M |
TC3 | B | 2 | 修改文件 |
TC4 | B | D、字、! | 提示M |
TC5 | E、符、% | 3 | 提示L |
TC6 | F、特、@ | G、殊、* | 提示L和M |
优点:
缺点:
通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 场景法重点是测试流程,因此每个流程用一个用例验证即可,流程测试没问题不代表系统功能没问题,还需要单步进行测试,结合前面的方法。
流程图:
场景编号 | 流程 | 结果 |
---|---|---|
1 | 插入合法的卡 输入正确的密码 ATM有现金 输入正确的金额 余额充足 ATM现金充足 |
成功提款 |
2 | 插入不合法的卡 | 提示错误,退卡 |
3 | 插入合法的卡 输入密码点取消 |
退卡 |
4 | 插入合法的卡 输入错误的密码(还有机会) |
提示错误,重新输入 |
5 | 插入合法的卡 输入错误的密码(超出限制次数) |
提示错误,退卡/吞卡 |
6 | 插入合法的卡 输入正确的密码 ATM没有现金 |
提款选项不可用,退出 |
7 | 插入合法的卡 输入正确的密码 ATM有现金 输入不合法的金额 |
提示错误,重新输入 |
8 | 插入合法的卡 输入正确的密码 ATM有现金 输入正确的金额 余额不足 |
提示错误,重新输入 |
9 | 插入合法的卡 输入正确的密码 ATM有现金 输入正确的金额 余额充足 ATM现金不足 |
提示错误,重新输入 |
用例ID | 场景/条件 | 卡片 | 密码 | ATM内金额 | 账户余额 | 输入金额 | 预期结果 |
---|---|---|---|---|---|---|---|
TC1 | 场景1:成功提款 | 合法卡 | 123456 | 2000.00 | 5000.00 | 100 | 成功提款,账户余额400.00 |
TC2 | 场景2:非法的卡 | 非法卡 | n/a | 2000.00 | 5000.00 | n/a | 提示错误,退卡 |
TC3 | 场景3:点取消 | 合法卡 | n/a | 2000.00 | 5000.00 | n/a | 退卡 |
TC4 | 场景4:密码错误(还有机会) | 合法卡 | 654321 | 2000.00 | 5000.00 | n/a | 提示错误,重新输入 |
TC5 | 场景5:密码错误(超过限制次数) | 合法卡 | 234516 | 2000.00 | 5000.00 | n/a | 提示错误,退卡/吞卡 |
TC6 | 场景6:ATM无现金 | 合法卡 | 123456 | 0.00 | 5000.00 | n/a | 提款选项不可用,用例结束 |
TC7 | 场景7:金额错误 | 合法卡 | 123456 | 2000.00 | 5000.00 | 20 | 提示错误,重新输入 |
TC8 | 场景8:卡内余额不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 600 | 提示错误,重新输入 |
TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 |
错误推测法是利用经验和直觉推测出出错的可能类型,列举出程序中所有可能的错误和容易发生错误情况的清单,根据清单设计测试用例。所谓凭经验,是指人们对过去所作测试结果的分析,对所揭示缺陷的规律性直觉的推测来发现缺陷。
该方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。那么显而易见地,这个方法的缺点就是太过依赖个人能力,难以系统化。因此,这个方法一般是作为测试用例设计的补充,而不是单独用来设计测试用例。在回归测试中应用较多。
错误推测法一般采用如下技术:
优点:
缺点:
黑盒测试方法有等价类划分、边界值分析、决策表、因果图、场景法、错误推测法等,每种测试方法都有其各自的特点和适用场合。
软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略:
对于功能性测试技术,可以根据如下条件进行选择:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。