27

Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Embed Size (px)

Citation preview

Page 1: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru
Page 2: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Автоматизированное

тестирование

Rich Web Client

Page 3: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru
Page 4: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Юнит-тестирование

• Чем плохи безбраузерные тесты? • Синхронные и асинхронные тесты• Что использовать?

Page 5: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

jsTestDriver

Page 6: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Cтартуем сервер

Page 7: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Цепляем браузеры

Page 8: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Запускаем тесты

Page 9: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Как выглядит тест?

{     setUp: function () {        // ...    },     testSomething: function () {        // ...    },     tearDown: function () {        // ...    }}

Page 10: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Дополнительно

• Sinon.JS • js-build-tools

Page 11: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Sinon.JS

setUp: function () {    // use fake XHR },testSomeXHR: function () {    var id = null;     var req = new XHR(...)                .send(function (r) { id = r.id; });    // respond to request    assertEquals(1, id); },tearDown: function () {    // restore XHR }

Page 12: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

js-build-tools

Page 13: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

core.RAW.js

var app = null;

function registerApplication(aApp) {    if (app) throw 'Только одно приложение!';    app = aApp;} // #ifdef testmode function unregisterCurrentApplication() {     app = null;} // #endif

Page 14: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

core.js

var app = null;

function registerApplication(aApp) {    if (app) throw 'Только одно приложение!';    app = aApp;}

Page 15: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

core.TEST.js

var app = null;

function registerApplication(aApp) {    if (app) throw 'Только одно приложение!';    app = aApp;} function unregisterCurrentApplication() {     app = null;}

Page 16: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Этого хватит?

Page 17: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Selenium 2

Selenium Core

Selenium Core

Java, Ruby, Python, Perl, PHP or .NET

Page 18: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Selenium 2

Selenium Core

Selenium Core

Java, Ruby, Python, Perl, PHP or .NET

Remote Control

Page 19: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Очень медленно

Page 20: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Grid2

Page 21: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Grid2

Page 22: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Grid2

Page 23: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

PageObjects

public class LoginPage {    ...    public void loginAs(String login,                        String pwd) {        // 1. находим инпут с логином        // 2. заполняем его         // 3. находим инпут с паролем        // 4. заполняем его        // 3. submit    }    ...}

Page 24: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

PageObjects + PageFactory

public class LoginPage {    @FindBy(name = "login")    private WebElement loginEl;        @FindBy(name = "pwd")    private WebElement pwdEl;     ...    public void loginAs(String login, String password) {        // 1. заполняем инпут с логином        // 2. заполняем инпут с паролем        // 3. submit    }    ...}

Page 25: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

LoadableComponent

webagent.goOnline(Status.AWAY)    .getContactList()        .open()            .findContact("Vasya Pupkin");

Page 26: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Когда запускаем тесты

• После завершения фичи• После подготовки prerelease• После раскладки на боевые• По времени

Page 27: Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mail.Ru

Андрей ПлешковВедущий разработчик, «Мой Мир»

[email protected]

СПАСИБО!