首页 文章 精选 留言 我的

精选列表

搜索[手动],共10007篇文章
优秀的个人博客,低调大师

手动脚本到自治测试:深度解析软件质量工程在AI时代的技术范式重构

在软件工程的长河中,质量保障(QA)一直处于“开发驱动”的被动地位。然而,随着人工智能(AI)与大模型(LLM)技术的爆发,QA正迎来其职业生涯中最重要的技术拐点。2026年1月23日,在香港生产力促进局(生产力局)举行的技术沙龙中,一个核心命题引发了全场开发与测试专家的共鸣:当软件复杂度呈几何级增长时,传统的、基于硬编码的测试范式是否已经走到了尽头? 作为此次沙龙的技术风向标,国内AI测试头部服务商Testin云测展示了一套完全不同的技术路径。这不仅是工具的更迭,更是一场关于测试逻辑、执行效率与资产定义的深度重构。 一、 破局“自动化困境”:为什么传统的DOM定位法正在失效 在过去十年的自动化实践中,QA工程师们深陷于“脚本维护陷阱”。传统的自动化测试框架,如Selenium或Appium,主要依赖于DOM树属性或坐标定位。这种方式在敏捷迭代面前极其脆弱:一旦前端UI发生微调,或者组件ID被重构,预设的测试路径就会瞬间断裂。 Testin云测AI测试首席架构师董华中在分享中指出,新一代AI测试范式的核心在于“逻辑理解”而非“机械对齐”。通过深度融合计算机视觉(CV)算法,测试平台不再仅仅读取代码背后的属性,而是像人类测试员一样,通过像素级视觉识别来“看见”UI元素。 这意味着,即使应用的UI布局发生了位移,或者按钮的样式从圆形变成了矩形,AI依然能够根据其语义特征——例如“搜索框”的视觉属性和逻辑位置——进行准确识别。这种基于CV的自愈技术,将脚本的稳定性提升到了前所未有的水平,从根本上解决了自动化测试“写起来快、维护起来难”的顽疾。 二、 深度拆解:AI如何实现脚本的“自愈”与“修复” 在沙龙的实操案例展示中,技术专家们看到了AI如何处理复杂的UI变动。当测试任务执行过程中发现目标元素无法通过原始路径触达时,系统不再直接报错退出,而是触发自愈逻辑。 AI模型会实时分析当前屏幕的语义地图,通过大模型对页面上下文的理解,自动计算出备选的操作路径。如果确定是UI更迭而非程序Bug,AI会自动更新测试脚本库中的定位逻辑。这种“自愈式维护”让原本需要数小时人工排查的问题,在毫秒级的运行期间内被静默解决。 对于QA团队而言,这意味着工作重心的结构性转移:工程师不再是昂贵的“脚本修理工”,而是成为业务逻辑的编排者和AI模型的调控者。 三、 迈向自治:Agentic Testing 的技术原理与应用前景 如果说自愈脚本解决了“执行稳定性”问题,那么沙龙现场讨论最激烈的“Agentic Testing(智能体测试)”则解决了“覆盖率问题”。 传统的自动化测试是线性的、预设的,它只能发现“已知的未知”。而基于“大模型+智能体”的测试模式,则具备了自主探索的能力。智能体可以根据QA工程师给出的一段自然语言指令,如“完成一笔从储蓄账户到定期账户的转账,并验证余额变动”,自主规划测试路径。 这种转变的技术逻辑在于,AI智能体能够理解业务流的逻辑依赖,它会在App内自主寻找路径、识别阻碍,并模拟真实用户的随机交互行为。这种探索性测试能有效捕捉到那些隐藏在极端路径下的边界Bug,实现了从“人工编写脚本”向“AI生成测试流”的跃迁。这在香港复杂的金融与公共服务软件环境下,具有极高的实操参考价值。 四、 资源底座:海量真实设备与智能日志分析的协同 在QA领域,效率的提升往往受限于物理环境。香港机构对于移动端的兼容性要求极高,涉及数百种设备型号与操作系统版本。 Testin云测通过其智慧云测试平台,将数千台真实物理设备进行云端集群化管理。通过AI驱动的自动化并行执行,原本需要耗时数天的全量回归测试,如今可以在数小时内完成。更重要的是,AI介入了测试后的分析环节。 在海量的崩溃日志(Crash Log)和性能异常数据中,人工复核往往如同大海捞针。AI系统通过智能定性分析,能自动抓取异常片段,并利用自然语言处理技术(NLP)对报错信息进行分级和归类,甚至能够直接给出修复建议。这种从执行到分析的全链路自动化,真正实现了测试流程的闭环。 本次沙龙不仅是一次技术的展示,更是对QA职业边界的一次重新定义。面对数字化浪潮,QA工程师所需的不再仅仅是编写代码的能力,更是一套数码转型的思维架构。 通过Testin云测等领军企业的技术输出,香港及大湾区的软件产业正在形成一套可复制、可演进的智慧测试标准。AI不再是外挂的辅助工具,而是已经演变为研发全生命周期的核心引擎。在这一范式跃迁中,只有拥抱AI驱动的自治测试,企业才能在保障极端稳定性的同时,实现质效的真正飞跃。

