软件思想家 Gerald Weinberg 曾说过,“如果建筑师按照程序员编写程序的方式建造建筑物,那么飞来的第一只啄木鸟就会摧毁整个文明”。
这句话告诉我们:第一,程序员编写的程序不是很靠谱;第二,软件测试是多么的重要。
以前,软件行业没有软件测试的位置。后来,随着这个行业的发展,软件复杂度不断提升,分工越来越细,测试与开发相分离,软件测试逐渐成为独立岗位,企业也开始招聘软件测试工程师。
以微软为例,由于软件质量问题引发多次事故,1984 年,微软在各个部门内建立独立的测试组,把测试组从开发部门中分离出来。
为什么建立独立的测试组?据《微软的秘密》一书介绍,测试之所以独立存在有三条理由:
软件测试的独立,意味着它的重要性大大提升。
软件测试确保软件产品的质量,实现软件成功交付,保证绝大部分用户或客户满意。可以说,软件测试对软件质量发挥着至关重要的作用。
当今,谈起软件测试,很多人都有一些印象,比如觉得测试“入门门槛低,没啥技术含量”、“对公司来说不重要”、“操作简单,工作枯燥”等等。虽然这些印象不一定完全准确,但或多或少反映了这个行业存在的一些情况。
一名来自山西太原的开发者称,“公司赶上测试忙的时候,连产品和行政人员都会参与进来,作为初级测试人员承担部分工作”。
另一位来自上海的资深开发者表示,“我们只做功能性测试,即手动点按钮,没有自动化测试和性能测试。像 UI 自动化测试实施起来很难,因为 UI 一旦发生变化,你就要改脚本,并且还要花费很多时间和精力维护脚本。”
还有一位来自北京的开发者说:“公司测试部门人不少,与业务有很多隔阂,公司的很多测试主要针对历史生产系统。有些系统变更,我们会与测试打交道,如果出了问题,大家一起背锅。我们团队有四五个开发,一个测试,测试水平低,纯手工测试。”
即使同一个行业,不同企业的情况也是相差巨大。
以 Google 为代表的互联网巨头公司正逐渐推行“去 QE,开发自己测试”的全新模式。
大公司则从原来的“自动化测试为辅”变成“以自动化测试为主”,而中小企业使用最多的还是手工测试。但是,手工测试问题多,不仅效率低,而且效果不理想。
在这个行业,我们观察到:一方面,自动化测试得到越来越多的重视,企业对测试人员的要求已经从低端的功能性测试转变为更高级的自动化测试。另一方面,非功能性测试的需求不断增加,包括性能测试、安全测试等。此外,软件行业盛行的 DevOps 理念强调整个开发、测试和运维的连贯性。
有测试人员直言,“个人觉得,从初期的黑盒测试到后来要求灰盒和白盒测试,测试开始重视性能测试、安全测试。同时,UI 和接口自动化测试已经是常态。并且,软件对测试人员、测试平台的开发能力等方面都有挺高的要求。”
为什么会有这些变化?因为软件测试现今所处的行业已经发生改变——从传统模式演变到互联网模式。
何为传统模式?软件最早主要供企业内部使用,只要它具备一定的功能,能用就行,所以并未对用户体验有太多关注。
据飞算云智副董事长、总裁陈定玮解释,“以前,软件主要是功能的实现,其环境不是很复杂,既不会有很大的高并发,也不用玩转大量数据。因此,只要满足功能需求就行。”
而互联网模式在于,互联网发展起来后,软件变得越来越重要,甚至软件定义一切。并且,越来越多的软件开始向 C 端拓展,它要面对大量用户,导致容易出现高并发、安全等问题。因此,企业对软件质量的要求就变得非常高。
这就倒逼软件要改变,并且,从开发、测试到运维都应有相应的变化。然而,事实上,这一切并没有发生很大变化。
软件现在的生产依然跟传统的模式一样,企业要招聘大量工程师去开发软件,开发完成后,由测试人员进行测试。某种意义上,软件质量主要靠有经验的工程师予以保障。在陈定玮看来,“这就变得不可控制,因为每个人对每个东西的理解不一样。”
更重要的是,当今,越来越多的企业开始引入敏捷开发或 DevOps 模式,软件交付周期越来越短。并且,随着大数据、AI、云原生等技术的应用,软件复杂度不断提升。相应地,企业对测试人员的要求也越来越高。
随之而来的问题是企业招聘难,因为企业无法招到很多有丰富经验的工程师。即使招到资深技术人员,一旦离职,企业可能又面临挑战,一方面,交接工作难;另一方面,资深技术人员的工作经验无法传承给企业,知识无法沉淀到企业。
“以前,我们公司流传过一句话:开发多久,测试就要多久。如果开发三个月,那么测试就要三个月。这样,半年就过去了。因此,整个成本非常高。并且,产品、开发和测试人员的思维模式和视角不同,沟通难度不小,最终搞得大家怨声载道。"
关键是大家对需求的理解不同。研发人员对需求有一种理解,而测试对需求又是另一种理解。这就导致产品经理、研发和测试三方常常‘打架’。
事实上,测试人员最头疼的事就是“需求不明确,或者临时改需求,以及改了需求,只同步开发人员,不告知测试同学”。
能解决上述问题的工具可能就是全自动测试平台。据了解,它是飞算 SoFlu 全自动软件工程平台的一个组成部分,飞算 SoFlu 全自动软件工程平台是于 2020 年发布的新一代 JAVA 开发工具,截至目前已为包括医疗、金融、制造、零售等在内的八大行业的上百家机构提供了技术服务,被数千位专业人士使用体验。
令人印象深刻的是该平台为一家大型国有企业开发的“百万人使用级别的电商平台”项目,项目涵盖商品推荐、下单、客服、秒杀等众多单元。此前,该企业组建的数十人团队花费了一年完成开发,上线后却在功能性、稳定性、安全性等方面问题不断,且无法在短期内修复。在使用飞算 SoFlu 全自动软件工程平台后,该企业仅投入 6 位研发人员 45 天就高效完成开发、测试、联调、上线全流程任务。
飞算全自动测试平台
此次发布的全自动测试平台与全自动开发平台和全自动运维平台共同组成飞算 SoFlu 全自动软件工程平台,实现了软件工程开发、测试、运维全流程自动化,且自动测试平台随开发平台联动,开发测试一键关联,自动生成测试用例完成软件测试,1 人就即可完成开发、测试整套流程。
测试平台中点击“关联项目”
实现开发、测试一键协同
利用全自动测试平台,一方面,软件质量可以通过工具、流程和管理予以保障,而不再依靠有丰富经验的软件工程师。另一方面,可以进一步降低沟通成本,提升沟通效率。
以工具为核心,制订好管理流程,利用科学的管理方法,让测试人员操作工具时有规可循,按照步骤来,就不会犯错误,从而降低整个的管理风险和沟通风险。
并且,它还能解决企业招聘难问题。全自动测试平台降低了行业门槛,不仅普通测试人员能操作,而且连大学应届毕业生都能轻松上手。这样,企业招人相对更加容易。
依托平台的测试用例自动生成特性,用户通过录制工具把操作过程记录下来,平台自动识别相关接口并创建相应的测试用例场景。如此,测试人员无需编写脚本。
此外,全自动测试平台具备几大特性:一是测试生命周期管理。它提供测试用例管理、测试用例评审、测试计划跟踪和测试报告生成等测试生命周期管理相关功能。二是测试数据管理。全自动测试平台基于测试脚本与测试数据分离的思路,方便研发测试协同、方便自动化测试中的测试数据使用,支持 UI、接口等自动化工具中快速可重复地使用。三是精准回归测试。它在项目测试时,可以自动识别所有变动的接口,自动查找接口关联的所有测试用例,进行精准回归测试。
一名软件测试人员称,“我最期待的就是精准回归测试。如果能实现精准回归测试,那么在很大程度上,可以提高我的工作效率,节约时间。”
不管什么功能或特性,其目的是让软件测试变得更简单。陈定玮总结出其五个价值点:第一,统一测试规范;第二,可以管控测试流程,无需人操作,用工具、流程和管理来执行;第三,实现测试自动化;第四,可以量化测试成本;第五,可以建立测试的用例库,实现知识和经验的沉淀。他说:“所有的一切回归到一个点就是降本增效。除了满足所有测试的场景和功能外,整个产品的核心点在于做整个的管理,建立统一的标准。”
当然,仅仅解决测试问题还不够,“不管是测试,还是运维,所有的一切问题都源自开发。因为开发是本,是源头,所以要解决源头问题”。
陈定玮表示,“我们先推出开发平台,再推出测试平台。只有先把开发动作规范化,后面的测试才真正有用。真正的核心点是开发。因此,在开发过程中发现问题和解决问题,把动作前置,比如在开发中埋入与运维相关的技术,像链路追踪、服务发现等,在开发时就介入,而非到运维环境再去发现和解决问题。”
某种意义上,SoFlu 全自动软件工程平台的核心是自动化开发平台。它提供基于接口设计的可视化配置能力,通过组件可视化窗口界面以拖拽的方式开发接口。并且门槛低,配置灵活,普通开发人员也能轻松上手。
此外,平台提供大量组件库,比如 SQL 组件、事务组件、上传组件、下载组件等。支持用户根据自身需求开发自定义组件,丰富组件库,提高开发效率。
目前,多家企业在使用 SoFlu 全自动软件工程平台。
从众多企业的多个项目反馈上可以看出,SoFlu 全自动软件工程平台有两大价值。首先,它可以降低准入门槛。其次,让技术的事情变简单,对人的依赖性更小,从而降低人力成本和沟通成本。基于该平台,企业可以快速开发一个东西,极大提升效率。针对业务的快速变化和提出的新需求,软件可以快速迭代,降低试错成本,业务就能大胆创新。“以前,开发人员要用近一年才能开发出的软件或系统,现在,用这个平台可能只花两个月就能搞定”。并且,它不需要非常资深的开发者,普通开发者在经过培训后也能上手。“我们现在非常重视顶层设计,设计的越好,对需求的理解越到位,开发过程就越好。同时,出现 bug 的几率越低”。
领取专属 10元无门槛券
私享最新 技术干货