Skip to content

Latest commit

 

History

History
215 lines (147 loc) · 10.7 KB

README.zh-CN.md

File metadata and controls

215 lines (147 loc) · 10.7 KB

Hydra Lab

搭建属于你的智能移动云测平台

Build Status Spring Boot Appium License visitors


HydraLabFeaturesPreview

What is Hydra Lab? | Get Started | Who are using Hydra Lab? | Contribute | Contact Us | Links | Wiki

Hydra Lab 是什么?

Hydra Lab 是一个基于 Spring Boot & React 构建的服务框架,帮你快速构建一套集测试运行部署、测试设备管理、低代码测试等功能于一身的跨平台云测服务,开箱即用。 它使开发团队能够快速建立一个可自我管理的智能云测试基础设施。在 Hydra Lab 的帮助下,你可以:

  • 搭建:创建一个新的云测试网络。
  • 加入:以最小的代价将你的测试设备部署到现有的网络上。

Hydra Lab 的特性包括:

  • center-agent 分布式设计下的可扩展测试设备管理;测试任务管理和测试结果可视化。
  • 支持 Android Espresso Test
  • 支持在不同平台上进行 Appium(Java) 测试:Windows/iOS/Android/浏览器/跨平台。
  • 无用例的自动化测试:Monkey test,智能探索测试

更多细节,请参见 什么是 Hydra Lab?

入门

请访问我们的 GitHub 项目 Wiki 以了解开发环境的配置流程: 贡献指南

Hydra Lab agent 支持的环境:Windows, Mac OSX, 和Linux (Docker).

支持的平台和框架:

Appium(Java) Espresso
Android
iOS x
Windows x
Web (浏览器) x

开箱即用的 Uber docker 镜像快速指南

Hydra Lab 提供了一个名为 Uber 开箱即用的 docker 镜像。你可以按照下面的步骤,启动内置了一个 center 实例和一个 agent 实例的 docker 容器:

第1步. 从 https://www.docker.com 下载并安装 Docker

第2步. 在你的机器上运行

只需选择以下其中一个命令,即可开始您在 Hydra Lab 的体验:

1. 使用本地存储服务

Hydra Lab 默认使用本地文件系统作为存储,不需要额外的环境变量:

docker run -p 9886:9886 --name=hydra-lab ghcr.io/microsoft/hydra-lab-uber:latest

2. 使用第三方存储服务

Hydra Lab 目前支持 Azure Blob 存储 作为云文件存储解决方案,以持久化存储多种文件类型,例如日志文件、视频、应用程序包等。欢迎为集成其他第三方存储服务做出贡献。(附上此模块的 UML 类图作为参考:存储服务架构。)

根据存储服务的类型,你需要在命令中额外指定一些环境变量。

如果你想要使用 Azure Blob 存储,请访问你的 Azure 门户,创建一个 Azure Blob 存储账户,并获取 connection string。简要步骤:登录 Azure -> Portal -> Storage Accounts -> 创建新的存储账户(你可以限制容器的公共读写) -> 在创建的存储账户中, 找到 Access Keys 页面 -> 复制 Connection stringimage

你可以将以下内容写入一个配置文件(例如 env.properties):

STORAGE_TYPE=AZURE
BLOB_CONNECTION_STR=${YOUR_BLOB_CONNECTION_STR}

然后将文件路径传给 docker container:

docker run --env-file env.properties -p 9886:9886 --name=hydra-lab ghcr.io/microsoft/hydra-lab-uber:latest

或者设置环境参数 -e 直接运行:

docker run -e STORAGE_TYPE=AZURE -e BLOB_CONNECTION_STR=${YOUR_BLOB_CONNECTION_STR} -p 9886:9886 --name=hydra-lab ghcr.io/microsoft/hydra-lab-uber:latest

第3步. 访问前端页面并查看你的已连接设备

Url: http://localhost:9886/portal/index.html#/ (或自定义的端口号).

开始享受你的探索之旅吧!

注意:Uber 现在只提供安卓系统的Espresso测试功能,更多的功能请参考本节:对于 Hydra Lab 用户

构建和运行的快速指南

你也可以用以下命令单独运行中心 java Spring Boot 服务(一个可运行的 Jar):

构建和运行过程需要用到 JDK11+ | NPM | Android SDK 平台工具。

第1步. 构建并运行 Hydra Lab center 服务。

# 在项目根目录,切换到 react 文件夹来构建 Web 前端文件。
cd react
npm ci
npm run pub
# 回到项目根目录,构建 center 可运行的 Jar 。
cd ..
# 对于 gradlew 命令,如果你使用的是 Windows 系统,请用`./gradlew`或`./gradlew.bat`替换。
gradlew :center:bootJar
# 运行并访问 http://localhost:9886/portal/index.html#/
java -jar center/build/libs/center.jar
# 然后访问 http://localhost:9886/portal/index.html#/auth 来生成新的 agent ID 和 agent secret 。

如果你遇到了以下错误: Error: error:0308010C:digital envelope routines::unsupported, 设置环境变量 NODE_OPTIONS 的值为 --openssl-legacy-provider 并重启命令行。

第2步. 构建并运行 Hydra Lab agent 服务。

# 在项目根目录下
cd android_client
# 编译Android端APK
./gradlew assembleDebug
cp app/build/outputs/apk/debug/app-debug.apk ../common/src/main/resources/record_release.apk
# 如果没有安装 Android SDK 平台工具,可以在 https://github.com/microsoft/HydraLab/releases 下载已经编译好的 APK 文件。
# Back to project root
# 在项目根目录下,复制示例配置文件并更新:
# YOUR_AGENT_NAME, YOUR_REGISTERED_AGENT_ID 和 YOUR_REGISTERED_AGENT_SECRET 。
cp agent/application-sample.yml application.yml
# 然后构建 agent jar 并运行它
gradlew :agent:bootJar
java -jar agent/build/libs/agent.jar

第3步. 访问 http://localhost:9886/portal/index.html#/ 并查看你的已连接设备

Technical design overview:

Tech Architecture

对于Hydra Lab的使用者:

注意:如果您是Microsoft FTE并希望加入内部Hydra Lab测试服务,请访问 我们的SharePoint网站 以了解有关内部服务实例的详细信息。

参与贡献Hydra Lab:

谁在使用Hydra Lab?

它已经支持以下Microsoft产品的UI测试自动化:

  • Microsoft Phone Link(Windows UWP应用程序)和 Link to Windows(Android应用程序)
  • Microsoft Launcher (Android)
  • Microsoft Outlook/Edge (Android/iOS)
  • Microsoft Fluent UI Android/Yammer Android

贡献

您对Hydra Lab的贡献将为整个测试自动化生态系统带来改变。请参阅贡献指引 CONTRIBUTING.md

贡献者英雄榜:

联系我们

如果您对Hydra Lab有任何疑问,您可以通过以下方式联系我们:

链接

微软Give员工捐赠活动

感谢您以Hydra Lab的名义为 微软员工捐赠计划 做出的贡献:

@Germey(崔庆才), @SpongeOnline(王创), @ellie-mac(陈佳佩), @Yawn(刘俊钦), @White(刘子凡), @597(姜志鹏)

Microsoft Give

许可证和商标

整个代码库遵循 MIT许可协议

该项目可能包含一些项目、产品或服务的商标或标识。使用 Microsoft 商标或标识需遵循 Microsoft的商标和品牌准则并经授权。在此项目的修改版本中使用 Microsoft 商标或标识不得混淆或暗示 Microsoft 的赞助。任何使用第三方商标或标识的行为均需遵守相关第三方政策。