【软件测试技术】初识软件、软件测试

一、软件

(一)什么是软件

软件是程序、数据和文档三者的结合

  • 程序
  • 数据
  • 文档

(二)软件的分类

按照层次划分:

  • 系统软件:跟计算机的硬件系统关系非常密切
  • 应用软件:如一些直播平台等

按照组织划分:

  • 商业软件:比如Windows(需要付费)、QQ等
  • 开源软件:源代码是对外开放的

按照结构划分:

  • 单机软件:只需要一台计算机就可以完成运行,如计算器、画图等
  • 分布式软件:比如说QQ,QQ聊天需要两台或者多台计算机完成

二、软件缺陷【bug】

(一)软件缺陷的定义

  • 所有不满足需求超出需求的都是缺陷
  • 没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷

官方定义的软件缺陷定义:

  • 软件未实现产品说明书要求的功能
  • 软件出现了产品说明书指明不应该出现的功能
  • 软件实现了产品说明书未提到的功能
  • 软件未实现产品说明书虽未明确提及但应该实现的目标
  • 软件难以理解、不易使用、运行缓慢或者(从测试的角度看)最终用户会认为不好

如何理解【从测试的角度看】:作为一名软件测试工程师,需要把自己当成一名普通的用户去看待这个软件。软件测试需要一定的灵活性。

(二)缺陷的由来

软件缺陷一般用两个单词来表示:

  • Bug
  • Defect

计算机软件第一夫人:Grace Hopper,发明了Cobo语言,也是找出电脑程序中第一个bug的女程序员。

三、软件测试

(一)软件测试的由来

软件测试起源于上世纪70年代中期:

  • 《测试数据选择的原理》
  • 《软件测试的艺术》

20世纪80年代早期,软件行业开始逐渐关注软件产品质量,并在公司建立的软件质量保证部门QA(QUALITY ASSURANCE)或SQA

(二)软件测试的定义

软件测试最主要的就是找出软件的缺陷

1.正向思维的定义

  • 出发点:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。

2.反向思维【抱着怀疑一切的态度对程序做测试】的定义

  • Glenford.J.Myers 《软件测试的艺术》
  • 出发点:测试是为发现错误而执行的一个程序或者系统的过程
  • 测试是为了证明程序有错,而不是证明程序无错误
  • 一个好的测试用例在于它能发现以前未发现的错误
  • 一个成功的测试是发现了以前未发现的错误的测试

反向思维:需求让你怎么干你偏不,比如说让输入6-18位数字,而在做测试的时候可以输入6位以下或者18位以上的数字或者是非数字,就是要有一种找茬的感觉。

3.IEEE【电气和电子工程协会】定义的软件测试

  • 在规定条件下运行系统或构件的过程:观察记录结果,并对系统或构件的某些方面给出评价。
  • 分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。

4.广义的软件测试

  • 软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试。

5.软件测试中两个特别重要的术语:

  • 确认:通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现
  • 验证:通过检查和提供客观证据来证实指定的需求是否满足。

(三)软件测试的目的

  • 以最少的人力、物力和时间找出软件中潜在个的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
  • 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误。
  • 采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。

(四)测试和调式的区别

  • 在主体、目标、方法和思路上有所不同

在这里插入图片描述

  • 测试是从已知的条件开始,使用预先定义的过程,并且有预计结果;调试是从未知的条件开始,结束的过程可能不可预计。
  • 测试可以计划,可以预先制定测试用例和过程,工作进度可以度量;而描述调试过程的持续时间相对比较困难。
  • 测试的对象包括软件开发过程中的文档、数据以及代码,而调试的对象一般来说只是代码。

四、软件危机和软件工程

软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

基于软件危机对于计算机发展的阻碍,1968年,在联邦德国召开的会议上,北大西洋公约组织的科学家讨论软件危机的问题。提出了软件工程,从此软件生产进入工程化时代。

软件工程包括两方面的内容:

  • 软件开发技术:软件开发方法学、软件工具和软件工程环境
  • 软件项目管理:软甲质量、项目估算、进度控制、人员组织、配置管理、项目计划

引起软件危机的主要问题是软件质量问题
软件工程主要解决的是软件质量问题
软件测试是软件质量管理体系中一个非常重要的手段

五、软件的生命周期

在这里插入图片描述

(一)软件生命周期模型

瀑布模型:最早提出软件开发的过程模型。

