您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 业务知识 > 正文

软件测试的发展阶段

发表于:2017-02-07 作者:网络转载 来源:

  20世纪上叶的某一天,我们的超级美女程序猿“葛丽丝·霍波”在超级计算机的大house秘密的进行一项最为军事系统开发调试时,发现程序未能按照自己的设想给出预期的结果,经过了辛苦的排查,发现有只飞蛾被夹扁在继电器触点中间,这只飞蛾就是引起后续行业巨变的那一只“飞蛾”。从此BUG诞生,预示着软件测试大潮的到来。
  在美丽的“葛丽丝·霍波”发现第一只飞蛾之后,为了避免另外一只飞蛾进入到计算机内部进行约会,后面再程序正式的交付之后,开始了程序的调试工作,这就是软件测试的前身。这个时期软件测试是为了证明程序是正确的而存在。
  1972年在北卡罗来纳大学举行了首届软件测试正式会议。软件测试从此刻起正式作为一项工作而独立出来。而针对后续的发展,这里就不在罗列,如有兴趣的朋友,可以看下另外的一篇文章。关于软件测试历程的说明。
  从软件测试的发展历程和近几年的发展趋势,可以看看到软件测试正在向系统化,统一化,智能化方向去发现,个人根据个人对软件测试行业的理解(参考其他资料),将软件测试的发展历程归纳为以下五个阶段:个人英雄阶段、团队配合阶段、过程成熟度阶段、智能化测试阶段、以及第五个阶段“无”。
  个人英雄阶段
  在软件工程之前,软件规模较小,开发&测试人员独立完成软件的编写和测试工作,此时测试人员可能就是直接有开发人员担任,此时主要已调试+运行测试为主,手工测试阶段,此时的测试过程较为混乱,往往是开发完成一个软件后,交给测试人员进行测试,测试拿到软件后,根据自己的理解和个人的工作经验对软件进行检查,而最终的目标就是发现缺陷,所以这个时期的软件测试的质量一般是看个人发现的缺陷数,但是对软件的整体质量是没有办法进行衡量的。
  团队配合
  随着软件工程的提出和软件系统的复杂度的提升,软件内部逻辑越来越复杂,软件代码行也程指数级增加,这个时候如果再有程序员兼职进行软件测试,明显会出现纰漏,所以这个阶段开始,软件测试由专业的测试人员来担任,测试人员需要更强的罗辑思维能力,更敏锐的洞察力,更深的行业知识,更广的业务知识。从这里开始,软件测试正式作为一个单独的行业从软件工程里面区分开来,软件测试也随着各种实践而发扬光大。
  随着系统复杂度的提升,每个人对系统的质量都没有十足的把握,而且缺陷一定会存在系统中,所以这个阶段的测试,主要是证实软件做了该作的事情,不做不该做的事情,给团队以信心。而随着团队的扩大,测试也成立独立的团队,这个时候,如何面对复杂的系统,保障系统的质量,而成为团队难题,而不在是某个人的事情,这个时候,测试的问题上升到了团队问题,为了解决该问题,从软件工程出发,按照工程化的基本思想,按照行业CMMI标准进行分工协作,同时为了更好的节约人力而开始使用自动化,采用自动化回归方式,并将各个过程中的数据进行记录和分析,尝试使用数据的方式对软件系统进行评估。目前绝大多数的公司处于该阶段。
  成熟度全过程控制阶段
  该阶段是团队配合阶段后续的继续发展的阶段,是项目工程更深入发展的阶段,也是目前的阶段一部分测试前言所在的阶段,该阶段软件工程更是爆炸式的增加,各种第三方组件、第三方系统的集成,让系统的复杂度更一步提升,在自有软件还为清楚的条件下,又加入第三方系统或软件,这种情况下,复杂度可想而知,对质量的要求,对测试人员的要求更高。
  该阶段为了更好的控制,而主导全过程的控制,而且根据测试的特点,使用到特定的测试过程管理规范,使用现有的TMMi/TPI体系或者后续更适合的体系进行全面的过程管理和控制,试图通过过程的全管理,讲所有的问题都扼杀在摇篮中。为了达到该目的,这个阶段,更为专业的工具随即而出,有代码扫描工具,有性能、安全测试工具等各种工具,测试通过分析这些数据收集的数据,通过分析,试图使用各个工具的返回数据去度量软件的质量,这个阶段的软件质量真的可以度量吗?不尽然。
  智慧测试阶段
  这个阶段目前是少数顶尖的公司正在努力的方向,这个阶段对原有的测试的思维是一个大大的跨越,这个阶段主要采用大数据的思维将软件本身、人本身、过程进行多维度的数据整合,做到真正的数据量化一款软件或者产品的质量,软件质量在这个阶段才是能够真正使用数据进行量化。
  这个阶段数据收集和分析将是一个重点,而为了获得对应的数据,需要团队制度、过程的规范、行业的数据透明化等相关的行业制度或者管理制度进行相配套的建设。比如我使用java,基于Netty服务框架进行开发,这个产品的质量就直接和你使用的Netty质量有直接关系,同时也你这个实地的开发团队的每个人的开发水平,和这个团队的架构师水平,这个团队的管理模式、这个团队使用的java版本都有直接的关系;在智慧测试阶段所需要做的就是Netty开发服务组件时,其他团队遇到的问题和现有的问题,开人员的技术水平等众多数据,通过这些数据和团队管理配合起来,量化产品质量。
  在这个过程,持续交付将成为基础,全面自动化测试将作为基层测试手段进行测试布局,所有的测试相关的工作已经可以使用工具完成,这个阶段的测试人员主要是针对问题进行分析、编写测试工具或者脚本,结果模型优化。
  无-测试干掉测试
  通过上述的4个阶段的发展之后,可以看到在最后一个阶段时,测试将主要的精力放在了工具编写、模型训练方面,这之后,还有“测试”这个行业吗?