优秀的个人博客,低调大师

Elasticsearch深度探秘搜索技术_在案例中体验如何手动控制全文检索结果的精准度

课程大纲 1、为帖子数据增加标题字段 POST/forum/article/_bulk {"update":{"_id":"1"}} {"doc":{"title":"thisisjavaandelasticsearchblog"}} {"update":{"_id":"2"}} {"doc":{"title":"thisisjavablog"}} {"update":{"_id":"3"}} {"doc":{"title":"thisiselasticsearchblog"}} {"update":{"_id":"4"}} {"doc":{"title":"thisisjava,elasticsearch,hadoopblog"}} {"update":{"_id":"5"}} {"doc":{"title":"thisissparkblog"}} 2、搜索标题中包含java或elasticsearch的blog 这个,就跟之前的那个term query,不一样了。不是搜索exact value,是进行full text全文检索。 match query,是负责进行全文检索的。当然,如果要检索的field,是not_analyzed类型的,那么match query也相当于term query。 GET/forum/article/_search { "query":{ "match":{ "title":"javaelasticsearch" } } } 3、搜索标题中包含java和elasticsearch的blog 搜索结果精准控制的第一步:灵活使用and关键字,如果你是希望所有的搜索关键字都要匹配的,那么就用and,可以实现单纯match query无法实现的效果 GET/forum/article/_search { "query":{ "match":{ "title":{ "query":"javaelasticsearch", "operator":"and" } } } } 4、搜索包含java,elasticsearch,spark,hadoop,4个关键字中,至少3个的blog 控制搜索结果的精准度的第二步:指定一些关键字中,必须至少匹配其中的多少个关键字,才能作为结果返回 GET/forum/article/_search { "query":{ "match":{ "title":{ "query":"javaelasticsearchsparkhadoop", "minimum_should_match":"75%" } } } } 5、用bool组合多个搜索条件,来搜索title GET/forum/article/_search { "query":{ "bool":{ "must":{"match":{"title":"java"}}, "must_not":{"match":{"title":"spark"}}, "should":[ {"match":{"title":"hadoop"}}, {"match":{"title":"elasticsearch"}} ] } } } 6、bool组合多个搜索条件,如何计算relevance score must和should搜索对应的分数,加起来,除以must和should的总数 排名第一:java,同时包含should中所有的关键字,hadoop,elasticsearch 排名第二:java,同时包含should中的elasticsearch 排名第三:java,不包含should中的任何关键字 should是可以影响相关度分数的 must是确保说,谁必须有这个关键字,同时会根据这个must的条件去计算出document对这个搜索条件的relevance score 在满足must的基础之上,should中的条件,不匹配也可以,但是如果匹配的更多,那么document的relevance score就会更高 { "took":6, "timed_out":false, "_shards":{ "total":5, "successful":5, "failed":0 }, "hits":{ "total":3, "max_score":1.3375794, "hits":[ { "_index":"forum", "_type":"article", "_id":"4", "_score":1.3375794, "_source":{ "articleID":"QQPX-R-3956-#aD8", "userID":2, "hidden":true, "postDate":"2017-01-02", "tag":[ "java", "elasticsearch" ], "tag_cnt":2, "view_cnt":80, "title":"thisisjava,elasticsearch,hadoopblog" } }, { "_index":"forum", "_type":"article", "_id":"1", "_score":0.53484553, "_source":{ "articleID":"XHDK-A-1293-#fJ3", "userID":1, "hidden":false, "postDate":"2017-01-01", "tag":[ "java", "hadoop" ], "tag_cnt":2, "view_cnt":30, "title":"thisisjavaandelasticsearchblog" } }, { "_index":"forum", "_type":"article", "_id":"2", "_score":0.19856805, "_source":{ "articleID":"KDKE-B-9947-#kL5", "userID":1, "hidden":false, "postDate":"2017-01-02", "tag":[ "java" ], "tag_cnt":1, "view_cnt":50, "title":"thisisjavablog" } } ] } } 7、搜索java,hadoop,spark,elasticsearch,至少包含其中3个关键字 默认情况下,should是可以不匹配任何一个的,比如上面的搜索中,this is java blog,就不匹配任何一个should条件 但是有个例外的情况,如果没有must的话,那么should中必须至少匹配一个才可以 比如下面的搜索,should中有4个条件,默认情况下,只要满足其中一个条件,就可以匹配作为结果返回 但是可以精准控制,should的4个条件中,至少匹配几个才能作为结果返回 GET/forum/article/_search { "query":{ "bool":{ "should":[ {"match":{"title":"java"}}, {"match":{"title":"elasticsearch"}}, {"match":{"title":"hadoop"}}, {"match":{"title":"spark"}} ], "minimum_should_match":3 } } } 梳理一下学到的知识点 1、全文检索的时候,进行多个值的检索,有两种做法,match query;should 2、控制搜索结果精准度:and operator,minimum_should_match 深入学习请查看视频讲解:https://www.roncoo.com/course/view/f6c7d5f0eef34b20b280621e42facbcf

