1. 聚能聊>
  2. 话题详情

做好自动化测试究竟有多难?

作为软件测试人员,大家都知道自动化测试将我们从重复、枯燥的手工测试中解放出来,帮助我们和企业减少了时间和劳力成本。但在实践中发现自动化测试没有我们想象中的万能。比如大家熟知的UI自动化,写好自动化脚本后,可以进行大量的页面测试,节省很多时间,但是我们为了完成这个自动化脚本,搭建环境花了几天?熟悉那套自动化测试框架花了几天?掌握那套框架的编码能力又花了多少天?最后,我们辛苦写好的自动化脚本失败,真的有发现研发同学的bug么,还是都是因为部署环境失败引起的失败?因为执行机挂了引起的失败?同时我们为了排查出这些失败,又花了多少时间?还有接口测试,若想全覆盖接口的所有参数场景,对测试人员要求很高,要求对系统的结构和系统间的调度非常清楚。

大家一起探讨一下:做好自动化究竟有多难?您所在公司现在在做自动化测试吗?如果有,您觉得自动化测试的好处是什么,不足是什么?能给自己工作带来多大改变?在自动化过程中遇到过哪些问题,目前这些问题是否得到了解决?如果公司目前没有做自动化,那么现在主要的测试方法是什么?有没有想过尝试自动化测试?最担心使用自动化测试碰到什么问题?

小实践:看这里的商品详情页,假设我们这次要测试立即购买这个下单的功能,大家觉得这个功能适合什么样的测试方法?是否需要分层,对应的分层应该是什么呢?
screenshot

参与话题

奖品区域 活动规则 已 结束

  • 奖品一

    优酷VIP月卡 x 1

36个回答

2

蚁步 已获得优酷VIP月卡 复制链接去分享

小实践
1.根据用户购买习惯搭建场景测试用例;一般从小到大,小到按钮的样式、布局,大到完整的业务流。

2.需要分层
立即购买有前提、有后续业务,前提包括:1.已登录or未登录;2.有库存;3.有该颜色。后续业务包括:是否跳过购物车直接显示支付等。

一佛 回复

嗯,不错哦~分层里主要说了ui相关的?

蚁步 回复
回复@一佛:

仔细划分的话,考虑的还是挺多的:
1.从ui上来看,按钮的样式、布局、字体、大小、颜色、多浏览器兼容性、多终端的适配;从区域来看,并不支持所有区域的货物配送,是否显示正确;点击是否有动态效果(如颜色变换)。
3.从用户体验来讲,延时等待是否有提示信息、是否易识别、用户感官是否不适、连续点击是否会重复提单等;
4.从功能上来看,则根据前提条件的不同,以及所在不同的业务流,是否满足功能需求,总体来说,是一个由点到线再到面不断完善的过程(这样不就是测试各个阶段应该考虑的事情吗,尽早测试,持续测试,不断回归,貌似又联系到自动化....)
最后,啥阶段干啥样的活,哈哈~

一佛 回复
回复@蚁步:

嗯,分析得很详细~不过还都基本是基于ui功能的哦,ui自动化受环境等外部因素影响很大的,全部用ui测试,性价比可能并不高~其实底层接口也有很多可以测试的,这样上层测试就可以少很多了

蚁步 回复


单元测试阶段,获取接口说明文档,启动接口测试工作。

对于接口的简单理解:根据接口文档,通过 方法 | 地址:端口+路径 + 必填参数,从数据库传回参数值,然后前端根据参数值进行重组展示。

这里能想到的:
1.测试接口是否返回正确;
2.数据是否正确;
3.接口响应时间是否符合需求(如银行支付业务的高并发、股票系统的低延时等)。

求指教~~~

话说如果真要说全,估计得从需求评审阶段开始一点一点梳理,针对不同测试阶段选用不同的测试工具,测试方法。

PS:是打算送我奖品的节奏吗? 哈哈

一佛 回复
回复@蚁步:

这么详细,不送木道理呀,奖励已发。。。。接口测试看样子只是开发同学的思维,简单的参数比对,木有场景哦

蚁步 回复

场景?请指教,实在不知道接口还能怎么玩

评论
0

鬼才神兵 复制链接去分享

自动化测试增加了学习成本,小公司可能用不起。
而且自动化测试的准备过程也是真心累啊!
首先要做好手工测试并了解各种测试的知识->学习编程语言->学习Web基础(HTML,HTTP,CSS,DOM,Javascript)Winform
-> 学习自动化测试工具 ->学习自动化测试框架 -> 实现自动化测试用例 -> 开发自动化测试工具 ->开发自动化测试框架。
过程已相当费力费时了!

