
打造更聪明的猴子开源云测试框架Hydra Lab的智能测试实践
在软件测试领域,“猴子测试”一直是一种流行的方法,但它也存在随机动作的局限性。 如果我们引入大模型并创建一只更聪明的猴子,它可以真正理解应用程序并像人类一样与之交互,会怎么样?
此前,微软内部团队构建并开源了下一代跨平台软件测试基础设施Hydra Lab()。 目前,微软内部Hydra Lab支持的云测试系统服务与Microsoft Phone Link、Link to Windows、Teams、Outlook、Edge等多个产品线紧密相关。 为了创造一只更聪明的猴子,今年Hydra Lab接入了LLM(Azure OpenAI Service),以提高其在测试结果分析、探索性测试和测试用例生成方面的能力。
在今年9月3日至5日举行的QCon全球软件开发大会北京站上,微软中国高级研发经理卜少鹏将分享Hydra Lab的技术思路,以及对智能软件测试的理解和实践经验。 会议开始前,InfoQ 对微软测试平台后端技术专家卜少鹏和周乐进行了独家专访。 以下是经过编辑的谈话记录。
InfoQ:卜老师今年9月在北京举行的QCon全球软件开发大会上的演讲题目是“使用大型模型构建更聪明的猴子:下一代跨平台软件测试基础设施Hydra Lab”。 为什么选择这次演讲? 主题?
卜少鹏:Hydra Lab是微软内部打磨了两年左右的一个项目。 随着项目的不断发展,越来越多的合作伙伴参与到项目中。 我们一起克服了许多困难,并得到了领导的支持。 各种支持都来之不易。 我提前向团队表示衷心的感谢。 如今,软件测试已经进入自动化时代,但仍然存在大量的手工测试。 近年来,随着AI技术的不断发展,我们看到了将软件测试从自动化推进到智能化的可行性。 在团队内部的一次聊天中,朋友们谈到了强化学习在游戏领域的应用(当时flappybird还很流行)。 它很有意思。 我们思考是否可以将这种像人一样玩游戏的感觉移植到软件测试中。 中间。 通过将被测软件视为强化学习中的“环境”概念,像玩游戏一样提供交互式反馈,不断增强智能体的探索能力,最终实现智能探索。
在这个过程中,我们参考了很多相关的学术论文,并且在微软亚洲研究院等团队同事的支持下,我们发现学术研究界也有类似的想法和探索。 同时借鉴软件测试经典理论中提到的Monkey Test概念(即向被测应用程序输入一系列随机输入,就像让猴子随机敲击键盘或随机点击手机一样)手机屏幕,然后观察该情况下软件的表现),我们还进一步探索了Smart Monkey的实现,让更聪明的猴子来测试软件。 其中,如何让“猴子”“理解”被测试的应用程序是一个关键问题。 随着大语言模型技术在业界的普及,利用这项技术为这只“猴子”赋能也是我们当前探索和实践的重点。
总的来说,与一般的测试框架不同,Hydra Lab的目标是提供一套测试工程解决方案,或者说是一个开源的云测试平台。 我们希望它能够轻松地与DevOps系统、编译系统或GitHub等集成,开发工具或平台的结合为开发团队带来低成本的全流程测试解决方案。 同时我们还引入了智能化。 您可以在这个项目中看到一些自动生成测试用例的模块、解决方案和提示。 工程化和智能化是Hydra Lab的关键词,工程化是智能赋能的基础。 在本次分享中,我也会围绕这两个问题来讨论一些案例。
InfoQ:对于这波大型模型与软件开发应用程序相结合的浪潮,您观察到了哪些有趣的趋势?
卜少鹏:我最近做了很多分享,参加了很多活动。 我发现大家都在讨论大车型与各个领域的融合,比如各种副驾驶的产品体验。 目前,虽然大型模型的能力令人兴奋,但还没有达到AGI赋能一切的阶段。 我们需要了解它的优缺点,扬长避短来应用它,而且需要人的配合,所以我们就多讲一下。 副驾驶,而不是自动驾驶。 目前,大型模型在内容生成和信息摘要方面显示出巨大的前景,但如果你打算解决容错性低且上下文庞大的问题,则在关键技术取得突破之前可能不会有成熟的解决方案。
这次的不同之处在于,创新的动力主要来自于行业,而不仅仅是学术界。 从软件行业一线开发工程师和实际产品实践中可以看到越来越多的创新。 这与AI模型达到一定规模后,能够执行多目标任务、解决一些通用问题之后能力的出现密不可分。
周乐:从我自己的发展经历来看,主要有两个方面。 首先,随着GPT、BERT、DALL-E等预训练模型的出现,开发者可以方便地调用API接口来使用这些模型。 用于不同领域。 第二是代码生成和优化。 例如,GitHub Copilot 可以根据代码上下文给出代码补全建议。 GitHub Copilot Chat 甚至可以通过对话帮助定位问题并修复 bug。
Hydra Lab的技术设计和建造思路
InfoQ:软件测试的自动化极大地提高了测试效率和质量。 然而,随着软件系统变得更加复杂和测试环境的多样性增加,传统的自动化测试面临着许多挑战。 主要有哪些方面?
卜少鹏:首先,我们的团队是一个全球协作团队,我们的产品Phone Link也是一个跨平台互联的产品。 这加大了我们从“人”和“物”层面推动测试自动化合作的力度。 复杂。 我们希望自动化测试能够完全自动化,减轻大家编写和维护测试的负担,同时能够真正发现问题。 另外,我们还想把手机放到云端,建立云测试设备集群,全球共享。 现在有了Hydra Lab,我们只要搭建好这个平台,配置好相应的组和权限,真机的地理位置就不再是障碍。 来自世界各地的团队可以突破物理界限,更有效地进行测试协作。
其次,UI自动化测试任务可能会遇到一些不稳定的情况,比如突然找不到某个元素,或者出现一些意外的遮挡。 这种情况下的测试任务失败可能并不能反映真正的质量问题。 借助 Hydra Lab 等平台级解决方案,我们可以识别这种类型的不稳定并重新运行任务以提高稳定性。 这也相当于将我们识别和处理测试不稳定因素的经验融入到Hydra Lab开源项目中。 一个人做出贡献,整个社会都会受益。
另外,从安全和隐私合规的角度来看,如果开发团队使用外部第三方云测试服务来测试持续集成系统构建的应用程序,由于此阶段构建的应用程序通常包含大量的Debug信息,还可能涉及未公开信息。 对于向外部第三方上传新功能甚至商业机密存在一些担忧,因此开源且可定制的系统在这种情况下非常有价值。 也就是说,有了Hydra Lab,开发团队就可以直接利用已经购买的测试设备。 ,构建内部持续测试工程系统非常划算,并且数据流可以完全控制。
周乐:关于定制需求,我想补充一点。 由于我们的产品Phone Link和Link to Windows既有PC端,也有移动端,所以需要跨平台进行测试和验证,即同时在Windows和手机上进行测试和验证。 这个功能需要我们研发部门的实际支持,这也是Hydra Lab的“与生俱来”的能力。
InfoQ:您带领团队推动了云测试平台Hydra Lab的建设和完善。 建设Hydra Lab的机遇和想法是什么?
卜绍鹏:Hydra Lab 刚刚开源几个月。 我认为建立 Hydra Lab 的机会与微软工程师驱动的文化有很大关系。 此外,我们还借鉴了许多测试领域的经典作品,例如:
另外,在智能化的探索上,我们和微软亚洲研究院MSRA以及微软其他团队有很多合作和共创,共同推动了这个领域的一些专利,所以我们非常感谢他们的帮助。 在搭建Hydra Lab平台的过程中,我们首先解决了团队内部和微软兄弟团队的实际需求和测试痛点。 在服务好他们的同时,也伴随着我们平台稳定性和功能性的提升。 稳定性问题基本解决后,我们开始考虑如何结合智能,引入AI。 前段时间的开源发展是一个重要的时间点,大语言模型的到来也带来了新的变化。
InfoQ:Hydra Lab 能否解决您刚才提到的自动化测试痛点? Hydra Lab有哪些安全设计?
周乐:是的,其实这些问题都比较容易解决。 例如,有了云平台,跨区域协作变得更加容易。 美国有五部手机,中国有五部手机。 我们可以将它们全部连接到 Hydra Lab 平台。 而且,中方团队可以在美国的五部手机上部署、测试和验证新变化,美方团队也可以在中国的手机上进行验证。 这样,跨区域的问题就得到了很好的解决。
此外,我们还实现了一些可以在测试任务中配置的规则和配置约定。 在每个测试任务的定义描述中,我们可以配置一些执行规则、前置脚本和后置脚本等。我们还实现了一个基于OAuth 2.0的简单的用户权限系统,可以轻松连接用户服务器,支持粗粒度细粒度的权限控制。
对于跨平台测试场景,可以在项目中找到一个叫AppiumCrossRunner的东西,它是一个通过Appium实现跨平台测试的测试执行器(Test Runner)。 在Hydra Lab中,你可以找到各个平台的Runner,这也体现了我们对测试执行流程的抽象。
黑盒测试领域智能测试探索
InfoQ:与其他同类型平台相比,Hydra Lab有哪些技术特点和差异化优势?
卜少鹏:我们的项目刚刚开源几个月。 目前,我个人在开源社区中还没有找到与Hydra Lab定位相同的项目。 在GitHub上,Hydra Lab的核心分类标签是CloudTesting,即云测试系统。 在这个标签下,Hydra Lab 排名第一。在当前流行的平台工程理念下,Hydra Lab 也跻身前五。 这也说明目前开源云测试平台的竞争解决方案非常少。
Hydra Lab 提供 RESTful API 和 Azure DevOps 平台的集成插件; 为了方便Android开发者集成,还提供了Gradle插件。 此外,Hydra Lab还支持Android和Windows平台应用程序的性能测试。 目前可以提取被测应用的功耗和内存消耗数据,并直观地呈现在测试报告中。
最后,在智能测试方面,我们在Hydra Lab看到了很多大语言模型的应用案例,最近也纳入了很多相关的PR。 这种开源项目可能是目前唯一的一个。
周乐:关于测试生成的智能化,我们团队的Dexter最近在写一个工程单测试生成的解决方案。 他已经在 Hydra Lab 进行了 PR 代码审查。 欢迎大家参与评论,共同创作。
InfoQ:您提到您的团队在黑盒测试领域率先探索了智能测试用例生成。 您能给我们详细介绍一下吗? 主要采用哪些方法?
周乐:我简单介绍一下应用探索过程。 在应用探索过程中,我们会首先使用屏幕理解模型对当前页面的UI进行特征提取和分类,然后使用大语言模型对特定页面元素进行判断和操作,以覆盖尽可能多的页面或完成特定的用户场景。
卜少鹏:是的,周乐提到的是基于UI探索的智能测试方案,更多是从黑盒的角度。 目前大语言模型带来的测试智能,尤其是测试生成,大多是基于白盒测试的角度,相当于把代码发给大语言模型,要求它编写提高性能的单元测试用例代码测试覆盖率。 黑盒测试下的测试远比白盒测试复杂,仍然是一个比较前沿的探索。 对于黑盒测试来说,代码就像一个黑盒,内部逻辑是不可见的,而应用程序接口或者可执行程序的包中包含着丰富的信息。 “上下文”庞大且多模态,很难直接转化为提示。 那么,我们如何让大语言模型发挥作用呢?
Hydra Lab团队集思广益并目前采用的核心思想是:先探索,再利用。 首先通过一些策略来探索和漫游一个软件,然后转化理解形成数据结构,最后将这些数据作为后续探索和用例生成的基础。 这相当于通过探索总结提炼了黑匣子的内部逻辑,完成了一次“有损压缩”。 这个思路也很类似于测试人员第一次使用一个软件时,会先探索、了解它,同时在旁边整理一张信息图。 这在测试领域称为“功能图”或“状态图”,然后设计用例。 ; 这是非常自然且接近人类操作的。 如果我们可以用计算机做到这一点,我们就可以自动进行探索、绘制状态图并生成测试用例。
“工程师的价值仍然非常重要,未来还有很多工作要做。”
InfoQ:大模型技术的发展给软件测试带来了更多的可能性。 对于想要在项目中使用大型模型进行软件测试的团队,您有什么建议?
卜绍鹏:首先,面对大模型,我们需要冷静思考。 它有优点,但目前还不是万能的。 我们要学习、了解它的特点,跟踪它的进展,了解它的“禀赋”,根据我们遇到的问题找到切入点,让它为我们所用; 我们必须避免机械地复制它。 对于某些问题,使用普通算法或经验法则可能会解决问题。 二是可以用他山之石攻玉。 多关注开源解决方案和数据集,去HuggingFace、GitHub等宝藏平台逛逛。 未来,多模态开源模式或许值得持续关注。 第三,我们高度重视数据的价值。 高功率模型由高质量数据提供。 Hydra Lab项目组目前正在探索各种场景下的软件测试数据集的构建。
InfoQ:您认为大型模型在软件开发工作流程中的最大价值是什么? 大模型对软件开发工作流程的改变将如何影响软件开发行业未来的发展趋势?
卜绍鹏:大模型最近之所以这么受欢迎,很大程度上是因为它成为了连接工业界和学术界的机会。 行业可以直接利用大模型涌现的新能力,大规模应用到用户场景中,而这些应用很容易成为媒体话题,仿佛“好评如潮”,给大家带来新的曙光。 AI架构从Seq2Seq、Self-Attention、Transformer、GPT一路走来,在模型规模的突破、语言、代码、图像生成的突破之后实现了质的变化。 突破发生后,我们发现很多任务都可以转化为自然语言,这样我们就可以将测试用例转化为语言描述,从而让大型模型可以应用到这些场景中。 只要能用有限的语言清晰地描述一个需求点,大模型就能成为实用的解决方案。
周乐:大模型在软件开发工作流程中最大的价值在于可以提高软件开发的效率和质量。 通过使用大型模型,软件开发人员可以自动生成代码、优化代码、测试代码并快速生成文档。
一方面,大模型将使软件开发更加大众化、便捷化,让更多的人参与到软件创作中,从而促进软件的创新和多样性。 另一方面,大模型也会给软件开发带来一些挑战和风险,比如如何保证大模型生成的代码的正确性和安全性,如何处理大模型可能存在的偏差和误导,如何保护大型模型使用的数据。 数据隐私和版权等
综上所述,大型模型是一种强大的工具,可以为软件开发带来巨大的价值和影响。 但我们也需要意识到它潜在的问题和局限性并合理使用它。
InfoQ:您在实际研发过程中使用过大型模型吗? 您使用它们的体验如何?
卜少鹏:我个人几乎每天都会频繁使用大型模型,而且我也是 GitHub Copilot X 的忠实用户。对于一些涉及敏感数据的问题,我会使用 Azure OpenAI Service 或 Bing Chat Enterprise。 这些AI工具可以帮助开发者编写电子邮件和代码,确实可以大大提高生产力; 它也有一定的局限性,比如有时会凭空调用不存在的 API。 在团队层面,我们正在探索Copilot for Pull Request的应用、工程单元测试生成方案等,取得了一定的成果,并生成了一些内容,方便大家的工作; 还有一些挑战和困难(解决大模型的幻觉和不稳定问题)正在被克服。
InfoQ:尽管受到大型模型的影响,软件工程师需要具备哪些素质才能拥有核心竞争力?
卜绍鹏:很好的热点问题。 首先,自信非常重要。 不要将自己视为只是一个“螺丝钉”或为自己设定限制。 你必须摆脱初级角色的地位; 每个关注AIGC话题的人都已经走在了时代的最前沿。 未来是跨领域、跨国界的。 在学科创新时代,具有多学科背景、具有独立思考能力的软件工程师,掌握Copilot后将能够创造更多价值,潜力巨大; 同时,努力提高自己解决问题的能力和范围,集中精力解决问题。 定位,提升自身综合能力,打造自身跨领域优势; 另外,拆解复杂问题的能力和沟通表达的能力也很重要:拆解和处理项目中的复杂问题往往需要大量的领域知识,并结合环境和情境调动逻辑思维同理心,这在大型模型中不太可能提供。 表达和沟通技巧与一个人的同理心有关。 有了大语言模型,我们不仅可以与人产生同理心,在与AI交谈时也可以有“同理心”。 有必要知道正在发生什么以及为什么。 Prompt Engineering 似乎正在探索并建立我们对人工智能的同理心。
周乐:我非常同意少鹏的观点。 有道而无术,术还可以求。 有术而无道,则只是术而已。 我认为,我们改进的重点不应该局限于某种技术或框架。 如何快速学习新知识,如何在复杂的环境中定位和解决问题,如何与团队成员和客户进行有效沟通,是我们应该思考和提升的。
采访嘉宾
卜绍鹏,微软中国高级研发经理,就职于微软移动智能体验产品部,负责Phone Link项目工程体系搭建; 构建Hydra Lab开源云测试框架,服务于微软多个内部产品测试; 与微软专家胡晓武、莫曲合着的《软件工程最佳实践》即将出版。
周乐,微软测试平台后端技术专家,负责Hydra Lab的核心模块开发和整体驱动技术架构演进,并主导项目的技术发展方向。 曾担任普源高级开发工程师,主导数据资产平台研发,参与低代码平台开发。
推荐活动
以“扬帆AIGC软件工程转型”为主题的QCon全球软件开发大会北京站将于9月3日至5日在北京富力万丽酒店正式开幕。本次大会谋划了AIGC浪潮下的研发效率提升,大前端——端集成与效率提升、大模型应用实现、面向AI的存储、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程等。 语言和 FinOps 等近 30 个令人兴奋的主题。 会上,卜少鹏老师将就“利用大模型打造更聪明的猴子:下一代跨平台软件测试基础设施Hydra Lab”主题进行进一步分享,敬请期待~
会议注册即将结束。 门票折扣信息请联系票务经理:18514549229(微信同号)。 点击此处查看QCon北京站完整日程,期待与开发商现场交流。