前言
在 Android 应用测试里面有个 mokey测试可以对app 做稳定性的测试,在app里面随机乱点发送一些事件,看app会不会异常。
这种做法,也称为 Monkey测试 或 Fuzz 测试,在移动应用程序开发中非常常见。
Gremlins.js 模拟随机用户操作:gremlins 单击窗口中的任意位置,在表格中输入随机数据,或者鼠标在页面上任意位置乱点,让 JavaScript 错误,或使程序失败。
如果gremlins不能破坏应用程序,恭喜!该应用程序足够健康,可以发布给真正实用的用户。
基本使用
gremlins horde是一支专业的gremlins军队,随时准备搞砸您的应用程序。释放gremlins开始压力测试:
const horde = gremlins.createHorde();
horde.unleash();
// gremlins will act randomly, at 10 ms interval, 1000 times
gremlins.js提供了几种gremlin种类:一些点击页面上的任何地方,其他的在表格输入中输入数据,其他的在每个可能的方向滚动窗口,等等。
您将在屏幕上和控制台日志中看到gremlins操作的痕迹(它们会留下红色痕迹):
gremlin formFiller input 5 in <input type="number" name="age">
gremlin formFiller input pzdoyzshh0k9@o8cpskdb73nmi.r7r in <input type="email" name="email">
gremlin clicker click at 1219 301
gremlin scroller scroll to 100 25
...
详细文档https://github.com/marmelab/gremlins.js
playwright 运行 gremlin.js
要使用playwright运行gremlin.js,您可以将其作为初始脚本加载。
const { test } = require('@playwright/test');
test('run gremlins.js', async ({ page }) => {
await page.addInitScript({
path: './node_modules/gremlins.js/dist/gremlins.min.js',
});
await page.goto('https://playwright.dev');
await page.evaluate(() => gremlins.createHorde().unleash());
});
python 对应的脚本, 需下载gremlins.min.js 放到本地代码目录
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(record_video_dir="videos/") # 创建上下文,浏览器实例1
page = context.new_page() # 打开标签页
# 初始化,加载js
page.add_init_script(path='./gremlins.min.js')
page.goto("http://47.108.155.10/login.html")
page.wait_for_load_state("networkidle")
# 执行脚本
page.evaluate("gremlins.createHorde().unleash()")
page.close()
运行后,你会看到页面上发生的随机事件