一佛 回复

如果听了今天的分享,就知道用合适的工具,这些知识成本都不需要啦

小川@ 回复

太麻烦,简单粗暴才是重点

一佛 回复
回复@小川@:

合适的工具就是简单粗暴,鬼才这一系列流程就不需要啦~

鬼才神兵 回复
回复@一佛:

关键是得有很适合的工具不是!而且有工具也得调试啊!

一佛 回复

对的,就是需要合适的工具!好工具!

评论
1

pingbm 复制链接去分享

我们公司也都是人在测试,开发写的代码很乱,测试一般就点点黑盒为主。我觉得自动化测试非常有必要,测试人员熟悉一些测试框架编写测试脚本,成熟的测试能够让产品更健壮。小实践中,单独测试一个的按钮功能,会涉及到前后端的交互,分层是必然的。

七月飞雨 回复

分层什么意思?

一佛 回复

开发质量越差,测试的重复劳动,枯燥劳动也就越大,自动化的价值也就越大

single21 回复

赞同

评论
0

zhongjian3344 复制链接去分享

我们不做自动化,费钱

一佛 回复

其实有些自动化都是开源的,不烧钱。。。

蚁步 回复

费钱的不一定是工具

一佛 回复
回复@蚁步:

真是忍不住给你点赞

评论
1

初码 复制链接去分享

事实上Visual Studio的单元测试功能非常好,写的准确的话,可以支持非常智能的自动化白盒测试
可是!
自从完全学会以后,我就再也没有用过
关键是投入产出值不值得,对于公司也如此,现在敏捷思维这么流行和弥漫,我想很少有公司会去做自动化测试
然而!
小日本最喜欢这玩意了!

一佛 回复

自动化测试需要策略,才能让自动化价值最大化,否则自动化的弊端的确让人望而却步。

初码 回复
回复@一佛:

哇咔咔,竟然是个美女产品经理,失敬失敬

一佛 回复
回复@初码:

向架构师学习。。。

评论
2

1733681204516904 复制链接去分享

发展的大趋势必然是自动化,人工测试费时费力且成本较高,但是发展肯定会有一个过程!个人觉得应该一方面不断测试和完善自动化,另一方面使用人工检测进行查漏补缺!这样前期可能会拉低效率,但是后期成果会弥补前期的一起!

一佛 回复

嗯,自动化的效果,对于相对稳定的业务来说,是最显著的~

评论
1

najclynx 复制链接去分享

能让机器做的事情就让机器做,自动化是更快更强的保障

石头110 回复

没高手,自动化就是渣渣

一佛 回复

高手分两种:工具高手和测试策略高手。工具可以弥补自动化人员一些不足能力,测试策略需要高手培训了。

评论
1

一份执着 复制链接去分享

自动化测试本身也是要测试的。
要根据实际情况,不能为了自动化而自动化。

一佛 回复

是的,编码自动化,若是编码,必然也会有bug。但自动化测试不全是编码~
赞最后一句,根据实际情况,不能为了自动化而自动化。

评论
1

创始人 复制链接去分享

自动化测试的自动化和高效率是建立在前期耗费时间和资源建立的测试方法和脚本的基础上的,这个时间和资源的成本目前不太适合于大部分的测试项目.另外目前的自动化测试的技术.更多也更适合一些机械的,客观的,不涉及变化的测试.小企业目前可能无法使用自动化测试,但随着技术的发展,越来越多的项目可以使用自动化测试.能够机器做的,而且效率费用都合适的情况下,没人会拒绝,当然了,涉及主观层面的测试还是要人的,而且还得有一定的采样率。

创始人 回复

补充,题目中的测试需求,个人认为从ui,交互,跳转正确性,购物体验等应当由人工测试,并发,负载,高频次点击等由自动化来做

一佛 回复

那下单后的数据存储检验呢?

评论
2

省油的灯 复制链接去分享

你们想让前端人员疯掉吗

勿忘初衷 回复

是吗

评论
0

楼下小黑 复制链接去分享

烧钱。小公司玩不起

一佛 回复

其实有些自动化都是开源的,不烧钱。。。

评论
0

1491881596318157 复制链接去分享

开发之前写单元测试模块还是必须的。做好单元测试个人经验是非常难的。主要是花的时间多,不如在业务逻辑中debug速度。再说了单元测试也不一定能消除某些bug

