软件测试 | 您所在的位置:网站首页 › 设计测试用例的方法和应用场景有哪些 › 软件测试 |
一、测试理论基础
1.软件的定义
软件:是计算机程序、程序所用的数据以及有关文档资料的集合 软件分为 系统软件 和 应用软件 系统软件:是生成、准备和执行其他程序所需要的一组文件和程序,比如:操作系统 应用软件:计算机用户为解决某些具体问题而购买的、开发或研制的各种程序或软件包,比如APP 2.应用架构C/S架构:必须安装一个客户端才能使用的软件(client-server) 缺点:每次更新,必须更新服务端和客户端B/S架构:只需要一个浏览器,就可以访问的服务(browser-server) 3.什么是软件测试软件测试: 使用人工和自动手段来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别; 测试目的: (1).发现程序(软件)存在的代码或者业务逻辑错误 (2).检验产品是否符合用户需求 (3).提高用户体验 以最小的人力、物力和时间,找到软件中潜在的错误和缺陷。 4. 测试的分类 *(1).按测试技术划分:黑盒测试、白盒测试、灰盒测试 黑盒测试 黑盒测试:也称功能测试或数据驱动测试,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。白盒测试 白盒测试:也称为结构测试或逻辑驱动测试,白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法。白盒测试原则: (1)保证一个模块中的所有独立路径至少被测试一次;(2)所有逻辑值均需要测试真(true)和 假(false)两种情况;(3)检查程序的内部数据结构,保证其结构的有效性;(4)在上下边界及可操作范围内运行所有循环。白盒测试方法: 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。灰盒测试 大概知道代码逻辑实现,不需要看懂所有的代码(2).按测试对象是否运行划分:动态测试、静态测试 静态测试 不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。动态测试 需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。(3).按不同的测试手段划分:手工测试、自动化测试 手工测试 点工自动化测试 工具+代码(4).按测试包含内容划分:功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试 功能测试 测试软件的功能是否符合需求,通常采用黑盒测试方法,一般由测试人员独立执行。界面测试 也称UI测试,测试用户界面布局是否合理,整体风格是否一致,界面文字是否正确,命名是否统一,页面是否美观,文字、图片组合是否完美等。安全性测试 验证应用程序的安全等级和识别潜在安全缺陷的过程。目的是为了查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力(登录、防攻击、sql注入)兼容性测试 兼容性测试是指检查被测软件在不同的硬件平台上、不同的应用软件之间、不同的操作系统中、不同的网络环境中是否可以正常运行的一种测试。易用性测试 这种测试方法,不是去测试软件能不能用,而是去测试软件好不好用,用户学习成本高,所以主观性比较强烈。一般要根据多个用户的测试反馈信息,才能评价易用性到底好不好。(人性化、舒适、是否符合用户使用习惯、比较主观)性能测试 一般性能测试:相应速度,对资源(CPU/内存)的利用压力测试:高负载的情况下进行的,目的不是为了获取性能指标,而是想要了解系统是否稳定。负载测试:通过不断调试并发数获取性能瓶颈。(极限)强度测试:为了确定系统在最差工作环境的工作能力,或用于验证在标准工作压力下的各种资源的最下限指标。(5).按测试阶段划分:单元测试、集成测试、系统测试、验收测试(α测试、β测) 单元测试 完成最小的软件设计单元(模块、类、函数、方法)的验证工作,目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒测试,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早的发现和解决不易显现的错误。集成测试 通过测试发现与模块接口有关的问题(模块与模块之间的调用)。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成,而采用增量集成。(接口测试)系统测试 是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。验收测试 是一项确定产品是否能够满足合同或用户所规定需求的测试。验收测试包括α测试、β测试、γ测试。α测试 是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。(内测版本,bug多)β测试 是由软件的多个用户在实际使用环境下进行的测试,这些用户返回有关错误信息给开发者。一般只提供给特定的用户群来测试使用。(公测版本)γ测试 此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。(候选发布版本)其他测试:回归测试、冒烟测试、探索性测试/自由测试 回归测试 回归测试是指在代码发生修改之后重新测试先前的测试用例以保证修改的正确性。冒烟测试 指针对最基本的功能或最主要的业务流程(核心功能)进行测试。比如电商购物流程:注册、登录、选商品、加入购物车、支付、订单管理。探索性测试 是敏捷世界里的一种重要测试方法,作为一个研究性的工具,它是用户故事测试和自动化回归集的重要补充。(靠经验、积累、测试思维) 5.测试的原则 1.证明软件中存在缺陷2.不能穷尽测试3.测试应用尽早介入4.28原则5.不存在缺陷谬论6妥善保存一切文档 6.测试的流程 (1).需求分析 阅读需求文档,熟悉项目;参与需求评审(2).制定测试计划和测试方案 测试计划:测试整个项目的总体规划,比如:测试范围,进度安排,人力物力安排,整体的测试策略,风险评估,风险规避..测试方案:被测目标,测试工具选取,测试方法,测试重点 遵循 5W 1H 原则:why when who what where how(3).设计测试用例 常用测试方法:等价类,边界值,场景法...(4).测试用例评审 参与人员一般有:产品经理,开发,测试(5).执行测试用例开发完成后,开始执行测试用例,发现Bug,提交给开发人员,开发人员修复完成后,重新指派给测试人员,测试人员开始回归测试,通过就关闭,没有通过就继续修复Bug; (6).编写测试报告对测试情况做个总结(发现了多少bug,修复了多少bug,还有哪些没修复...) 软件测试的生成周期:需求分析 --> 制定测试计划 --> 设计测试用例 --> 测试用例评审 --> 执行测试用例 --> 编写测试报告软件的生命周期:是软件开始研制到最终被废弃不用所经历的各个阶段。 计划阶段 --> 需求分析 --> 设计阶段 --> 编码 --> 测试 --> 运行与维护 7.软件开发模型开发模型(软件生命周期模型):是指软件从开始研制到最终被废弃所经历的各个阶段。在不同的阶段里, 由不同的组织和人员执行不同的任务。 软件测试与软件的开发模式有着紧密的联系,作为一名测试人员,应该充分理解软件的开发模型,以便找 准自己在其中的位置,从而发挥自身的价值。 7.1 瀑布模型 * 7.2 增量模型 把瀑布模型的顺序特征与快速原型法的迭代特征相结合,将软件看作一系列相互联系的增量,在开发过程的各次迭代中,每次完成其中的一个增量。 7.3 快速模型 7.4 螺旋开发模型 7.5 迭代开发模型 7.6 敏捷开发模型 ![]() 在软件测试的实施中,针对于测试过程出现的问题,通过经验总结得到测试过程模型,旨在提高软件开发测试 过程中的效率与效果。 8.1 V模型 8.2 W模型 W模型,简称“双V”模型,即以开发主导的一个“V”,和以测试主导的另一个“V” - 为了克服V模型的缺点,引入了W模型。 9.1 软件质量 软件质量, 就是软件与明确地和隐含地定义得需求相一致得程度。 9.2 质量模型标准 对于测试作用:提供测试设计的不同角度和思路 ISO/IEC 2501010.1 生活中的测试用例 比如:购买一台电脑或者手机,如何验证其是否满足自己的需求? 是否能够正常的开关机 、运行速度是否快、屏幕大小是否适合、存储空间是否满足要求 ...... 例如:购买手机是否满足其中两个目标 10.2 测试用例的定义 测试用例又叫 test case,是为了某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定的需求。(验证产品功能实现是否满足用户需求) 10.3 测试用例的八大要素 * 用例的设计者 用例设计日期 对应的开发人员:出现Bug后能及时找到相应的开发人员进行修复 测试结果:执行测试用例后的实际结果,包括:pass、fail、block 测试类型 测试模板: 10.4 测试用例设计原则 明确性 测试人员要尽量避免测试用例存在含糊的因素,在测试过程中,测试用例的测试结果是唯一的。代表性 尽量将具有相似功能的测试用例抽象合并,功能相似的用例要合并。简洁性 测试用例简洁,可读性良好,测试过程目的明确,测试结果唯一。10.5 测试用例的编写流程 需求分析 --> 提取测试点 --> 测试用例设计 --> 测试用例评审 --> 修改测试用例 二、测试用例设计方法 1.等价类划分法 * 定义 等价类划分法将所有可能输入的数据,即程序的输入域,划分为若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。使用等价类划分方法设计测试用例需要经历划分等价类和选取测试用例两步,他将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。作用 从穷举测试中解放出来,找到具有共同特性的测试输入子集。类型划分 有效等价类 对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。(满足需求)无效等价类 对于程序的规格说明来说是不合理的、无意义的输入数据构成的集合。(不满足需求)基本步骤 1.需求分析2.划分等价类 有效等价类无效等价类 规则(需求本身)长度类型是否为空(必填项)是否重复3.设计测试用例 尽可能多的覆盖尚未覆盖的有效等价类仅覆盖一个尚未覆盖的无效等价类 应用场景 针对需要数据量大,有测试数据输入的地方 典型代表:页面级的 输入框 类测试 案例 案例1:验证QQ账号的合法性案例2:验证某城市电话号码正确性案例3:新浪邮箱登录 案例1:验证QQ账号的合法性,要求 6-10 位 自然数 案例2:验证某城市电话号码正确性 区号:非空或者是三位数字 前缀码:非“0”且非“1”开头的三位数字 后缀码:四位数字案例3:新浪邮箱登录 要求输入(邮箱名)@sina.cn 和 (密码) 邮箱名:4-16 位 字符,支持英文、数字、下划线(不能全是数字或者下划线) 密码:6-18 位 字符 两位数加法器: 案例1:字符属性设置程序 窗体中有多个控件(字体、字符样式、颜色、字号),每个控件有多个取值 字体:仿宋、楷体、华文彩云 字符样式:粗体、斜体、下划线 颜色:红色、绿色、蓝色 字号:20号、30号、40号问题:共有 3^4=81 种 组合,此时不可能一一列举出来 解决方案:使用 正交表 或 allpairs 工具 第一种:使用 正交表 第二种:使用 allpairs 工具 第一步:将数据填到excel表格中 第二步:将表格中的内容(包括表头)粘贴到txt文本中(比如a.txt) 第三步:通过allpairs命令,生成测试用例 第四步:核对结果,生成的 b.txt 内容如下 案例2:用户筛选按钮 假设有一个用户筛选功能,有3个输入分别是体型、年龄段、性别, 体型有3个取值:胖、适中、瘦; 年龄段有3个取值:老人、青年、儿童; 性别有2个取值:男,女;使用阶段 集成测试 系统测试 验收测试使用场景 对于多个功能之间的组合逻辑测试,可以使用场景法。基本步骤 1.需求分析 2.绘制流程图 矩形:表示步骤,比如操作、输入、输出结果菱形:表示判断条件箭头:表示流向 3.遍历场景,提取测试用例(一条流程路径就是一条测试用例) 覆盖正常的路径覆盖分支路径 流程图常用符号![]() ![]() 测试用例方法设计总结 具有输入功能,但输入之间没有组合关系 【等价类】 输入有边界 如长度、类型 【边界值】 多输入、多输出、输入与输入之间存在组合关系、输入与输出之间存在依赖或制约关系 【判定表、因果图】 用最少的测试用例获得最大测试覆盖率时 【正交法】 多个功能的组合测试 【场景法、流程图】 最后推荐使用【错误推测法】来进一步补充测试用例 |
CopyRight 2018-2019 实验室设备网 版权所有 |