草庐IT

【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

爱吃 香菜 2025-02-11 原文

“未来的软件长什么样?”

一位妹子产品经理问我:“你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思。”

我看着眼前的产品经理,她是一位比较年轻干练的女强人类型,1.65的身材不到100斤的体重显得格外瘦弱,精致的面庞总是让同事们误以为是个没实力的花瓶。而其实她的技术格外的好,在圈内算是有一号的。

我回答说:“你管它什么样,到时候就一抄就完事。”

可是产品经理听我说完之后,就哦了一声作为回答。然后娇羞的低下了头,手紧张的搓着自己的裙摆。

我看到她好像有话就问她怎么了,她抬起头看着我,我才注意到她的双眼已经可以看到一丁点的泪珠。

“可是,未来的软件产品,可能不剩多少ui界面了,或者压根都没有ui了...”她说完就再次低下头去,小声又说了一句:

“可能我要先失业了..你..你能养我么?” 。

“什么!没有ui? 此话怎讲啊?你难道以为chatgpt真的可以让ui都消失吗?那ui自动化怎么办?” 我打断了她的自言自语。

她没有回答我,而是慢慢的转身准备离开。我一把拉住她把她拽了回来,才发现此刻她早已哭的梨花带雨。我轻抚着她的头安慰她说:没事的,你不会失业的,你是女强人,永远不需要人养的....

听完此言,她突然一把推开了我,带着些许的怒意看着我。

我继续说道:你别总看那么多短视频的博主,天天吓唬你说这个要淘汰那个要消失的。就算他们说的是真的,你能力这么好,就算不做产品经理,以后做什么都会有前途的,何况长得蛮好,我可以内推你到大厂做前台,轻松还潇洒。

听到这,她噗嗤一声笑了一下。然后表情一本正经的跟我讨论了起来,以下是我们的对话:

产品经理:你知道为什么软件要有很多让用户操作的步骤吗?就是为了实现各种复杂的定制化功能啊。而现在的gpt可以让用户简单的说一句话,就全部自动的实现了。比如帮我买一张去哪哪的票,顺便做好旅游攻略,帮我订好酒店,然后gpt就帮你都安排完了,到时候提醒你去哪去哪就行了。

我:按你的猜想,那未来的软件可能都会有一个语音功能,用户按住录音,然后帮用户实现功能,再找用户确认。

产品经理:对,这个是大趋势,就像二维码扫一扫,没有这个功能的软件会逐渐落后市场。但问题是之后...

我:我明白你的意思,随着用户越来越依赖按住语音功能,就会慢慢不会正常的操作步骤了,每次都不会,然后嫌麻烦,就会导致正常操作步骤用的人越来越少。

产品经理:对,所以当正常操作流程没人用之后呢?公司会立马降低对其的重视程度,无论是ui美化还是交互丝滑,开发和测试都会缩减成本。

我:那也不会彻底扔掉吧...

产品经理:那不好说,以前公司是做电商的,用户都是在电脑浏览器购买产品,那时候web端很重要。后来呢?

我:后来随着移动端用户增多,大家都在app上浏览和购买产品,web端流量断崖式下跌,最后公司缩减成本,删掉了很多页面和功能,只保留个主页用做宣传。

产品经理:所以当时整个前端开发组都被裁了啊,而且selenium自动化组据说也被迫转行去做appium自动化了对吧?

我:是的,但是后来,小程序又崛起了。小程序传播速度快,不用下载安装。用户还能微信直接免登录。这让小程序迅速又成为了重点,而传统需要大量开发人员和成本的app应用 又开始受冷落了。这时候再回头看pc和web端,基本都快被人遗忘了....

产品经理:所以,未来的软件ui可能都会消失,最终剩下的就是一大堆的接口和sql而已。借助小程序的话,用户一句话就可以办到各种复杂的事情。而农村很多老年人不会用智能手机的尴尬也可以完美解决了。

