软件测试发展简史

乘着互联网的封口,测试行业发展的也是如火如荼,很多科班/非科班的人员涌入这个行业。作为一名测试工程师,咱们先了解一下测试这个行业发展的历程,也方便对别人进行科普(侃大山)

测试工程师的主要职责是保障产品的质量,发现产品中的“bug”,bug这个词的来源有一则趣事。根据维基百科的记载,1946年,著名的计算机先驱 Grace Hopper女士在其参与的哈佛项目Harvard Mark II中,遇到了一项事故,有一只蛾子飞到了继电器上。后来这只蛾子被人们小心翼翼的取出来粘贴到了记录本上,如图所示,而Hopper女士也多次用bug来形容这次事故,慢慢的,人们开始习惯用“bug”代表系统中出现的错误和异常事件。

接下来,我们利用时间线,了解测试这个岗位,在职业发展上的一些重要里程碑。一开始,其实并没有专门的软件测试这个职业,而是很自然的,由开发人员自行承担了调试的任务,这就是软件测试的雏形。

1968年,NATO(北大西洋公约组织)提出”软件工程”概念,软件测试随之发展起来

1975年,John Good Enough和Susan Gerhart在IEEE上发表了《测试数据选择的原理》,软件测试被确定为一种研究方向

1979年,Glenford J. Myers的著名的《软件测试艺术》给出了测试代定义。Software testing is the process of running a program with the intention of finding errors”

1983年,Bill Hetzel在《软件测试完全指南》提出软件测试方法论,测试不只是发现问题,而是对软件质量的度量

20世纪90年代,软件测试体系日趋完善。包括各种软件测试工具,自动化测试技术出现,软件测试系统的评估方法被提出,如测试成熟度模型(TMM),测试能力成熟度模型(TCMM)

同时,对于测试工程师个人而言,其职业发展的路线上,也逐渐形成了各具特点的多种发展分支,比如业务,自动化,测试工具,性能,安全,持续集成方向等。有趣的是,随着时代的发展,一个人不能够只承担其中一种角色,而是必须成为“斜杠青年",身兼多种角色,才是一名会受到市场欢迎的测试工程师。

问题来了,在测试行业里,想要站到时代的浪潮上而不是被后浪拍死,具体要学会何种技能呢?

测试技能分类

下面从两个角度,介绍测试工程师的技能点。假设我们现在在一个面试现场,当被问到,你在工作中,是通过什么方式测试产品的,那就是第一个角度的问题,当被问到为了保障产品的质量,具体做了哪些测试,那就是第二个角度的问题。细节如下。

测试方法有哪些

测试方法是测试的策略的具体实现,定义了如何执行整个测试过程。业界常见的测试方法如下:

1、静态测试:指代码review/代码走查

2、动态测试:需要人员实际执行测试用例

3、被动测试:不参与系统交互,例如分析离线日志

4、探索式测试:1984年,Cem Kaner提出。强调测试工程师的主观能动性,看重持续优化调整测试策略,而不会放太多精力在测试计划和测试用例上

5、白盒测试:关注程序内部的逻辑机构和工作方式,例如常见的API测试,测试覆盖率,静态代码扫描,故障注入

6、黑盒测试:不检查代码,只关注测试软件的功能

7、灰盒测试:了解程序内部结构,并在黑盒层或者User层执行测试用例。例如通过修改数据库,构造边界值/错误值来观察被测产品状态

测试类型有哪些

如果说测试方法偏重于描述一名测试工程师的经历,而测试类型则更偏重于是一种”赤luoluo“的衡量测试工程师的能力高低的方式。下面我们看看,测试工程师可能会被面试官问到的,会做哪些类型的测试,都有啥?

在这里我向大家推荐一个自动化学习交流群。交流学习群号:902061117 里面会分享一些资深架构师录制的视频录像

职业发展方向

在职业发展方向上,有3种路径。如前所述,在新时代背景下,这3种角色并不是泾渭分明,而是很可能一名人员,身兼多职。

业务测试

业务测试这条路径上,关注点在以业务为导向,提升职业技能。

一个典型的软件开发流程如图所示,测试工程师参与其中,体现价值的节点有

1、保障需求质量。包括需求合理性:有合理的业务场景;需求全面性:主分支的业务逻辑,旁路/异常分支

2、保障测试质量。要求测试工程师有:

熟练的业务知识:熟悉现有系统各个业务流程/准确判断新功能与系统其他模块的关系高质量的测试用例:测试用例的编写/评审/执行文档编写的能力:完善的测试计划/准确的BugList/各种类型的测试报告推进项目进度:跨团队沟通能力/区分测试用例优先级/评估版本收敛性/推进Bug解决

3、保障发布质量。要求测试工程师能够完成:

上线质量:上线后系统工作符合预期数据分析:基于线上数据评价上线的效果问题跟进:跟进线上问题

测试开发

发展到这条路径,需要测试工程师具备一定的编码能力,对计算机原理,常用的工具都要掌握到一定的程度。

测试管理

测试管理方向,是指对测试质量的全程把控。主要包括

协作和沟通。以业务为导向,突破职能束缚;资源协调团队协作,资源协调

介入软件生命全周期。包括了解各个阶段的进度;监控测试过程,及时发现风险;协助配合其他角色完成任务测试过程监控,协助配合他人完成任务

总结和改进:了解各个阶段的进度;测试过程监控,及时发现风险;协助配合其他角色完成任务

总结

