测试做到什么程度并没有一个固定答案。只要满足两个显式条件和一个隐含条件就要一直进行。
显式条件:
- 项目风险
- 项目经费
隐含条件:
- 老板们从当前的测试结果已经获得了足够的信心,或者彻底摧毁了信心。只要他们还在犹豫咱就得继续干活。
测试的原则🌟
测试只是展示缺陷
测试只能表明缺陷存在,却不能证明没有缺陷。测试能降低未发现缺陷留存的概率,却 不能证明软件是绝对正确的。 正如某些数学命题,你可以穷举 1-n,证明其正确,却依然无法证明对于 n+1 仍然正确。
**穷尽测试是不可能的**
测试所有的输入和条件组合是不可能的,除非是极其简单的情况。可以取而代之的是基 于风险和优先级的测试。 当不懂装懂的老板要求你彻底测试一个软件的时候,这是你反驳的最好支持,当然要说 的委婉一点。早期测试
要较早发现缺陷,就要在软件周期尽可能早的时候开始测试,而且要专注于已定义的测 试目标。 尽早开始测试!这句话估计早就把大家的耳朵磨起茧了。为什么要早?因为越早发现问 题,解决的代价就越小。
缺陷簇生
要对缺陷发现率高的模块投入更多的测试。少量的模块往往隐藏了大部分的缺陷。 这不仅仅是所谓的物以类聚。缺陷发现率高的模块往往于需求不清,设计不当,编码复 杂度高等内在原因关联,所以从风险的角度来看必然较高,多花些时间绝对值得。
杀虫剂悖论
相同的测试再重复多次后就无法再找到缺陷了。要克服“杀虫剂悖论”,测试用例要不断评审修改,不断添加新的和不同的测试,就有可能找到更多缺陷。 随着对系统的加深理解,必然会有更多的测试用例产生。另外缺陷本身也是新用例的很 好来源。
测试是上下文相关的
测试在不同上下文环境中的执行是不同的。比方说 安全关键系统 (safety critical system)和电子商务网站的测试方法就有很大不同。 这个原理相对难理解。这里其实强调的是不能用相同的态度和手段来测试不同类型的系 统。安全关键系统的概念要到高级大纲中才出现,指的是对系统安全要求苛刻的系统, 较之一般的电子商务系统的测试要求更为严苛。
无错谬论
假如建立的系统不稳定或不能满足用户需要和期望,那么发现和修复缺陷就毫无帮助了。 缺陷数量往往用来评估某软件的质量,但要是系统本身背离了用户要求,那就算缺陷再 少也没用,因为没有人会去用它。所以测试时要注意验证(verification)和确认(validation)的区别。需求规格说明和其他文档只是需求的不完全载体。文字说明必然有遗漏和偏差, 而各人的理解更有可能出错。要不断通过各种途径保证所生产的的确就是用户需要的。 常用的方式就是邀请领域专家或用户尽可能多地参与到开发活动来,特别是需求评审和 演示(Demo)。
测试的标准
- 测试的标准是用户的需求。
所有的软件测试都应该追溯用户的需求,测试人员要始终站在用户的角度去看问题、去判断的软件缺陷的影响,系统最严重的错误是那些导致程序无法满足用户需求的缺陷。
测试主要步骤
- 计划与控制
- 分析与设计
- 实施与执行
- 评估出口准则和报告
- 测试结束活动
测试流程
- 熟悉产品/项目
- 需求评审
- 测试需求
- 测试计划
- 测试用例
- 预测试
- 第一轮测试
- 第二轮回归测试
- 第三轮测试
- 测试报告
- 测试总结
为什么要避免测试自己的程序?
由于心理因素,人们潜意识都不希望找到自己的错误。基于这种思维定势,人们难于发现自己的错误。
软件测试的要素
- 质量:
软件质量是软件测试的目标,也是软件测试工作的中心,一切从质量出发,也就是一切从客户需求出发。任何违背质量的东西都是问题,测试就是要找出这些问题。
- 人员:
人是决定的因素,测试人员的态度、素质、能力决定着测试的效果,对测试产品的质量也有很大的影响。测试人员因素包括测试组织结构、角色和责任的定义。
- 技术:
软件测试技术,包括方法、工具。
- 资源:
主要是指测试环境中所需要的硬件设备、网络环境,甚至包括测试数据。另外一个重要因素就是测试时间,时间也是测试的资源,但测试人员不能看做资源,每个人的能力千差万别,不同的测试人员担任不同的角色,不能相互代替。这也是软件图书的经典之作——《人件》的作者反对将人作为资源对待的原因。
- 流程:
从测试计划和测试用例的创建、评审到测试的执行、报告,设定每个阶段的进出标准。
软件质量
软件产品质量评价国际标准ISO 14598
把软件质量定义为:软件特性的总和,软件满足规定或潜在用户需求的能力。上述定义反应如下3个方面的问题:
- 软件需求是度量软件质量的标准;
- 软件人员必须遵循软件过程过程的规范;
- 如果软件只是满足规定的需求,而不能满足可能存在的隐含需求,软件质量也不能保证。
软件团队的责任
- 发现软件程序、系统或产品中“所有”的问题
- 尽早地发现问题
- 督促和协助开发人员尽快地解决程序中的缺陷
- 帮助项目管理人员制定合理的开发计划
- 对缺陷进行跟踪、分析和分类总结,以便让项目的管理人员和相关的负责人员能够及时、清楚地了解产品当前的质量状态
- 帮助改善开发流程、调高产品开发效率
- 促进程序编写的规范性、易读性、可维护性等
缺陷发现率
缺陷发现率DDP是另一个衡量测试工作效率的软件质量成本的指标。
缺陷发现率DDP=Bugs(tester)/ (Bugs(tester)+ Bugs(customer))
缺陷发现率越高,也就是测试者发现的错误多,发布后客户发现的错误就越少,降低了外部故障不一致成本,达到节约总成本的目的,可获得较高的测试投资回报率。
测试分类
黑盒测试
- 又称功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试,通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。
- 方法:
- 功能划分
- 等价类划分
- 边界值划分
- 因果图(鱼骨图)
- 错误推测
白盒测试
- 白盒测试也称结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行。
- 方法:
对应于程序的一些主要结构:语句、分支、逻辑路径、变量;
- 语句覆盖方法
- 分支覆盖方法
- 逻辑覆盖方法
单元测试
- 定义: 又称模块测试,是针对软件设计的最小单位程序模块进行正确性检查的测试工作;可以从程序的内部结构出发设计测试用例,多个模块测试可以平行地独立进行测试;
- 目的:发现模块内部可能存在的差错;
- 内容:模块接口测试(数据流入流出)、局部数据结构测试、路径测试、错误处理测试、边界测试。
- 步骤:利用设计文档设计测试用例;创建被测模块的桩模块或驱动模块;利用被测试模块、驱动模块和桩模块来建立测试环境,进行测试。
集成测试
- 定义:又称组装测试或联合测试,在单元测试的基础上,将所有模块按概要设计和详细设计进行组装。
- 目的:发现模块连接中的接口可能存在的各种差错
- 内容:
- 穿越模块之间的数据是否会丢失;
- 一个模块组装后是否会对另一模块或其他模块存在影响
- 各个子功能组装在一起是否会达到预期的父功能
- 全局数据结构是否有问题;
- 单个模块的错误累积起来是否会放在。
- 组装方法:包括一次性组装方式、增殖式组装方式两种组装方法
- 完成标志:成功地执行了测试计划中规定的所有测试用例;修正了所发现的错误;测试结果通过专门小组的评审
系统测试
- 目的:验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试
- 测试内容:在真实或模拟系统运行环境下,检查完整的程序系统能否和系统(硬件设备、网络、系统软件)正确配置、连接,满足用户需求
验收测试
- 测试目的:在用户环境中进行测试,以确定系统和产品是否能够满足合同或用户所规定的需求
- 测试内容:根据任务书或合同、供需双方约定的验收依据文档进行对整个系统的测试与评审,确认是否接收或拒绝系统
Alpha测试
- 属于验证测试。模拟运行。由开发人员与测试的测试人员。
Beta测试
- 属于验收测试。由软件的最终用户在一个或多个用户场所来进行的,开发者通常不在现场,用户记录测试中遇到的问题并报告给开发者。
静态测试
- 静态测试又称为静态分析技术,不执行被测试软件,对需求分析说明书、软件设计说明书、源程序做结构检测、流图分析、符号执行等找出软件的错误。
动态测试
- 通过输入一组预先按照一定的测试准则构造的实例数据动态运行程序,而达到发现程序错误的过程。
如何进行单元测试
- 完成最小的软件设计单元——模块验证工作。
- 确保模块的正确编码
- 使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内错误。
- 通常情况下面向白盒的
- 对代码风格和规则、程序设计结构、业务逻辑等进行静态测试,及早地发现和解决不易显现的错误。
- 单元测试的内容
- 接口测试
- 内部数据结构
- 全局数据结构
- 边界
- 语句覆盖,错误路径
自动化测试
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-1713010008241)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-ZywDzjkN-1713010008241)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!