Gremlins.js
description
Transcript of Gremlins.js
Monkey testing(Fuzzy)
security+blackbox+stress
Нанимать. У.
Что делать?
Автоматизация. У.
Android Monkey program
Прочие
● Monkey Fuzz testing● JBroFuzz
Viva Gremlins!
- javascript- desktop- server- mobile- NO selenium- contributing
Для начала
var horde = gremlins.createHorde()
horde.unleash();
// каждые 10 ms, 1000 раз
Сущности
Gremlin
Mogwai
Gizmo
Что такое гремлин?
var evt = document.createEvent("MouseEvents");
var clickType = config.randomizer.pick(config.clickTypes);
evt.initMouseEvent(clickType...);
targetElement.dispatchEvent(evt);
На что влияем
● clickTypes(['click', 'mouseover']); // the mouse event
types to trigger
● positionSelector(function() { // find a random pair of
coordinates to click });
● showAction(function(x, y) { // show the gremlin
activity on screen });
● canClick(function(element) { return true }); // to
limit where the gremlin can click
● maxNbTries(5); // How many times the gremlin must look
for a clickable element before quitting
● logger(loggerObject); // inject a logger
● randomizer(randomizerObject); // inject a randomizer
Какие бывают гремлины● clickerGremlin clicks anywhere on the visible area of the document
● toucherGremlin touches anywhere on the visible area of the document
● formFillerGremlin fills forms by entering data, selecting options, clicking checkboxes, etc
● scrollerGremlin scrolls the viewport to reveal another part of the document
● typerGremlin types keys on the keyboard
Свой гремлин
// новый гремлин для blur на активном элементе
horde.gremlin(function() {
document.activeElement.blur();
});
Кто такие Mogwai и Gizmo- alertMogwaiif (config.watchEvents.indexOf('confirm'))
- fpsMogwaiif (fps < 10)
- gizmoMogwai
if (nbErrors == config.maxErrors){horde.stop();}
До выпуска, после выпускаhorde.before(function startProfiler() {
console.profile('gremlins');
});
horde.after(function stopProfiler() {
console.profileEnd();
});
Стратегииhorde.strategy(gremlins.strategies
.delay(50)
.distribution([0.3, 0.3, 0.3, 0.1])
.nb(1000)
.randomizer(randomizerObject))
Выводvar customLogger = {
log: function(msg) { /* .. */ },
info: function(msg) { /* .. */ },
warn: function(msg) { /* .. */ },
error: function(msg) { /* .. */ }
};
horde.logger(customLogger);
или...
Minilogvar log = Minilog('2GIS')Minilog.enable();horde.logger(customLogger);
Давайте пробовать!
grunt-gremlins
Всё