《测试自动化美好的理想残酷的现实》

发表于:2021-6-09 09:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Testin云测试    来源:简书

分享:
  周震漪:大家上午好,我们测试同仁相聚北京,相聚Testin测试峰会是非常难得的事情。
  周震漪老师
  在座的有很多老朋友,也认识了很多新朋友,那么通过这次聚会我们大家做一次交流我这次过来也是向大家学习和充电的。
  至于我是谁并不重要,我刚才也讲了我是软件出来的老兵,我们是通过测试相互认识,通过测试我们又成为了好朋友,我们通过测试在各条战线上为测试努力奋斗。上面这些抬头都是浮云了,这是强加给我的。
  那么今天主要与大家共享三个主要内容:一个是测试自动化的收益和风险;另外是测试自动化的策略;第三个是策略自动化过程当中各工具的集成。
  测试自动化的收益和风险。测试自动化是我们整个测试里面的一个重要的环节,大家总是期待着自动化测试能够给我们带来收益,能够给我们带来丰厚的回报,通过自动化测试也确实能够真正实现了我们持续的回归,我们测试的高效,我们测试的有效性。但是测试真的能够满足我们的要求,给我们带来丰厚的收益没有?这是一个非常值得考虑的问题。
  今天我讲这些内容都是围绕着我们遇到的这些问题,以及我们在行业当中所遇到的这些问题和大家共享。为的是大家以后在做这些测试自动化过程当中尽可能避免这些问题。
  首先我们来看一下,这个是厨房,我们测试自动化和五星级厨房有什么关系?选这个图的时候我也发笑,了解我的时候都知道,我在国外开过软件公司,编写很多应用软件,其中一套应用软件就是餐馆管理系统,20多年一直在销售,前几年刚刚才终止。所以我对餐馆非常了解,我马上想到测试自动化和餐馆有没有密切关联。大家看最右边是一个接口,这是我们厨房和餐厅之间的接口。我们做的菜通过这个窗口送到了餐厅,我们的吃客期待吃到一盘美菜到我桌子上,但是一旦打开盖子看到菜可能发现很多问题,这个菜根本不是我定的菜,这是需求搞错了。这个菜看上去不错但是一吃味道不对,我前几天刚刚吃过不是这个味道,这是什么?不可持续的发生。类似问题有很多会发生的,那么我们知道做一道好菜非常不容易,这里涉及到方方面面,我们流程、菜谱、大厨。这里我们做了一个对应我们可以看一下,我们提供的菜系是中餐还是西餐,我们是广东菜还是川菜?这里会涉及到各个方法。
  确定了目标以后我们还需要制订我们可持续的发展,我们的菜谱,我们按照什么样的流程,我们需要一些什么样的佐料,我们加工多长时间?这和我们测试自动化对应的,这就是我们自动化的策略。
  有了菜谱我们还需要考虑我们采用什么样的食材、原料。我们不能说非常稀缺的这可能影响我们营业,我们需要统筹的考虑。对这些食材进行加工,这就是我们在做测试了,但是在这些食材加工是否方便,是否容易获得了,这跟我们测试自动化里所对应的我们的可测试性,我们测试的环境如何,大家不要小看可测试性,我们实际上很多问题到了测试这一关你发现的这些问题实际上早就应该解决的在我们需求和架构里举一个最简单例子,因为我做汽车领域测试比较多,我们自动化测试这一次通过了。过次又不通过了,然后查了半天最后发现可能我们状态变了。但是我怎么知道里面状态变了?没有途径和接口让我们阅读这些状态,为什么架构上不给我们留下接口?架构师就说你为什么不早点提出来?大家可以想像实际上有很多问题在前期都涉及到可持续性。
  另外我们这些食材和原料如何来加工?我们当然可以手工,但是还有一些材料我们手工速度太慢,效率太低,甚至有些材料根本无法用手工加工这时候我们就需要考虑采用厨房设备,这就是我们自动化测试里面的这些工序。我们不仅仅是自动化的执行工具,我们讲测试自动化里会涉及到非常广泛的工具。我们这些工具以及我们所提供菜系和材料决定了我们需要一个什么样的厨房,我们明火、暗火?需要烤箱还是蒸笼?我们冰柜、冷冻室等等,通风、防火更成为我们厨房,这就是成为我们测试自动化的架构。但是大家马上会想到了,我们有了这些以后还有一个非常关键非常重要的测试技术,我们烹调技术掌握在大厨身上,我们的人,我们哪怕是自动化测试了,我们不需要人测试执行,但是你的设计,我们按照什么样的测试原则?我们按照什么样测试技术?我们如何走这一条路?不走那一条路?这就构成了我们做一道好菜的方面。同样我们测试也包括自动化策略,自动化架构,以及我们对测对象可测试性研究,以及研究测试环境。
  在不同领域当中我们测试环境也不一样,汽车领域里我们需要去考虑硬件,软件等等,因为很多测试环境和我们实际环境有差异,我们不可能为了测试开车撞墙。
  接下来我们看一下测试工具成本收益和我们的风险,刚才讲到了我们往往在采用自动化测试工具的时候总是想到他能够给我们带来收益,能够帮助我们解决这样的问题那样的问题,但是你有没有想过这些工具同样会给我们带来很大的风险。我们在自动化测试过程当中实际上这个道路是非常的艰难,甚至你连回家的路都不认识了。我们说你在做自动化测试之前,你把这些都想清楚了,我们后面还会讲到在哪些情况下用自动化,我们可以自动化。这里就告诉我们你在做自动化之前你已经要准备了,你准备要搜集数据,为了比较自动化之前和之后你的情况如何。我们所说的投资回报率没有前面比较,没有前面的数据你如何获得这些投资回报率?
  我们再来看一下,通过一个比较简单的数据模型,我们看一下什么情况下我们值得去进行自动化,什么情况下大家谨慎了不要自动化。这里有两个方向,一个是我们自动化执行测试,另外手工进行测试,我们的效益,就是两个之比小于1的时候我们认为这个自动化现在开始给你带来回报了,但是我们现实是什么样的?我们来看一下,现实是非常残酷的。
  这是两种结果,上面一个结果,下面一种结果,这个图大家一看就清楚了。我们开始进行自动化的时候我们需要大量的投资,我们需要学习、需要这个那个。我们先看下面一张图,下面一张图告诉我们你做自动化测试你在努力的加班加点进行测试,但是不会给你带来收益,给你带来的只是痛苦。
  我们再看上面这张图,告诉我们开始你会非常痛苦,但是到了后期可以慢慢的给你回报。但是这个回报大家发现非常的虚伪的,我们要通过长期不断测试发现才可以真正给我们带来收益,这两个图之间的区别在哪里差异在哪里?这两个图的差异我们马上就会发现了,这个差异就是在维护。对我们自动化测试脚本是否经常不断的进行维护?对我们测试环境是否要经常修改?假如说是这样的你就有下面这种情况,假如说不是就是上面这种情况,这时候大家马上要想到我们要用自动化总是希望它能够成功,那我们如何成为上面这种情况?
  后面问题就来了,这些费用,我们自动化测试需要大量投资,但是我们往往总是一次性投入,实际上自动化测试还需要有一部分大量开销要准备着为长期投资,这就是我们所说的一次性投资和持续的成本投入。一次性成本大家容易理解,我需要学习和构建自动化测试框架,我需要环境,需要买工具,我还需要对这个工具了解,但是持续不断的进行投入我需要让这个工具能够给我带来回报。这不是一件容易的事情,这需要我们团队,需要我们人和过程,还需要以往工具是否跟它能够协同工作,等等这些我们都需要持续制订规则和流程,还有维护。我们环境的改变,我们工具的版本更新都需要我们额外的付出。
  那么很多同学可能会问,我们哪些地方可以进行自动化?哪些地方可以首先进行自动化?再回到前面那个图里,模型数据图里面,他告诉我们你经常修改的地方,变动比较多的地方不要去,或者尽可能避免进行自动化。因为在那里自动化除非人工不能运行,一定要用自动化没有办法了,否则还是用手工测试,比你自动化测试来的效果更好。
  另外我们说你需要长期的不断的,一个测试周期一个测试周期进行测试,那些项目里面,在那些产品里面你可以考虑采用自动化,否则在很小的,只有几个测试周期的这些项目里我们建议你不要考虑自动化。那么这里同样给我们罗列了一些方方面面。在什么地方你可以考虑自动化,比如说回归测试,冒烟测试,这些大家马上想到都是比较稳定的测试对象。
  我们再来看一下测试自动化的策略,这张图想要描述的是刚才我们那个问题,我们总是希望自动化给我们带来收益,但是你什么时候给我带来收益?我们来分析一下?恩我们开始引入自动化,我们刚才看到了我们需要大量的支出,但是到了后期我们开始稳定了,我们开始可以运行这些测试脚本,能够慢慢给我们带来收益,大家可以看到这个时候我们新的成本也就是说自动化测试成本,和我旧的成本保持一致了。再接下来可以给我带来收益了,但是我需要弥补到前面这些额外的支出。我只有到了这一个阶段我才能够把这块弥补和抵销那块,我收支开始平衡了,但是很可惜很多清楚下我们没有到后面收支平衡时间点前也许我们项目就要结束了,这时候大家马上就会想到了,这种情况下你这样一看非常直观了,最终情况就是我们当然不去采用自动化,因为它给我们带来的只是损失。
  很多情况下自动化测试的工具,我们有市场的一些主流工具,我们有一些商用工具,但是在很多场合下我们不得不自己去开发一些自动化测试工具。但是在这里面我同样要提醒大家一下,在这一类情况当中我们也遇到了很多问题,一个典型问题就是我下面这张图。大家看这个图就非常理解了就像搭阳台一样不断的向外延伸。测试人员和开发人员说我只需要一个小的工具,你能不能帮助我解决这个小问题,开发人员说没有问题,我很快就可以解决了。过几天说你再增加一些功能,不断的搭阳台不断延伸,最后结果可想而知,马上就要倒塌了这就是现实。
  好的,你需要重新的架构,需要去从一开始正确的思考,需要去思考和设计才不会导致这个现象。
  另外一些通用的测试工具的策略,我们开发一个工具要从长远的效率收益进行考虑,另外质量方面,结果方面我们都需要统筹的去思考我们这些工具选用或者工具的开发。也就是告诉我们这里需要长期测试工具的测量。这里我说一个案例,你可以使用一些简单的、便捷的方法,我们采用一些比较简单的开源的工具,但是千万要注意了,你一定要搞清楚在很多领域里面有相应的规定和标准,还有相应的法律要求你需要搞清楚。据我所知很多关键领域里这个工具不是你随心所欲的,这些小项目里,这些风险比较小的项目里,我们可以去采用开源的工具,可以采用开源共聚合商用工具的组合来完成一些问题,解决一些问题,这也是常见的一种方法。但是后面这些场景就不一样了,它是针对安全关键系统,安全关键系统是什么?就是银行、金融、国防、航天航空,医疗器械,交通、汽车、控制等等这些领域是有严格要求,有法律法规要求的,你用的工具不是随心所欲的,你想用这个工具,觉得我们隔壁用的不错我也用这个工具,有问题我去问他们,NO!不允许,因为你属于安全关键系统,你对你工具有严格要求,你工具用这些方法是否得到了专家们认证?有没有认证的资料?你对这些工具需要负责任,一旦出现问题是工具的责任,工具要承担起这个责任。所以这里面就需要正确的思考。
  我们再来看一下测试自动化过程当中各个工具的集成,这张图我是从ISO29119,在座很多测试朋友应该知道这个标准,这是软件测试新的标准,专门针对软件测试的,关键是驱动测试。这是一个逻辑定义,没有具体的,要根据实际情况要落地的,这里面我们测试自动化程度非常高,我根据我业务流程去把这些业务步骤分割成一个一个关键字,我测试过程当中用关键字组合成不同场景。当然我还需要有输入数据还需要有结果,这些大家在右边会发现我们有数据库,有关键字的数据库,有测试数据的数据库,我们每个关键字底下都是一段脚本和代码,我们有脚本库。
  
    我们测试现在变成了我们只需要有关键字组合,按照不同业务流程,按照不同场景组合成一个测试的运力,然后自动化的去进行测试,这个测试运力和传统测试运临概念有所差异。我们测试自动化程度也非常高,但是当然有它的优点和缺点。
  大家看基于模型测试也非常棒,自动化测试一个方向。我们用模型来源描述一个系统,这个系统我代码还不存在的情况下,还没有存在的情况下,我已经可以对你系统进行测试了,这就是基于模型措施的亮点和价值,我这个模型到底对不对?我通过测试以后马上就知道你这个模型是我们想要的模型,通过这个模型去开发我的系统。这就体现出尽早测试,尽早发现问题。
  这张图就是通用的测试自动化架构,这里面就包括了测试自动化,包括了分析、设计、执行、接口跟我们测试对象的接口。同时它还包含着我们的管理,包含着我们的流程。我们管理,测试脚本和测试对象,跟我们文档数据之间关联如何?另外测试的管理,我们如何用度量,如何用这些数据去发现系统里面的问题,去对我们这个被测系统进行有效评估。另外我们还有项目的管理,完整的体系我们形成了自动化测试的框架。
  大家看这个图非常熟悉,我们测试也是基本上都要用到最基本的这些工具,但是这些工具你发现了没有?他们之间的数据是如何沟通的?数据流,我这里举了一些大家非常熟悉的例子,自动化测试的运力跟被测对象和用的方法密切相关的,我测试过程当中发现的错误,我这些错误信息,递交缺陷报告要跟缺陷的数据库相关联。我静态分析过程当中我用的这些度量,我分析的结果,我在这个过程当中需要配置管理,需要什么样代码,什么版本代码,哪样的代码?静态分析也会发现问题,静态分析问题我同样需要缺陷数据库管理,等等问题,我不一一讲了,我们以后可以专题讨论。
  大家可以看到这些工具之间的数据,信息都需要很好的进行互动,进行通讯。那你在企业里面,你在公司里面你们是怎么做的,你是否真正做到这些信息有效进行管理了?能够有效的进行沟通。
  这里提到了我们如何来管理这些数据,我们可以中心化管理,可以分布式管理,我们甚至可以利用我们现在的区块链,对我们测试的数据进行背书,能够保证它的不可篡改,保证它的真实性,我们也可以采用其他的各式各样的方法,大数据
  今天给大家共享内容就这些,希望大家会后交流!
  主持人:接下来有一个互动环节,我们邀请两位小伙伴为周老师提问!
  提问:我有一个问题,我们在自动化投入时候有一个投入产出比,但是产出比的概念我怎么评判我的自动化产出比投入成本高?有没有这样一些参数值或者计算方式让我去评判这个投入是正向的。
  周震漪:这个实际上有很多模型和公式,我刚刚也简单的用一个模型来描述了,这也是一种比较简单的描述。但是做这件事情关键点我刚才讲了,可能讲的比较快,也就是说你做自动化测试之前你准备工作也做了,你要把没有做自动化测试这些数据要搜集起来,为的是跟做自动化测试以后做比较,因为这些模型大家都非常清楚了,并不是100%非常准确的这需要不断校正的,这就是一个关键点。恩公司数据模型有,到后面就是你感兴趣的话我可以给你一些这方面信息。
  提问:周老师您好,您刚才稍微给自动化测试泼了点冷水,确实现在自动化测试太火热了,我们经常做自动化测试明明知道成本投入非常大,收入非常小,就像您说的还没来得及到收益阶段就结束了,公司往往有一个忧虑,如果现在不做自动化测试,或者不跟上这个形势和风口以后就会落下,会用更多成本弥补。您觉得现在这些公司,如果我们已经明确判断出自动化测试收益要小于收购测试的话,我们需要不需要对这些技术投入,追这个技术,追这个风口继续研究自动化,还是说真的等我们需要自动化的时候个,自动化收益大于手工测试时候才开始自动化?
  周震漪:这是一个很好的问题,这里看问题视觉、角度可能不一样,你认为现在是很亏的,但是也许我们领导眼光比你更长,他是从一个更长的信息来判断这个事情这是一个。第二个的我一直在建议,也就是说你做自动化测试需要有步骤,也就是说你在哪些地方要去思考,哪些地方我首先应该自动化,通过这些地方能够给你带来信心,能够快速给你带来回报。比如说刚才说冒烟测试、回归测试,这些地方你做自动化测试,第一你可以培养这些知识,我对自动化测试从没有感觉到有感觉了,我从以前没有陌生到现在比较熟悉了。
  第二个你通过这个方面的自动化也是一个比较好切入点能够快速给你带来收益,不至于让你输得很惨。当然这只是点上面,从长远来说假如说你想做成全面自动化的话,那你就要做好思想准备了,你肯定要经历这么一个过程,但是你从长远角度来讲就值得投资。但是还是需要谨慎,因为在座都知道自动化测试本来就是开发的范畴,我们开发需要这些东西一个少不了,刚才我们看到了测试自动化的框架,里面有配置管理系统,测试管理系统,我们还有项目管理系统。我们需要培养人,我不知道是否解决了你的问题。
 
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号