一、软件测试的目的和原则

目的:验证软件有或没有问题
原则:以客户为中心,遵循软件测试的规范、流程、标准和要求

  • 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
  • 成功的测试方案是发现了至今为止尚未发现的错误的测试方案
  • 测试并不仅仅是为了找出错误,通过分析错误产生的原因、阶段、及错误发生的趋势,(1)帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错、改进(2)帮助测试人员设计出有针对性的测试方案,改善测试的效率和有效性(3)让开发人员指导错误产生的重灾区,加强自测试(4)让客户清除我们专业的质量保证团队,可以向他们提交一份满意的答卷
  • 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法
  • 根据测试的目的不同,还有回归测试、压力测试、性能测试、安全测试等。分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等
  • 软件测试为了建立软件的信心
  • 从测试的目的出发,大概可以分为两类:为了验证程序能正常工作的测试,为了验证程序不能正常工作的测试

二、什么是需求

满足用户期望和正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求

1.IEEE定义:

软件需求是(1) 用户解决问题或达到目标所需条件或权能(2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能(3)一种反映上面(1)或(2)所述条件或权能的文档说明,它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制

2.用户需求

可以简单的理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务,该需求一般比较简略

3.软件需求

或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能,是测试人员进行测试工作的基本依据

三、什么是bug

1.软件错误的一般定义

程序与规格说明之前不匹配,当没有需求规格说明书时,判断标准以最终用户为准:当程序没有实现其最终合理预期的功能要求时,就是软件错误

四、什么是测试用例

测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据。预期结果等要素

测试过程中可能会遇到以下问题:
不知道是否全面的测试了所有功能–测试的覆盖率无法衡量–对新版本的重复测试很难实施–存在大量冗余测试影响效率,测试用例的产生就是为了解决上述的问题

五、开发模型和测试模型

随着软件工程学科的发展,人们对计算机的认识逐渐深入,软甲工作的范围不仅仅局限在程序编写,而是扩展到了整个软件生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运行维护,直到软件被更新和替换新的版本,软件工程还包括很多技术性的管理工作,例如过程管理、产品管理、资源管理和质量管理,在这些方面也逐步的建立起了标准和规范

1.软件的生命周期

分为6个阶段:需求分析、计划、设计、编码、测试、运行维护

2.瀑布模型(Waterfall Model)

瀑布模式是其他模型的基础框架,瀑布模型的每一个阶段都只执行一次,因此是线性顺序的软件开发模式,在瀑布模型中,测试阶段处于软件实现后,这意味着必须在代码完成后有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷直接遗留给用户

优点

  • 强调开发的阶段性
  • 强调早期计划及需求调查

缺点:

  • 依赖于早期的唯一一次需求调查,不能适应需求的变化
  • 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程
  • 风险往往延迟至后期的测试阶段才显露,因而失去及早纠正的机会

3.螺旋模型

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式,螺旋模型是渐进式开发模型的代表之一,这对于那些规模庞大、复杂度高、风险大的项目尤其合适,这种迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代,因此,回归测试的重要性就不言而喻了

优点:

  • 强调严格的全过程风险管理
  • 强调各开发阶段的质量
  • 提供机会检讨项目是否有价值继续下去

缺点:

  • 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求,这需要人员、资金和2020年时间的投入

4.增量、迭代

增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今最流行的软件工程最佳实践之一,增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发,因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改,构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密的协作
增量是逐块建造的概念,例如画一幅人物画,我们可以先画人的头部,再画身体、再画脚…迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色

5.敏捷

敏捷开发有很多只能够方式,其中scrum是比较流行的一种
(1)scrum里面的角色
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成

  • 其中product owner负责整理user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • scrum master 负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。
    (2)迭代开发
    与瀑布不同,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4周,参与的团队成员一般是5到9人,每期迭代要完成的user story是固定的,每次迭代会产生一定的交付
    (3)scrum的基本流程
  • 产品负责人负责整理user story,形成左侧的product backlog。
  • 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
  • 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计。
  • 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
  • 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

(4)敏捷中的测试
挑战1:轻文档
挑战2:快速迭代

  • 测试工作的核心内容是没有变的,就是不断的找bug,只是要调整好自己的心态,一切以敏捷的原则为主
  • 测试人员不能依赖文档,测试用例作用减弱,更多的采用思维导图、探索性测试(强调自由度,设计和执行同时执行,根据测试结果不断的调整测试计划)、自动化测试
  • 敏捷讲求合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究bug出现的原因

6.软件测试V模型


软件测试V模型的提出是为了改进软件开发的效率和效果,是瀑布模型的变种

  • 明确的标注了测试过程中存在的不同类型的测试,并且清除的描述了这些测试阶段和开发过程期间各阶段的对应关系
  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求
  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试

7.软件测试W模型

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动,W模型由两个V字模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系
  • W模型特点:测试的对象不仅是程序、需求、设计等主要测试,测试与开发是同步进行的
  • W 模型优点:有利于尽早的全面发现问题,例如:需求分析完成后,测试人员就应该参与待对需求的验证和确认活动中,以尽早的找出缺陷所在,同时,对需求的测试也有利于即使了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度
  • 局限性:需求、设计、编码等活动被视为串行的,测试和开发也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作,无法支持敏捷开发模式,对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑

六、配置管理和软件测试

1.什么是配置管理

配置管理是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些被标识的软件配置的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程

2.软件配置管理的应用

软件开发过程中会产生大量软件产品(包括文档、源代码和数据等),且这些产品之间存在并联关系,同样软件产品也会发生变更,从而产生许多版本,软件开发小组必须清晰的知道会有哪些产品、这些产品会有哪些不同的形式和版本,开发小组必须清晰的知道如何将产品的变更通知给受影响的小组,如果不能有效的了解软件产品及其变更,开发小组将很难组装这些软件产品,很难得到所需的软件产品

3.实施软件配置管理的好处

实施软件配置管理(SCM),至少能给项目团队带来如下好处
(1)能够对项目中的文档、代码等的变化进行有效管理
(2)能够方便的重视某个文件的历史版本
(3)能够重新编译某个历史版本,使维护工作变得容易
(4)能够使异地多团队开发、并行开发成为现实
(5)从公司级看,实行统一的配置管理流程可提高项目组间人员流动时的工作效率

4.配置管理与软件测试

测试人员是SCM的参与者,有些公司也会把测试人员和配置管理员合二为一,如果配置管理流程不规范,或者没有遵循一定的配置管理流程进行软件测试活动,也可能导致很严重的后果
假设开发人员修正了一个bug,然后找测试人员过去讨论,测试人员在开发人员的机器上重新测试了一下,发现Bug没再出现了,修复了,这时候,如果测试人员把缺陷关闭了,则可能导致缺陷莫名其妙的在用户那边又出现了,其实,原因可能仅仅是开发人员把这个Bug修改的代码没有提交到配置管理数据库中,但是作为测试人员有没有责任呢?当然有,因为测试人员也没有按照规范的配置管理流程执行测试,测试人员应该从配置库取源代码编译后再测试,只有看到新的构建版本不再出现那个bug,才能把缺陷库中的Bug关闭

软件测试---概念篇相关推荐

  1. 软件测试 | 概念篇

    软件测试 | 概念篇 一.软件测试的目的和原则 二.※ 什么是需求 三.※ 什么是bug 四.※ 什么是测试用例 五.※ 开发模型和测试模型 5.1 开发模型 5.2 软件测试 V 模型 5.3 软件 ...

  2. 软件测试- 基础篇 用例篇铺垫案例

    文章目录 回顾上篇博客[软件测试 - 概念篇](https://blog.csdn.net/DarkAndGrey/article/details/125281778?spm=1001.2014.30 ...

  3. 【软件测试】基础-概念篇

    软件测试基础-概念篇 记录 - 慕课网 imooc 软件测试基础-概念篇 简介:系统介绍什么是软件测试,从软件测试的定义.原则以及测试阶段.测试模式.测试手段和测试类型分别详细说明软件测试中的各种测试 ...

  4. 软件测试基本功之——概念篇

    <易经>曰:无极生太极,太极生两仪,两仪生三才,三才生四象,四象生五形,五行生六合,六合生七曜,七曜生八卦,八卦生万物.实乃可以说出了万物由来的至尊道理,由此我们可以推断出世界万物的生成都 ...

  5. 软件测试(二)——软件测试基础篇

    软件测试的生命周期 软件测试的生命周期:需求分析→测试计划→ 测试设计.测试开发→ 测试执行→ 测试评估 软件测试&软件开发生命周期 需求阶段--测试人员了解需求.对需求进行分解, 得出测试需 ...

  6. 【学习笔记】 科目一之概念篇

    [学习笔记] 科目一之概念篇 概念题方法 1)抓重点:科目一设计知识范围太广,不要妄想所有知识点都复习到,这是不可能的,我们的目标是45分几个而不是考高分,复习时间有限,所以要学会抓重点,比如法律条文 ...

  7. ORM查询语言(OQL)简介--概念篇

    相关文章内容索引: ORM查询语言(OQL)简介--概念篇 ORM查询语言(OQL)简介--实例篇 ORM查询语言(OQL)简介--高级篇:脱胎换骨 ORM查询语言(OQL)简介--高级篇(续):庐山 ...

  8. android 电容屏(二):驱动调试之基本概念篇

    关键词:android  电容屏 tp 工作队列 中断 多点触摸协议 平台信息: 内核:linux2.6/linux3.0 系统:android/android4.0  平台:S5PV310(sams ...

  9. 人工智能 | 自动驾驶与人工智能前沿研究报告(概念篇)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 ================= ...

最新文章

  1. 瓦力机器人故障维修_大眼萌!5G巡逻机器人亮相乌镇,24小时值守互联网大会...
  2. 高质量程序设计指南c++/c语言(17)--函数
  3. Scala 空返回值Unit
  4. php memcached get,PHP Memcached操作类
  5. Django开发社交类网站必备的10个第三方应用
  6. SVN Error: Can‘t connect to host xxxxx‘: 由于目标计算机积极拒绝,无法连接,的最快解决办法
  7. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第18篇]画一个/描述ECB,CBC,CTR模式的操作
  8. Refusing to install package with name “vue-i18n“ under a package
  9. 【C语言】分别用下标法,地址法和指针法输出数组中的全部元素
  10. 大数据技术周报第 005 期
  11. 根据word模版导入word中用户填写的数据
  12. 河南成考计算机专业学校,河南成考能报哪个大学
  13. MYSQL到ORACLE法式迁徙的注意变乱
  14. 一则 Oracle 和 SqlServer 语法区别 (原创)
  15. 工作流分支走向流线条件配置
  16. 多商户Saas模式云进销存系统,源码分享
  17. Matlab绘图模板
  18. apmserv5.2.6 mysql启动失败_win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法...
  19. Python爬虫:和我一起学习scrapy(三)
  20. 免费个人网页制作指南Dreamweaver教程

热门文章

  1. 怎样上幼儿园电脑计算机课,幼儿园电脑课堂常规要求教案
  2. c语言知识小组策划书,小组学习计划.doc
  3. day02 linux常用命令
  4. 2000坐标系xy坐标几位_什么是CGCS2000坐标系
  5. 法人的法定代表人怎样确定
  6. stacktrace not available;stata报错:stacktrace not available是什么意思,如何解决?
  7. 基于 js 制作一个倒计时
  8. 竞赛水题:通关密码。
  9. 【AI绘画】——Midjourney关键词格式解析(常用参数分享)
  10. Mars3d自定义聚合点的图标样式