AI动力的Android自动化:[POC] 改变移动应用的测试

在当今快节奏的数字化领域,确保移动应用程序的无缝功能和性能至关重要。然而,随着Android应用程序变得越来越复杂,传统的测试方法往往无法满足对全面、高效和快速测试的需求。这就是人工智能(AI)发挥作用的地方,它革新了Android自动化,使测试更加智能、快速和具有韧性。

“由AI 动力 Android 自动化:改变移动应用测试”的标题探讨了一个概念验证(POC),展示了AI 驱动的自动化工具和策略如何重塑我们测试 Android 应用程序的方式。从提高测试覆盖范围和准确性到在问题出现之前预测潜在问题,AI为Android自动化工程师提供了一个强大的新工具包。

那么,这个POC证明了自己的价值吗?让我们找出来!加入我们,一起开始这段旅程,发现人工智能是如何从根本上改变Android测试的,并学习如何将这些创新整合到自己的项目中。

A glimpse a the whole POC flow

概念是通过API将用户测试案例提示和应用程序页面源代码发送到chatGPT,让其完成工作。最重要的是为chatGPT提供明确的提示和方向。

工作流程详情:

  1. 用户输入集合:
  2. 测试案例提示:捕获测试案例的特定意图(例如,“使用有效凭据登录”),以便给ChatGPT一个精确的动作来自动化。
  3. 页面源数据:检索应用程序UI组件的结构化XML或JSON表示,这将使ChatGPT能够准确地将命令映射到UI元素。

2. API 调用的提示结构:

  • 指示清晰度:在每次API调用开始时,先总结测试用例和应用程序上下文,然后指定所需的自动化命令样式(例如,WebdriverIO或Appium)。
  • 元素识别:确保页面源数据有条理,使UI元素名称和ID清晰可见,以便ChatGPT准确生成命令。

这是我们使用的api调用:

const response = await openai.chat.completions.create({
model: "gpt-3.5-turbo",
messages: [
{ role: "system", content: "You are an assistant that provides commands in JSON format." },
{ role: "user", content: `Analyze this prompt: "${userPrompt}" along with the HTML source provided. Return a JSON object in this format, no additional text, JSON ONLY!:\n\n{
"action": "fill" or "click",
"target": "<XPATH selector>",
"value": "<text to fill, if action is 'fill'>"
}\n\nHTML:\n${pageSource}` }
]
});

3. 执行和完善:

API调用的结果是以JSON格式呈现的。以下是示例:

[0-0] Valid command: {
[0-0] action: 'fill',
[0-0] target: "//android.widget.EditText[@content-desc='test-Password']",
[0-0] value: 'secret_sauce'
[0-0] }

根据上面的json数据,我们自动将它们转换为webdriverIO命令。请见下面的代码片段:

async function executeCommand(command, pageSource) {
if (command.action === "fill") {
const element = await $(command.target);
await element.waitForDisplayed({ timeout: 2000 });
await element.setValue(command.value);
console.log(`Filled ${command.target} with ${command.value}`);
} else if (command.action === "click") {
const element = await $(command.target);
await element.waitForDisplayed({ timeout: 2000 });
await element.click();
await driver.waitUntil(
async () => (await driver.getPageSource()) !== pageSource,
{ timeout: 2000, timeoutMsg: 'Page source did not change after click.' }
);
console.log(`Clicked ${command.target}`);
} else {
console.log("Unknown action:", command.action);
}
}

export async function ai(userPrompt: string): Promise<string> {
console.log(userPrompt);
let pageSource = await browser.getPageSource();
let command = await getCommandFromChatGPT(userPrompt, pageSource);
console.log(command);
await executeCommand(command, pageSource)
}

如我们所看到的,POC仅限于填写、点击。仍有改进空间。

结果

结论

将ChatGPT集成到移动测试自动化中,为简化测试工作流提供了强大的方式。通过API调用发送结构良好的测试用例提示和全面的页面源数据,测试人员可以使用最少的手动脚本自动化复杂场景。这一概念验证突显了AI在自动化测试中的转变潜力——实现快速、精确的命令生成,与独特的应用程序结构相吻合。借助优化的提示技术和清晰的指导,ChatGPT可以显著提升测试效率,使移动测试自动化对质量保障团队更具可访问性、适应性和效果性。

2024-10-31 04:20:39 AI中文站翻译自原文