文章目录

  • 一、软件
    • (一)什么是软件
    • (二)软件的分类
  • 二、软件缺陷【bug】
    • (一)软件缺陷的定义
    • (二)缺陷的由来
  • 三、软件测试
    • (一)软件测试的由来
    • (二)软件测试的定义
    • (三)软件测试的目的
    • (四)测试和调式的区别
  • 四、软件危机和软件工程
  • 五、软件的生命周期
    • (一)软件生命周期模型
  • 六、软件测试流程
  • 七、软件测试过程模型
    • (一)V模型
    • (二)W模型
    • (三)H模型
    • (四)X模型
  • 八、软件测试过程理念

一、软件

(一)什么是软件

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

  • 程序
  • 数据
  • 文档

(二)软件的分类

按照层次划分:

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

按照组织划分:

  • 商业软件:比如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进行测试?

旺财加油!✨

【软件测试技术】初识软件、软件测试相关推荐

  1. 软件测试技术知识点汇总——软件测试的基本概念

    软件测试的基本概念 1.1 软件缺陷 软件缺陷的定义 软件缺陷的表现(准确定义) 软件缺陷产生的原因 软件缺陷的等级 1.2 什么是软件测试 软件测试的对象 软件测试的目的 衡量标准 软件测试的原则 ...

  2. 彻底搞懂 python 中文乱码问题_彻底搞懂 Python 编码 - sylan215的软件测试技术学习 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    因为中文的特殊编码,导致 Python2 和 Python3 使用过程中的各种编码问题,如果不清楚其中的关联关系,那么这就一直是个大坑,不是懵逼就还是懵逼,所以就目前碰到的情况彻底梳理下 Python ...

  3. 软件测试技术课程:软件测试流程

    软件测试流程如下: 测试计划 测试设计 测试执行 单元测试 集成测试 确认测试 系统测试 验收测试 回归测试 验证活动 测试计划 测试计划由测试负责人来编写,用于确定各个测试阶段的目标和策略.这个过程 ...

  4. 软件测试技术的发展史,软件测试的发展史

    软件测试的发展史介绍 20世纪六十年代(软件工程建立之前),为表明程序正确而进行测试 1972年,Bill Hetzel 在North Carllina 大学举行第一次以软件测试为主题的正式议会 19 ...

  5. 东软学院软件测试,软件测试技术与测试标准

    本教材面向软件测试的实际应用,系统阐述了软件测试所涉及到的基础理论.常用技术.过程管理和质量控制:重点讲解软件测试中的白盒测试技术.黑盒测试技术以及自动化测试技术,全面剖析了软件测试从单元测试阶段.集 ...

  6. 提升计算机软件测试效果,计算机软件测试技术总结.doc

    计算机软件测试技术总结 计算机软件测试技术总结 首先分析了应用计算机软件测试技术后对软件质量的促进作用,以及测试技术过程中可能遇到的问题.其次重点探讨软件测试的常用方法,从多个角度进行调控设计,从而使 ...

  7. 计算机软件测试方法及应用实践论文,计算机软件测试技术研究论文(2)

    计算机软件测试技术研究论文篇二 <计算机软件测试及其开发应用研究> [摘 要] 在软件编写中,许多编程员写完一个程序后已经很劳累,如果独自一个代码一个代码地检查,很容易查漏问题,而且面对枯 ...

  8. 【软件测试】测试经验:IT 软件测试技术系统化学习方法

    目录 一.IT 软件测试技术的介绍 (1)相关职称证书 ① 「中级」软件评测师 ②「高级」项目管理师 (2)背景 (3)作用 (4)行业应用 (5)技术概况 二.系统化学习的前置准备 (1)学习目标 ...

  9. 《软件测试技术实战:设计、工具及管理》—第2章 2.6节软件白盒测试

    本节书摘来自异步社区<软件测试技术实战:设计.工具及管理>一书中的第2章,第2.6节软件白盒测试,作者顾翔,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.6 ...

最新文章

  1. 通知 | 2020年度“RONG”奖学金入围答辩名单公布
  2. AI初创公司都去哪了?2019年科技公司“五巨头”收购盘点
  3. Shell中的数据重定向--输入/输出重定向
  4. jdk默认垃圾收集器
  5. WWF(Windows Workflow Foundation)开发环境的建立。 .NET 技术前瞻,WWF,Windows,Workflow,Foundation...
  6. 第K极值(Tyvj)
  7. 概率论-4.1 大数定律
  8. 也发一个自定义分页控件
  9. golang reflect
  10. Java中String.split和StringUtils.split性能比较
  11. AT指令联网---以鸿蒙开发板为例
  12. hibernate教程_Hibernate教程
  13. BOM offset client scroll
  14. PHP中判断变量为空的几种方法
  15. iF.svnadmin安装部署
  16. u深度重装系统详细教程_U深度U盘安装原版win7系统的图文教程
  17. 证书更新提示,网易漫画等...
  18. GSM系统的网络结构
  19. 二十一世纪大学英语读写教程学习笔记(原文)——3 - Stevie Wonder: Sunshine in the Shadow(Stevie Wonder——黑暗中的阳光)
  20. 流量卡之家:5G手机价格没那么“邪性” 门槛降低一半

热门文章

  1. 人机交互及用户体验、GUI思考
  2. 【docker ros】docker 开启自启运行容器中的程序
  3. cocos2dx图片闪亮_SassDoc 2-闪亮的流章鱼出来了!
  4. iphone开发中内存利用说明
  5. cloudflare解析域名+CDN
  6. 程序员怎么留住健康?
  7. collapsible data-collapsed Jquery-mobile动态设置
  8. 随笔集:H5如何对接原生app的方法
  9. 【hadoop生态之ZooKeeper】第一章Zookeeper概述【笔记+代码】
  10. 由sizeof 这个“管”,窥一窥C语言这只“豹”