• Like
Разработка и сопровождении авто-тестов (Selenium)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Разработка и сопровождении авто-тестов (Selenium)

  • 4,019 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
4,019
On SlideShare
0
From Embeds
0
Number of Embeds
10

Actions

Shares
Downloads
28
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Разработка, развитие и сопровождение авто-тестов
    Сташевский Павел, 2010
  • 2. План мероприятия
    Подумаем над тем, что будем автоматизировать.
    Порассуждаем, как лучше автоматизировать. Положительное и негативное тестирование.
    А нужна ли архитектура в авто-тестах?
    Попытаемся как-то оценить наши авто-тесты и выгоду от них.
  • 3. У нас будет автоматизация тестирования!!!
    У нас будет автоматизация!!!
    У нас будет автоматизация!!!
    Давайте автоматизировать 
  • 4. Как это делается обычно
    Мы пишем скрипты
    Тестовые скрипты – тест-кейсы
    Много скриптов, сколько можем написать
    Скрипт1
    Скрипт2
    Скрипт3
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Скрипт
    Именно тестовые скрипты
  • 5. Как выглядят эти скрипты?
    <?php
    class MyTest extends PHPUnit_Extensions_SeleniumTestCase
    {
    protected function setUp() {
    }
    public function testLogin() {
    //здесь был селениум
    }
    public function testAddNews() {
    //здесь тоже был селениум
    }
    public function testPresentNews() {
    //кругом одни евреи
    }
    ?>
  • 6. Но тут возникает проблема
    Это невозможно поддерживать
    Используем только раз – для приемочного тестирования
    Я не знаю, что делают эти тесты
    Их писал Вася!..
  • 7. Давайте тесты улучшать
    Пока треугольные 
    Наши тесты
    Базовое средство-драйвер
    (Selenium RC + PHPUnit)
    Наш тестовый фреймворк
  • 8. Чего хочу?
    Наши тесты
    Понятные (сел, понял, поменял)
    Работаем с бизнес-логикой
    Тесты не зависят от интерфейса (только бизнес-логика)
    И пишутся быстро
    Наш тестовый фреймворк
    Вся работа с селениумом
    Локализация проблемы (правим только в одном месте)
    В идеале: одын раз написал – сиди и работай
  • 9. Так, стоп! Сейчас будем ковыряться в системе.
    А чего собственно автоматизировать?
    А может не стоит?
    Писать отдельные кейсы на каждую ЮСку или делать тестовые сценарии?
    Как-то делить тесты по группам или пусть все в одной куче?
    Тестировать все или может не все?
  • 10. Картинка номер раз. Что будем тестировать?
    Модуль2
    • Реализовано для основных объектов
    • 11. Запускаются один раз в 4-5 дней
    Модуль1
    • Высокое покрытие (80%)
    • 12. Запускаются один раз в 1-2 дня
    Модуль4
    • Быстрые тесты
    • 13. Проверяют важный функционал (например, корзину)
    • 14. Запускаются каждый день
    Модуль3
    • Долгие тесты
    • 15. Запускаются один раз в 4-5 дней
    Проблемные места
  • 16. Все-таки, чего собственно автоматизируем?
    Тестовые сценарии
    Пользовательские сценарии
  • 17. Пример пользовательского сценария
  • 18. Как мы будем пользоваться тестами?
    Приемочное тестирование
    Заказчик доволен
    Пишем тесты и стабилизируем
    Довольны все
    Регрессионное тестирование
  • 19. А давайте напишем свой тестовый фреймворк
    Структурный подход
    Процессный подход
    Какие-то объекты
    Какие-то процессы
  • 20. Решили: будем делать много объектов!
    Публичная страница программы
    Публичная страница
    Описание программы
    Форма авторизации
    Публичная страница рубрики
    Меню
    Список программ
  • 21. Тоже самое, только в классах
    ProgramPublicPage
    PublicPage
    DescriptionArea
    AuthForm
    RubricPublicPage
    RubricList
    ProgramList
  • 22. А теперь тест!
    public function testViewProgram() {
    $oRubricPage = new RubricPublicPage();
    $oRubricPage->getProgramList()->goToProgram($sName);
    $oProgramPage = new ProgramPublicPage();
    $oProgramPage->getRubricList()->isRibricSelected($sNameRubric);
    }
    А еще локаторы можно вынести в конфиги
  • 23. А так для битриксовыхадминок
  • 24. А теперь код 
    $oLoginPage = new CSlLoginAdminPage();
    $oLoginPage->login();
    $oDetailOSPage = new CSlDetailOSAdminPage();
    $aValues = array(
    'Active' => true,
    'Name' => 'OS ' . time(),
    'Sort' => 50
    );
    $oDetailOSPage->getForm()->fillFields($aValues);
    $oDetailOSPage->getForm()->apply();
  • 25. Будем делать по процессному походу
  • 26. Тоже самое только в классах
  • 27. А теперь тест!
    public function testViewProgram() {
    $oManager = new Manager();
    $oManager->addRubric($aValue1);
    $oManager->addProgram($aValue2);
    $oUser = new User();
    $oUser->viewRubric ($aValue1);
    $oUser->viewProgram($aValue2);
    }
  • 28. Мат. часть. Сколько вешать в граммах?
    Сколько автоматизировать?
    Считаем покрытие фич (ЮСок)
  • 29. ТоварищЪ, можно пойти дальше! И собирать метрики 
    Время выполнения авто-тестов
    Количество тестов
    Количество стабильных тестов (о__О, очень важно)
    Количество багов, найденных авто-тестами
  • 30. У матросов нет вопросов???
    Сташевский Павел
    email: pavel.stashevskiy@softline.ru
    Skype: pavel.stashevsky_sl