一佛 回复

说得很赞~这就是为什么需要分层自动化,且在分层分析中,为什么没有用性价比最高的单测覆盖所有功能的核心原因

评论
0

1052882781566324 复制链接去分享

公司还没有自动化测试,都是人工测试,枯燥,还得心细,最终还得整理一份反馈需要说清楚问题

一佛 回复

当发现折磨的时候,那就是一个可以进步的机会哦

评论
0

1792581594535264 复制链接去分享

自动化测试是不能代替手工测试的,自动化测试虽然快,但是只限于指定场合。

一佛 回复

合适的自动化测试策略,可以扩展到更多场合哦

评论
0

阿常先生 复制链接去分享

感觉好像很难掌握,就我目前来说还是先把一门学精吧!

一佛 回复

现在您主要想学哪一块自动化?

评论
0

1102558281240278 复制链接去分享

对部分情景来说,自动化脚本反而降低了效率。是否选择自动化测试,也需要分情况讨论。

一佛 回复

所以,具备自动化能力很重要

评论
1

iriswang 复制链接去分享

作为公司第一个做GUI自动化的人,综合公司现在自动化(包括GUI和功能)现状,谈一下自己的感想:

  1. 自动化必要性

      1.1 自动化测试的最重要的作用就是解决“反复“的手动测试对于N多简单的动能,可能需要在不同平台,不同工作场景,不通的版本上面都会测到,而这个功能又是一个很稳定的功能, 这时自动化的效率是很明显的。       
     1.2 自动化覆盖的内容是老的功能,也是在产品发布前最后的质量保证。
    
  2. 自动化开发

      
     2.1 自动化架构
             当时我写的gui自动化是用java +junit 的架构,后来我去做功能测试,又有人写的自动化是python写的。
             每一个架构都不可能一开始就运行的很好,只有在不断执行的过程中不断改进。
      
     2.2. 自动化覆盖范围
             能够自动化的功能模块很多
    1. 自动化的覆盖应该是旧的已经稳定的基本功能模块
    2. 可以自动化的integration 的模块。
    3. 可以自动化customer bug 模块。
    4. 根据需要尽量把自动化的模块细化,这样比较方便自动化的执行

        
        2.3 自动化执行效率
              自动化的执行效率一定是要优先考虑的,现在公司有个自动化脚本要跑1星期,这是不能忍受的。因为自动化一般做regression  测试,在candidate build上面跑自动化检查基本老的功能是否pass。一般最多两天。
        
        2.4 自动化系统的维护,因为是程序总会有bug
      
  3. 自动化执行

     自动化执行需要有专门人或团队执行,以保证产品在发布之前基本功能可以work,执行团队两个作用:
     3.1 发现产品功能问题
     3.2 发现自动化程序问题。
    
  4. 自动化团队与其他团队的合作

    有的公司是测试人员自己写自动化脚本,有的公司是有专门的自动化团队
    4.1 与内部人员的沟通,保证尽可能代码一致性
    4.2 与手动测试人员的沟通,每个自动化程序都有文档跟踪,有专业人员review, 其实自动化是手动测试最重要的补充。如果手动人员知道自动化cover 的哪些功能,他们就不需要重复测试了。
    

    以上,还在工作,这里只谈了功能方面的自动化,对于性能方面的没有过多经验,但是性能测试会有工具完成。

1

1732080659137913 复制链接去分享

需要分层

0

李诺川川 复制链接去分享

1.首先应该从客户的角度去考虑,细节决定成败:
①整体效果要注意,细节的东西更重要;
②要注意页面各个组成要素的颜色,颜色可以影响一个人的心情;
③各个组件的布局也至关重要,对客户来说是否方便,组件的功能是否易懂;
这些都应该考虑到。
2.测试时可以先内测,再公测,收集大众的意见,公测应该是必不可少的一步,客户的意见更有针对性,一边找到最重要的问题。
3.关于自动化问题:
①适用范围,使用自动化要考虑这个东西的适用范围,有的测试就不适合去使用自动化,任何东西都会有出错的时候,机器也不例外;
②经济效益,有时使用自动化可能得不偿失,要考虑整体的经济效益,选择合适的测试方法,这就应该是展现一个领导者的才能的时候

李诺川川 回复

希望我的见解对你有所帮助!

评论
0

keller.zhou 复制链接去分享

适合黑盒测试,相信阿里白盒测试做的差不多了,对于多用户的电商前端页,黑盒能发现90%bug

2