在这里插入图片描述

存在的问题:

  • 强调时间顺序的严格执行,前阶段不完成后阶段不开始。
  • 将测试放在了编码之后,没有体现出测试贯穿整个软件生命周期的原则(该原则可以避免需求的问题一直延续到代码完成才暴露或被发现)。
  • 瀑布模型不适应用户需求的变化。

优点:

  • 为项目提供了按阶段划分的检查点
  • 当前一阶段完成后,只需要去关注后续阶段

快速原型模型:应用领域越来越多

原型:简单来说就是一个模型。可以模拟操作、简单运行。

典型应用和工具:Axure【制作原型】

工作流程:

在这里插入图片描述

增量模型:

  • 把软件分割成独立的模块,可以分批次的完成和交付;
  • 缺点:打破原有的软件结构和框架可能会带来一定的风险。

增量模型一般会和迭代模型一起应用:

  • 软件增加了新功能;
  • 软件优化了…功能;
  • 软件修复了某些未知、已知的bug

迭代【功能一次一次的深入】模型:

  • 迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必须的所有其他元素,强调开发的深入。
  • 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。

迭代过程具有以下优点:

  • 降低了在一个增量上的开支风险;
  • 降低了产品无法按照既定进度进入市场的风险;
  • 加快了整个开发共工作的进度;
  • 迭代过程这种模式使适应需求的变化会更容易些。

在这里插入图片描述
需要注意的是:迭代模型最开始的版本就是可以运行的,然后一次一次的对功能进行深入

螺旋模型:

  • 螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。【引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失;螺旋模型更适合大型的昂贵的系统级的软件应用】

在这里插入图片描述
敏捷【快、灵活】模型:

  • 敏捷宣言,也叫做敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。

在这里插入图片描述

六、软件测试流程

在这里插入图片描述

七、软件测试过程模型

软件测试过程模型有下面几种:V模型、W模型、H模型、X模型,其中比较重要的是V模型和W模型。

测试过程的质量将直接影响测试结果的准确性和有效性。

(一)V模型

在这里插入图片描述

  • 揭示了开发过程与测试过程中各阶段的对应关系

缺点和不足:

  • V模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽略了测试对需求分析、系统设计的验证;
  • 需求的满足情况一直到后期的验收测试才被验证;
  • 没有体现出“尽早的和不断的进行软件测试”的原则。

(二)W模型

在这里插入图片描述

  • 由两个V字模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。

优点:

  • 测试的活动与软件开发同步进行
  • 测试的对象不仅仅是程序,包括需求和设计
  • 尽早发现软件缺陷可降低软件开发的版本

局限性:

  • 在W模型中,需求、设计、编码等活动被视为串行的,这样就无法支持灵活的迭代

(三)H模型

在这里插入图片描述

  • H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰的体现出来;
  • H模型揭示了一个原理:软件测试是独立的流程!
  • H模型指出软件测试要尽早准备,尽早执行;只要某个测试达到准备就绪点,测试执行活动就可以展开,并且不同的测试活动可按照某个次序先后进行,也可以反复进行。

(四)X模型

在这里插入图片描述

  • X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序.
  • X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方是往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。

补充知识点【重要】:

测试过程(工作独立性)【问:给下面四个选项对于工作独立性进行排序(由高到低)】
A.研发团队内部的测试岗位
B.企业内部的独立于研发部门的测试岗位
C.专门的测试外包公司的岗位
D.开发人员自己测试

C>B>A>D

八、软件测试过程理念

尽早测试

  • 测试人员早期参与软件项目【软件需求刚被提出就应该加入】
  • 尽早的开展测试执行工作

全面测试

  • 对软件的所有产品进行全面的测试
  • 软件开发及测试人员(有时包括用户)全面的参与到测试工作中。

全过程测试

  • 测试人员要充分关注开发过程【观察开发进度】
  • 测试人员要对测试的全过程进行全程的跟踪

独立的、迭代的测试

  • 测试活动是独立的
  • 测试活动应该是循环往复、不断的进行

思考题:
有一个加法计算器,可以进行任意两位整数的加法求和
(1)当能确定1+1 1+2 1+3 43+56这些数计算是准确的时候,还要不要去测试其他更多的数据?
(2)如果需要测试更多的,我们需要测试多少个?
(3)1+2计算正确以后要不要对2+1进行测试?

旺财加油!✨

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值