本文介绍了软件测试这个行业的发展历史上的一些重要时间节点,以及常见的测试方法/测试类型及其定义。最后针对软件测试工程师这个行业,目前常见的三种职业发展路径做了一些探讨。期望可以帮助刚踏入这个行业的测试工程师们有一个全景的认识,已经成为”老鸟“的测试工程师也可以发表一些关于这个行业的思考。


最后: 给大家推荐一个 q 群:902061117 里面有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果对你有一点点帮助,各位的「点赞」就是小编创作的最大动力,我们下篇文章见!

好文推荐

2021软件测试工程师面试题汇总(内含答案)-看完BATJ面试官对你竖起大拇指!

什么样的人适合从事软件测试工作?

软件测试和软件开发哪个发展更好

那个准点下班的人,比我先升职了…

测试工程师的能力分类相关推荐

  1. 我又被开了?测试工程师核心竞争力几个方面,反之是你开的“他“......

    目录:导读 前言 一.测试策略的设计 二.测试用例设计 三.缺陷分析和定位能力 四.快速学习和总结能力 五.沟通协调和统筹能力 六.探索性测试思维 七.自动化测试 八.总结 前言 测试工程师核心竞争力 ...

  2. 2023年测试工程师核心竞争力?功能到自动化测试开发收割28k的offer...

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  3. 测试工程师必会能力之缺陷分析入门

    缺陷分析也是测试工程师需要掌握的一个能力,但是很多时候大家只记得要提交缺陷.统计缺陷情况,而忽视了缺陷分析. 其实每个项目的缺陷记录都是有很大价值的: 在测试阶段分析当前缺陷情况,及时发现存在的问题并 ...

  4. 测试工程师应该具备的软性能力有哪些?

    作为测试工程师,我们不仅要掌握相应的技术,还要了解一些必备的软性能力,这样才能在工作中游刃有余. 那么有哪些软性能力需要掌握呢,且听我细细道来. 注:仅为个人观点,个人体会,仅供参考. 1.沟通表达能 ...

  5. 测试工程师的分类有哪些?发展前景怎么样?

    测试工程师的分类: 1.功能测试工程师 2.性能测试工程师 3.安全测试工程师 4.自动化测试工程师 5.测试开发工程师 6.高级测试开发工程师 7.测试专家 层次: 第一层:1.功能测试,按需求检测 ...

  6. 测试工程师的分类和发展方向

    测试工程师的分类: 1.功能测试工程师 2.性能测试工程师 3.安全测试工程师 4.自动化测试工程师 5.测试开发工程师 6.高级测试开发工程师 7.测试专家 层次: 第一层:1.功能测试,按需求检测 ...

  7. 测试工程师到底需要具备哪些能力?

    测试工程师到底需要具备哪些能力? 小编最近看了许多测试论坛,上面有许多测试框架或者分享的测试技术,每个分享的内容涉及到的面都很宽,技术的不断革新,有些技术沉淀下来了,有些技术被业界抛弃,在技术飞速更新 ...

  8. 优秀互联网高级测试工程师应该具备的能力

    概述 在之前写的互联网高级测试工程师至少具备的能力一文中,提到了测试工程师至少具备的能力,但是并没有提到优秀测试工程师应该具备的能力,下文简单的谈一谈.当然这些全部都是我的个人理解. 能发现问题,还能 ...

  9. 测试工程师具备开发能力的重要性

    测试现状 为什么对测试工程师的要求在上升? 分析 技术要求 工具 测试的开发能力对测试质量的影响 分析 测试发展方向 测试现状 当前测试工程师做的主要工作是手动测试和编写测试用例:即便在一些公司,测试 ...

最新文章

  1. 记录一下g++的编译选项
  2. 使用迭代查找一个list中最小和最大值,并返回一个tuple。
  3. Netty详解(六):Netty 编解码技术
  4. 看懂堆排序——堆与堆排序(三)
  5. linux查看所有磁盘信息fdisk,Linux下添加新硬盘,分区及挂载 挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 可以看...
  6. python对象点方法_python面向对象知识点疏理
  7. Enum枚举类|注解Annotation
  8. bash实现自动补全
  9. chown、chgrp 更改文件属主属组
  10. 电脑窗口切换常用的快捷键有哪些
  11. 【游戏开发】游戏开发书籍汇总
  12. 天正双击墙体不能编辑_20个天正CAD常备技巧,助你神速绘图!
  13. CAD,SolidWorks相比ProE,UG等软件有什么区别?怎么下载?
  14. python和r哪个好学知乎_r语言和python学哪个?
  15. excel 多行 取消隐藏_如何在Excel 2013中隐藏和取消隐藏行和列
  16. 医院新手入门(一)--医保知识
  17. iOS之HomeKit
  18. ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
  19. lsdyna如何设置set中的node_list_如何理解vue的双向绑定
  20. 膨胀的计算机仿真,烧结水分迁移数学模型及计算机仿真

热门文章

  1. 微信公众平台开发教程第20篇-新手解惑40则
  2. Unity实现BStar寻路
  3. Vistor VTL 虚拟磁带机相关问题
  4. 公众号创建菜单报错40001及菜单出现在先前公众号上的问题
  5. android 修改充电图标,更换图标、修改充电音...这个软件把iPhone玩成了安卓
  6. 软件随想录:程序员部落酋长Joel谈软件(阮一峰译)-3
  7. Computer-System Structures八大思想
  8. mysql优化 个人笔记 (mysql锁机制 ) 非礼勿扰 -m10
  9. Linux节点释放,关于linux:如何释放Inode的使用量?
  10. 图论3之图的最短路径算法