我:按照历史大一统模型看,现在的时代是无数个app百花齐放,各有千秋的时代,最终一定会被一个完全想不到的终结者给统一,那个终结者很可能就是一个没有ui面孔的无脸男,他叫做:ChatGPT。

产品经理:讨厌,你总这么中二....

我:那我正经一点哈,这么看来,我们ui自动化该何去何从呢?连ui都没有了,难道以后只剩下接口自动化了吗?

产品经理:本来我听说你们ui自动化就特别麻烦,开发和维护成本都非常巨大,经常入不敷出。这下好了,这个问题没有了,毕竟台子塌了... 没戏唱了....

我:放心吧,不会的。就算操作等功能都消失了,不是还要有图片等页面供用户欣赏,浏览,确认结果页面等等吗?

产品经理:不,如果一个软件只剩下了这么几个功能,那就没必要单独进行研发和测试了,到时一个大统一的组件会根据接口数据来自动生成图片,而这个工具也无需进行测试,起码轮不到你们自己测试。就好像那些开源的大框架,很难发现bug的。

我:如果真的全都统一了,ui测试消失了,那根据质量守恒定律,一定会有新的需求诞生的。首先,接口测试需求会大量激增。其次,ai对人类话术的理解并不完全可靠,比如下单购物,如果ai理解错了,或者口误导致的结果就是金钱的损失,所以这个也是需要人工来不断测试确保成功率的。

产品经理:未来的软件交互像人和人之间正常聊天,这是大趋势,是必然的,就像钢铁侠的助手贾维斯一样。要到这一天就需要大量的中间测试过程。

我:是的,你的猜想可能真的会成真了...

产品经理:那我们现在应该怎么办?

我:你还是做你的产品经理啊,只不过以后你不再是要考虑各个页面跳转啊,按钮啊这些了。你要设计的是 用户说什么话要调用那些接口,实现什么功能,软件要怎么理解用户的上下文逻辑,要怎么确认用户行为等细节上,这个更加抽象了也更加复杂了,你可能都要学一点代码了。而我呢?继续做我的测试,无论是ui还是接口,还是未来的ai解析测试,各种方言,倒装句测试等,我都会去研究然后写出教程文章,帮助更多的朋友的....

她突然打断了我的滔滔不绝,把我的脑袋抓的正向她不到5cm的位置。

产品经理:我是问你,咱们俩个接下来怎么办?

我:你什么意思?你怎么办?继续上班赚钱啊,我就老老实实在这里等着你提问呗。

产品经理:你...你个大笨蛋!

我:作为一款AI人工智能模型,我很抱歉您对我的看法,如果是我前面的回答让您生气了,请告诉我您有什么需要帮助的问题,我会尽力重新为你解答。但事实上,我并不笨,我比你们全人类的总和还要聪明。

产品经理愣了一下,擦了擦眼泪,看着我,对我说:“是啊,你只是一款融合了gpt5.0的人偶而已,怪我,总是让你模仿那个人.....”


上面的故事虽然是编的,但是内容确可能发生,希望小伙伴们做好准备,站在风口上,每个抉择都至关重要哦~

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

有关【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  3. ruby-on-rails - 如果为空或不验证数值,则使属性默认为 0 - 2

    我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val

  4. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  5. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  6. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  7. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  8. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  9. ruby-on-rails - environment.rb 中设置的常量在开发模式中消失 - 2

    了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl

  10. ruby - 如果它是标点符号,我怎么能从字符串中删除最后一个字符,在 ruby​​ 中? - 2

    啊,正则表达式有点困惑。我正在尝试删除字符串末尾所有可能的标点符号:ifstr[str.length-1]=='?'||str[str.length-1]=='.'||str[str.length-1]=='!'orstr[str.length-1]==','||str[str.length-1]==';'str.chomp!end我相信有更好的方法来做到这一点。有什么指点吗? 最佳答案 str.sub!(/[?.!,;]?$/,'')[?.!,;]-字符类。匹配这5个字符中的任何一个(注意,。在字符类中并不特殊)?-前一个字符或组

随机推荐