-
基于模型的测试-MBT 它的测试用例是从一个模型中导出所得,这个模型描述了被测系统的某些方面,通常是功能部分。 模型:对需求功能点建模 https://blogs.msdn.microsoft.com/sechina/2009/11/18/123/ 主要的MBT工具 Spec Explorer( Microsoft ) GraphWalker( OpenSource ) http://graphwalker.github.io/ Tcases( OpenSource ) https://github.com/Cornutum/tcases modeljunit( OpenSource ) http://www.cs.waikato.ac.nz/~marku/mbt/modeljunit/查看全部
-
基于风险测试——(RBT risk-based testing) 定义:一种基于对软件失效的风险评估并以此指导测试计划、设计、执行、结果评价的软件测试类型 风险: 质量风险(软件功能,易用性,性能,软件代码缺失); 管理风险(人员能力不足,环境风险,被测系统的需求不清晰,被测系统关联的第三方系统不能联调) 风险级别=风险可能性*风险严重度 识别风险: 可能性: 复杂性;时间压力;高变更率;技能水平;地理分散度 严重程度: 使用频率;失效可视性;商业损失;组织负面影响和损害;社会损失和法律责任 RBT的优点(见下图)查看全部
-
局部探索式测试:输入;状态;代码路径;用户数据;执行环境 全局探索式测试:漫游测试法。 让测试人员像游客游览一样来测试,而且软件按照不同属性划分为各个区域。 商业区是指软件启动到关闭之间用户会使用的功能。 旅馆区是指软件休息没有实际运行时候的功能,例如后台进程和定时任务。 历史区是指版本遗留代码或者说以前版本经常出现bug的功能模块。 旅游区是指新手引导之类的功能。 娱乐区是指主要功能之外的一些辅助特性。 破旧区是指废弃或者已经隐藏的功能。 探索式测试测试流程(基于session) konw you mession 了解测试重点,系统环境,有一个测试的总体思路 learning session 详细的学习探索被测系统了解系统的业务逻辑,具体功能,深入学习被测系统 coverage session 探索式测试的实施阶段,完成主要功能点的测试验收,完成测试点的覆盖 deep session 在上一个功能点的基础上,更深入的发散式的测试,挖掘深层次的问题,深入测试 close session 总结测试,整理测试信息,根据整理数据,分析有没有测试的遗漏 缺陷大扫除。查看全部
-
基于脚本的测试-SBT 强调先做出测试设计,然后再测试 Script-based Testing Scripted Testing(ST) 探索式测试ET: Exploratory Testing(ET) 完全抛开测试脚本的测试; 它是一种测试风格,思维不单单是一种测试技术 按照ST和ET的互补程度,有各种不同的测试种类(见下图) ST:系统性强;容易管理,控制;设计在先,执行在后;主要是验证自己的思路;可预见性 ET:自由灵活;与ST是互补的,执行和设计并行;不断和系统交互,带着问题测试;学习的过程(重在测试人员) 探索式测试的优点: 更能激发测试人员的创造性和工作乐趣; 增加了发现新的或较深入的bug的可能性; 在较短时间内找到更多的bug以及对SUT(software under test 被测程序)作一个快速的评估; 有利于更加有效的实施自动化; 更加适用于敏捷项目; 减少了在简单,繁复上用例的无谓编写时间 缺点: 测试管理上有局限性,较难协调和控制; 对于bug的重复利用和重现上作用有限; 对测试人员的测试技能和业务知识深度要求高; 只有在SUT一完全可用的前提下才更有作用; ET的生产率很难定义; ET本身较难进行自动化查看全部
-
2-4 软件测试模型-敏捷测试 敏捷测试(Agile Testing)--遵循敏捷宣言的一种测试实践 敏捷宣言(价值观): 个体与交互 重于 过程和工具 可用的软件 重于 完备的文档 客户协作 重于 合同谈判 响应变化 重于 遵循计划 ——在每对比较中,后者并非全无价值,但我们更看重前者 敏捷测试的特点: 强调从客户角度进行测试 重点关注迭代测试新测试,不在强调测试阶段 尽早测试,不间断测试,具备条件即测试 强调持续反馈 预防缺陷重于发现缺陷 敏捷测试VS传统测试 传统测试: 测试是质量的最后保护者; 严格的变更管理; 预先的计划和细节的准备; 重量级文档 各阶段测试严格的入口和出口标准; 更多在回归测试时进行重量级的自动化测试; 严格依赖流程执行; 测试团队和开发团队是相对独立的 敏捷测试: 开发和测试人员是紧密合作,大家都有责任对软件负责; 变更是可接受的,拥抱变更; 计划随着进展时常调整; 只需要绝对必要的文档; 各迭代之间已经没有明显的入口和出口标准; 所有阶段都需要自动测试,每个人都需要做,是项目集成的一部分; 流程不再需要严格执行; 团队合作是无缝隙合作;查看全部
-
2-3 按测试模式来分类: 瀑布模型、敏捷测试、基于脚本的测试、基于风险的测试、探索式测试等。 1、(传统的)瀑布模型:项目计划->需求分析->软件设计->程序开发->软件测试->集成维护 优点:强调需求,前一阶段完成后只需关注后续阶段,提供按阶段划分的检查点,文档规范 缺点:难以适应需求的频繁变化,项目周期后段才可看到成果,较关注时间节点,文档工作量较大,测试在项目的后期 2、V模型(最广泛) 需求分析->概要设计->详细设计->软件编码->单元测试->集成测试->系统测试->验收测试 缺点:也没能体现出测试需要尽早进行的原则 3、W模型(双V模型) 开发与测试并行,可以尽早发现问题 局限性:需求、设计、编码仍然是串行进行的,上一个阶段完成之后才能进行下一个阶段 4、X模型 解决交接和频繁集成周期的问题 5、H模型:把软件测试看成一个独立的流程,与其他流程并发进行,比如设计流程,并发流程,甚至是测试流程查看全部
-
H模型查看全部
-
X模型查看全部
-
W模型查看全部
-
V模型查看全部
-
白盒测试的主要测试方法: 代码检测法:多面检查、代码审查、走查等。主要检查代码和设计的一致性。 静态结构分析法:使用测试工具,内部结构分析进行设计测试用例 静态质量度量法:标准的度量模型(ISO标准等) 逻辑覆盖法:6种逻辑,语句 ,分支,条件,条件判定组合,路径,判定 基本路径测试法:通过分析复杂度,选出基本可执行路径的集合。程序控制流图,描述程序控制流 灰盒测试 介于黑、白盒测试之间的,关注输出对于输入的正确性,同时也关注内部表现 静态测试 定义:静态测试是指无须执行被测程序,而是通过评审软件文档或代码,度量程序静态复杂度,检查软件是否符合编程标准,借以发现编写的程序的不足之处,减少错误出现的概率; 方式:互审、走查、会议 动态测试 定义:动态测试是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等。 手工测试 由专门的测试人员从用户视角来验证软件是否满足设计要求的行为。更适用针对深度的测试和强调主观判断的测试。 众包测试,探索式测试 自动化测试 使用单独的测试工具软件控制测试的自动化执行以及对预期和结果进行自动检查。 单元测试、接口测试、性能测试等 手工测试VS自动化测试 手工测试: 优点:易发现缺陷,容易实施,创造性、灵活性; 缺点:覆盖量化难,重复测试效率低,不一致性、可靠性低,人力资源依赖 自动化测试: 优点:高效率、速度快,高复用性,覆盖率容易度量,准确、可靠,不知疲劳; 缺点:机械、发现缺陷率低,一次性投入较大查看全部
-
2-2 软件测试手段 根据测试对象的可见度:黑盒测试、 白盒测试 根据状态:静态测试、动态测试 执行方式:手工测试、自动化测试 黑盒测试: 不考虑程序内部结构和内部特性下,通过相关暴露出的接口,对程序进行测试。 只检查程序的功能是否按照需求规定,正常使用; 程序是否能适当的输入输出数据,并产生正确的输出信息; 一般针对软件外面的界面,可见的功能; 从用户的视角,通过不同数据事件,通过输出结果进行判断; 优点: 1.容易实施,不需要关注内部的实现 2.更贴近用户的使用角度 缺点: 1.测试覆盖率较低,一般只能覆盖到代码量的不到40% 2.针对黑盒的自动化测试,复用率较低,维护成本较高。因:产品活动增/删(更新) 黑盒测试主要测试什么 1.是否有不正确或遗漏的功能? 2.在接口上,输入是否能正确的接受?能否输出正确的结果? 3.是否有数据结构错误或外部信息(例如数据文件)访问错误? 4.性能上是否能够满足要求? 黑盒测试的主要设计方法 等价类划分法:针对程序的输入条件进行分类,输入典型的数据 边界值分析法:特殊的边界数据,测试代码的边界状态 错误推测法:基于经验,直觉,判断错误的地方;特殊字符,文件不存在,文件超大等 因果图法:根据输入输出看做原因和结果,形成因果图。(因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。) 正交试验分析法:选出代表性的数据,作为输入数据 状态迁移图法:软件审批的过程,各种状态迁移 流程分析法:处理程序逻辑执行的路径 白盒测试:逻辑覆盖率 主要的逻辑单位: 语句覆盖:保证每条语句执行一次 分支(判定):保证每条分支至少执行一次 条件:条件表达式,至少计算一次 条件组合:所以不同条件下的组合情况 路径:程序中,每个可能的路径至少执行一次 优点 1.迫使测试人员去仔细思考软件的实现,理解原理 2.可以检测代码中的每条分支和路径 3.揭示隐藏在代码中的错误 4.对代码的测试比较彻底 缺点 1.昂贵。 2.无法检测代码中遗漏的路径和数据敏感性错误 3.不能直接验证需求的正确性查看全部
-
系统测试:是将经过集成测试的软件,作为计算机系统的一个部分与系统中其他部分结合起来,在实际运行环境下对计算机系统进行的一系列严格有效的测试,以发现软件的问题 (功能测试、性能测试、稳定性测试都属于系统测试) 关注点:关注系统本身的使用、关注系统与其他系统间的连通、关注系统在不同压力下的表现、关注系统在真实环境下的表现。 系统测试和集成测试 1.测试对象不同:集成:由通过了单元测试的各个模块集成起来的构件; 系统:除了软件之外,还包括计算机硬件及相关的外围设备、数据采集和传输机构、支持软件、系统操作人员等整个系统。 2.测试时间:集成测试介于单元测试和系统测试之间;系统测试在集成测试之后 3.测试内容:集成:各个单元模块之间的接口;系统:整个系统完整的功能 4.测试角度:集成:偏于技术;系统:偏于业务 验收测试:也称交付测试;针对用户需求、业务流程的正式的测试,确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。 细分为:用户验收测试(开发方在移交之前) 运行验收测试(以运维的层面来进行测试) 合同和规范验收测试(参照约定的规范来进行验证) ALPHA测试(用户在开发者提供的环境中测试) BETA测试(在用户提供的环境中进行测试)查看全部
-
1.软件测试的分类: a.按软件测试阶段分类:单元测试、集成测试、系统测试、验收测试 单元测试:对软件中的最小可测试单元进行检查和验证。 单元测试原则:1.尽可能保证各个测试用例是相互独立的。2.一般由代码的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。 单元测试的益处:1.尽早发现缺陷; 2.有利于重构 3简化集成 4.文档 5.用于设计 单元测试限制:1.不可能覆盖所有的执行路径,发现所有路径的错误 2.每一行代码 一般需要3~5行测试代码才能完成单元测试,存在投入和产出的一个平衡 测试工具:Junit 测试 JAVA ; Nunit 测试 .NET ; PHPUnit测试 PHP ; CppUnit测试 C++ (此时作者以JUnit为例,示范如何做一个计算功能JAVA代码的单元测试。如果想系统地学习,可以在慕课上学习课程《JUnit——Java单元测试必备工具》(在慕课的JAVA目录下,不在测试目录下)。) 集成测试:在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动 集成测试的主要实施方案:Bigbang、自顶向下、自底向上(常用)、核心系统集成、高频集成 单元和集成区别:测试对象不同(单元:软件基本单元;集成:模块与子系统) 测试依据不同(单元:软件详细设计;集成:概要设计) 测试方法不同 (集成:接口;单元:单元的类)查看全部
-
以JUnit为例,示范如何做一个计算功能JAVA代码的单元测试。如果想系统地学习,可以在慕课上学习课程《JUnit——Java单元测试必备工具》(在慕课的JAVA目录下,不在测试目录下)。查看全部
举报
0/150
提交
取消