优秀的个人博客,低调大师

记录ALiYun EMR常用服务的手动启动和停止命令(hdfs/yarn/mr-jobhistory/zk/spark-history)

说明:在ssh,用root用户登录到header(master)机器上,手工执行以下命令进行业务调试。 常用命令: 1. env (忘记是大写ENV,还是小写env,来查看环境变量) 2. cat /etc/hosts (查看EMR集群机器的hostname ip配置) 3. 在header机器上,切换到hadoop用户后,可以 ssh@emr-worker-1 直接登录到worker-1机器上,因为集群的机器,hadoop用户已经配置互相信任关系。 启动: ###start zk su hadoop -c "/usr/lib/zookeeper-current/bin/zkServer.sh start" for i in `seq 1 2`; do su hadoop -c "ssh emr-worker-${i} /usr/lib/zookeeper-current/bin/zkServer.sh start"; done ###start hdfs su hdfs -c "/usr/lib/hadoop-current/sbin/hadoop-daemon.sh start namenode" su hdfs -c "/usr/lib/hadoop-current/sbin/hadoop-daemon.sh start secondarynamenode" for i in `seq 1 2`; do su hdfs -c "ssh emr-worker-${i} /usr/lib/hadoop-current/sbin/hadoop-daemon.sh start datanode"; done ###start yarn su hadoop -c "/usr/lib/hadoop-current/sbin/yarn-daemon.sh start resourcemanager" for i in `seq 1 2`; do su hadoop -c "ssh emr-worker-${i} /usr/lib/hadoop-current/sbin/yarn-daemon.sh start nodemanager"; done su hadoop -c "/usr/lib/hadoop-current/sbin/yarn-daemon.sh start proxyserver" ###start mapreduce historyserver su hadoop -c "/usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh start historyserver" 停止: ###stop spark su hadoop -c "/usr/lib/spark-current/sbin/stop-history-server.sh" ###stop mapreduce historyserver su hadoop -c "/usr/lib/hadoop-current/sbin/mr-jobhistory-daemon.sh stop historyserver" ###stop yarn su hadoop -c "/usr/lib/hadoop-current/sbin/yarn-daemon.sh stop proxyserver" for i in `seq 1 2`; do su hadoop -c "ssh emr-worker-${i} /usr/lib/hadoop-current/sbin/yarn-daemon.sh stop nodemanager"; done su hadoop -c "/usr/lib/hadoop-current/sbin/yarn-daemon.sh stop resourcemanager" ###stop hdfs for i in `seq 1 2`; do su hdfs -c "ssh emr-worker-${i} /usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop datanode"; done su hdfs -c "/usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop secondarynamenode" su hdfs -c "/usr/lib/hadoop-current/sbin/hadoop-daemon.sh stop namenode" ###stop zk su hadoop -c "/usr/lib/zookeeper-current/bin/zkServer.sh stop" for i in `seq 1 2`; do su hadoop -c "ssh emr-worker-${i} /usr/lib/zookeeper-current/bin/zkServer.sh stop"; done

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册