SlideShare a Scribd company logo
1 of 25
Разработка, развитие и сопровождение авто-тестов Сташевский Павел, 2010
План мероприятия Подумаем над тем, что будем автоматизировать. Порассуждаем, как лучше автоматизировать. Положительное и негативное тестирование. А нужна ли архитектура в авто-тестах? Попытаемся как-то оценить наши авто-тесты и выгоду от них.
У нас будет автоматизация тестирования!!! У нас будет автоматизация!!! У нас будет автоматизация!!! Давайте автоматизировать 
Как это делается обычно Мы пишем скрипты Тестовые скрипты – тест-кейсы Много скриптов, сколько можем написать Скрипт1 Скрипт2 Скрипт3 Скрипт Скрипт Скрипт Скрипт Скрипт Скрипт Скрипт Скрипт Скрипт Именно тестовые скрипты
Как выглядят эти скрипты? <?php class MyTest extends PHPUnit_Extensions_SeleniumTestCase {   protected function setUp() { }   public function testLogin() { //здесь был селениум   }   public function testAddNews() { 	//здесь тоже был селениум }   public function testPresentNews() { 	//кругом одни евреи   } ?>
Но тут возникает проблема Это невозможно поддерживать Используем только раз – для приемочного тестирования Я не знаю, что делают эти тесты Их писал Вася!..
Давайте тесты улучшать Пока треугольные  Наши тесты Базовое средство-драйвер (Selenium RC + PHPUnit) Наш тестовый фреймворк
Чего хочу? Наши тесты Понятные (сел, понял, поменял) Работаем с бизнес-логикой Тесты не зависят от интерфейса (только бизнес-логика) И пишутся быстро Наш тестовый фреймворк Вся работа с селениумом Локализация проблемы (правим только в одном месте) В идеале: одын раз написал – сиди и работай
Так, стоп! Сейчас будем ковыряться в системе. А чего собственно автоматизировать? А может не стоит? Писать отдельные кейсы на каждую ЮСку или делать тестовые сценарии? Как-то делить тесты по группам или пусть все в одной куче? Тестировать все или может не все?
Картинка номер раз. Что будем тестировать? Модуль2 ,[object Object]
Запускаются один раз в 4-5 днейМодуль1 ,[object Object]
Запускаются один раз в 1-2 дняМодуль4 ,[object Object]
Проверяют важный функционал (например, корзину)
Запускаются каждый деньМодуль3 ,[object Object]
Запускаются один раз в 4-5 днейПроблемные места
Все-таки, чего собственно автоматизируем? Тестовые сценарии Пользовательские сценарии
Пример пользовательского сценария
Как мы будем пользоваться тестами? Приемочное тестирование Заказчик доволен Пишем тесты и стабилизируем Довольны все Регрессионное тестирование
А давайте напишем свой тестовый фреймворк Структурный подход Процессный подход Какие-то объекты Какие-то процессы
Решили: будем делать много объектов! Публичная страница программы Публичная страница Описание программы Форма авторизации Публичная страница рубрики Меню Список программ
Тоже самое, только в классах ProgramPublicPage PublicPage DescriptionArea AuthForm RubricPublicPage RubricList ProgramList
А теперь тест! public function testViewProgram() { 	$oRubricPage = new RubricPublicPage(); 	$oRubricPage->getProgramList()->goToProgram($sName); 	$oProgramPage = new ProgramPublicPage(); 	$oProgramPage->getRubricList()->isRibricSelected($sNameRubric); } А еще локаторы можно вынести в конфиги
А так для битриксовыхадминок
А теперь код  $oLoginPage = new CSlLoginAdminPage(); $oLoginPage->login(); $oDetailOSPage = new CSlDetailOSAdminPage(); $aValues = array( 		'Active' => true, 		'Name' => 'OS ' . time(), 		'Sort' => 50 ); $oDetailOSPage->getForm()->fillFields($aValues); $oDetailOSPage->getForm()->apply();
Будем делать по процессному походу

More Related Content

What's hot

Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
Alexei Lupan
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
Alexei Lupan
 
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Mail.ru Group
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QAFest
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
automated-testing.info
 
Тест-дизайн "в цикле"
Тест-дизайн "в цикле"Тест-дизайн "в цикле"
Тест-дизайн "в цикле"
Александр Федоров
 

What's hot (20)

(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
(Seleniumcamp) Selenium IDE как артефакт пикника на обочине
 
Sqadays 8-barancev
Sqadays 8-barancevSqadays 8-barancev
Sqadays 8-barancev
 
[Sqa days]risk driven testing
[Sqa days]risk driven testing[Sqa days]risk driven testing
[Sqa days]risk driven testing
 
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
Алексей Петров, Mail.Ru Group, "Организация конвейера автоматизации тестирова...
 
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?
 
Sqa8 urazov
Sqa8 urazovSqa8 urazov
Sqa8 urazov
 
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
 
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
Проблемы документирования в долгосрочных проектах - хотите поговорить об этом?
 
DevOps подходы в инфраструктуре автоматизации тестирования
DevOps подходы в инфраструктуре автоматизации тестированияDevOps подходы в инфраструктуре автоматизации тестирования
DevOps подходы в инфраструктуре автоматизации тестирования
 
Автоматизация тестирования как сервис
Автоматизация тестирования как сервисАвтоматизация тестирования как сервис
Автоматизация тестирования как сервис
 
Автоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегийАвтоматизация тестирования ролей и привилегий
Автоматизация тестирования ролей и привилегий
 
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
Введение в специальность. Якин Дмитрий - QA: полицейский, нянька и прочие рол...
 
Организация процесса ручного тестирования
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестирования
 
Тест-дизайн "в цикле"
Тест-дизайн "в цикле"Тест-дизайн "в цикле"
Тест-дизайн "в цикле"
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 
Визуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
 
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
Невыносимая переносимость кроссплатформенных приложений на примере десктопных...
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Мелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательностиМелочь пузатая или Объем тест кейса против его содержательности
Мелочь пузатая или Объем тест кейса против его содержательности
 

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

Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
SQALab
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
qasib
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
sef2009
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
Igor Pozumentov
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
etyumentcev
 
About Testers
About TestersAbout Testers
About Testers
antsh
 

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

Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
Промышленный подход к автоматизации тестирования или Keyword-driven testing в...
 
Mva stf module 2 - rus
Mva stf module 2 - rusMva stf module 2 - rus
Mva stf module 2 - rus
 
5 колчинская
5 колчинская 5 колчинская
5 колчинская
 
Sef Streluk Agile
Sef Streluk AgileSef Streluk Agile
Sef Streluk Agile
 
Постановка процесса тестирования в Agile
Постановка процесса тестирования в AgileПостановка процесса тестирования в Agile
Постановка процесса тестирования в Agile
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
ук 03.007.02 2011
ук 03.007.02 2011ук 03.007.02 2011
ук 03.007.02 2011
 
Как мы тестируем анализатор кода
Как мы тестируем анализатор кодаКак мы тестируем анализатор кода
Как мы тестируем анализатор кода
 
TAP
TAPTAP
TAP
 
About Testers
About TestersAbout Testers
About Testers
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOSРоман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
Роман Петров - юнит-тестирование мобильных приложений на примере платформы iOS
 
Светлана Федянина - Процесс тестирования в распределенной команде
Светлана Федянина - Процесс тестирования в распределенной командеСветлана Федянина - Процесс тестирования в распределенной команде
Светлана Федянина - Процесс тестирования в распределенной команде
 
Процесс тестирования в распределенной команде
Процесс тестирования в распределенной командеПроцесс тестирования в распределенной команде
Процесс тестирования в распределенной команде
 
Автоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектахАвтоматизация тестирования на крупных проектах
Автоматизация тестирования на крупных проектах
 
Илья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решенияИлья Фомин - Проблемы автоматизируемости тестирования и их решения
Илья Фомин - Проблемы автоматизируемости тестирования и их решения
 
JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1JavaTalks.Unit Testing.Part 1
JavaTalks.Unit Testing.Part 1
 
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко АлексейSolit 2013, Эволюция тестирования на Selenium, Мычко Алексей
Solit 2013, Эволюция тестирования на Selenium, Мычко Алексей
 
Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?Слои тестового фрамеворка. Что? Где? Когда?
Слои тестового фрамеворка. Что? Где? Когда?
 

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

  • 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.
  • 11.
  • 12.
  • 13. Проверяют важный функционал (например, корзину)
  • 14.
  • 15. Запускаются один раз в 4-5 днейПроблемные места
  • 16. Все-таки, чего собственно автоматизируем? Тестовые сценарии Пользовательские сценарии
  • 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