SlideShare a Scribd company logo
1 of 42
Code-driven testing Аудиторія: розробники Олександр Павлишак, 2011 pavlyshak@gmail.com
Agenda Поняття Unit test Підміна залежностей, stubs Тестування взаємодій, mocks Якості хороших тестів Unit vs integration testing Практики Метрики
Тестування Починається разом із розробкою Запускаємо і дивимось Створюємо допоміжні засоби Консольні програми Допоміжний UI
Unit test, визначення Код (зазвичай, метод) Який викликає інший код І після цього перевіряє правильність Деяких припущень Unit = модуль, компонент  (функція, метод, клас, Unit of Work)
Unit test [TestFixture] publicclassCalculatorTests {     [Test] publicvoidSum_ReturnsCorrectValue()     { var math = newCalculator(); int result = math.Sum(1, 2); Assert.AreEqual(3, result);     } }
Arrange/Act/Assert [TestFixture] publicclassCalculatorTests {     [Test] publicvoidSum_ReturnsCorrectValue()     { var math = newCalculator(); // Arrange int result = math.Sum(1, 2); // Act Assert.AreEqual(3, result); // Assert     } }
Єдиний assert/єдиний verify Юніт-тест повинен тестувати щось одне Назва тестуважлива [Test] publicvoidStart_Test() { var survey = newSurvey(); survey.Start(); Assert.AreEqual(SurveyState.InProgress, survey.State); Assert.IsTrue(survey.FinishDate > survey.StartDate); }
Unit test framework Виконання тестів Одного, декількох, всіх Інтеграція з IDE API для написання тестів Автоматизація Перегляд результатів
Unit test framework NUnit, MS Test, MBUnit, DBUnit JUnit, JWalk, TestNG, DBUnit C++test, CppUnit, Google C++ Testing Fx PyUnit
Continuous integration
Continuous integration
Залежності
DEMO [Test] publicvoidStart_ChangesStateToInProgress() { var survey = newSurvey(); survey.Start(); Assert.AreEqual(SurveyState.InProgress, survey.State); }
Залежності Survey залежить від EmailSender Не хочемо відсилати справжні листи Створюємо stub вручну Створюємо stub автоматично Все ще тестуємо стан!Assert.AreEqual(SurveyState.InProgress, survey.State);
Interaction testing Потреба тестувати взаємодії Створюємо mock вручну Створюємо mock автоматично Один mock на тест Тестуємо не стан, а взаємодію!mockEmailSender.Verify();
Stubs + mocks Один тест – один mock Декілька stubs Fakes Stubs 0..* Mocks 0..1
Короткий підсумок
How unit testing helps Швидший цикл тестування коду Коротший фідбек про можливі дефекти Дефекти дешевші
Плюси тестів Кращий код Стабільніша нова функціональність Більше впевненості у змінах Менше регресій Коротші цикли релізів
Якості
Якості юніт тестів Readable Maintainable Trustworthy
Readable Легко зрозуміти, що відбувається в тесті Який код тестується Які передумови Які припущення перевіряються Що тестує тест Простий код тесту
Trustworthy Релевантні до помилок Стабільно (не) проходять Немає конфліктуючих тестів Справді тестують
Maintainable Тести легко реагують на зміни Не вимагають конфігурації Не залежать від інших тестів Простий код тесту
Різновиди
Види тестів Юніт Інтеграційні Інші
Юніт тести Тестують один модуль Виконуються виключно в пам’яті Не вимагають конфігурації Не вимагають DB, FS, AD, Net Завжди Повторювано проходять Або повторювано не проходять Тому що не залежать від змінних факторів
Інтеграційні тести Тестують модулі разом Можуть мати різну поведінку В залежності від Середовища (FS, DB, AD, OS, .config) Порядку виконання Кількості виконання Багатопоточності Повного місяця
Інтеграційні тести -- Ознаки TearDown()  DateTime.Now Thread Environment.MachineName Database.Save(…) File.Open(…)
Mixing Чітке розділення UT та IT
Trustworthy Юніт-тести – ДОВІРА Проходять --> мабуть немає дефекту Не проходять --> точно є дефект Інтеграційні тести – (деколи) НЕДОВІРА Проходять --> немає дефекту Не проходять --> можливо дефект
Практики
Логіка в юніт-тестах Asserts in if/switch/for/while Значно підвищується ймовірність появи дефекта в тесті Погіршується readability & maintainability
Дублювання логіки production коду Приклад Tests last Тест не тестує Expected hardcoded values
Magic numbers Приклад  Найпростіші можливі значення Оголошення і перевірка в тесті
Tests first Тест Не компілюється/не проходить Реалізація  Тест проходить Покращення Впевненість, що тести не містять баги
Зміна тестів Створення: У більшості випадків Видалення: Коли тест більше не потрібний Редагування: Для maintainability/readability Для швидкості Коли тест повинен виконуватись по-іншому
Тестувальник знаходить дефект Новий тест Не повинен бути знайдений тестувальниками знову
Що міряти Кількість регресій Час виправлення дефектів Метрики якості коду People feedback Покриття (coverage)
Покриття (test coverage)
Покриття – способи перевірки «Диверсія» в продакшн коді Автоматизовані засоби

More Related Content

Viewers also liked

Mobile market - Ivasyshyn
Mobile market - IvasyshynMobile market - Ivasyshyn
Mobile market - Ivasyshyn
Igor Bronovskyy
 

Viewers also liked (16)

Selecting BI Tool - Proof of Concept - Андрій Музичук
Selecting BI Tool - Proof of Concept - Андрій МузичукSelecting BI Tool - Proof of Concept - Андрій Музичук
Selecting BI Tool - Proof of Concept - Андрій Музичук
 
Юрчук Андрій - Технологія Qt
Юрчук Андрій - Технологія QtЮрчук Андрій - Технологія Qt
Юрчук Андрій - Технологія Qt
 
11 - rozrobka prohramnoho zabezpechennia dlia vbudovanykh system - dmytro and...
11 - rozrobka prohramnoho zabezpechennia dlia vbudovanykh system - dmytro and...11 - rozrobka prohramnoho zabezpechennia dlia vbudovanykh system - dmytro and...
11 - rozrobka prohramnoho zabezpechennia dlia vbudovanykh system - dmytro and...
 
Mobile market - Ivasyshyn
Mobile market - IvasyshynMobile market - Ivasyshyn
Mobile market - Ivasyshyn
 
Kordyak
KordyakKordyak
Kordyak
 
Aws - Marfej
Aws - MarfejAws - Marfej
Aws - Marfej
 
Скільки коштує проект і чому так.....
Скільки коштує проект і чому так.....Скільки коштує проект і чому так.....
Скільки коштує проект і чому так.....
 
From web to mobile - Василь Кричун
From web to mobile - Василь КричунFrom web to mobile - Василь Кричун
From web to mobile - Василь Кричун
 
Usability - Sadygov
Usability - SadygovUsability - Sadygov
Usability - Sadygov
 
Delivering business intelligence - Rava
Delivering business intelligence - RavaDelivering business intelligence - Rava
Delivering business intelligence - Rava
 
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)03 -  chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
03 - chomu prohramisty ne testuiut - yurii chulovskyi - it event 2013 (5)
 
Improve performance of developer - Khodak
Improve performance of developer  - KhodakImprove performance of developer  - Khodak
Improve performance of developer - Khodak
 
огляд і особливості Symfony 2.0 - Анатолій Квасніков
огляд і особливості Symfony 2.0  - Анатолій Квасніковогляд і особливості Symfony 2.0  - Анатолій Квасніков
огляд і особливості Symfony 2.0 - Анатолій Квасніков
 
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
12 - gradle. evoliutsiia system avtomatychnoi zbirky - sviatoslav babych - it...
 
Техніки швидкого читання - Любомир Ходак
Техніки швидкого читання - Любомир ХодакТехніки швидкого читання - Любомир Ходак
Техніки швидкого читання - Любомир Ходак
 
Побудова ефективної команди - Андрій Бабала
Побудова ефективної команди - Андрій БабалаПобудова ефективної команди - Андрій Бабала
Побудова ефективної команди - Андрій Бабала
 

Similar to Code driven testing -- oleksandr pavlyshak

Процес забезпечення якості програмних продуктів
Процес забезпечення якості програмних продуктівПроцес забезпечення якості програмних продуктів
Процес забезпечення якості програмних продуктів
Igor Bronovskyy
 
Php unit. Y. Muzychushun
Php unit. Y. MuzychushunPhp unit. Y. Muzychushun
Php unit. Y. Muzychushun
HRdepartment
 
Структура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptxСтруктура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptx
ssuser40c4fa
 

Similar to Code driven testing -- oleksandr pavlyshak (20)

Code driven testing (UA)
Code driven testing (UA)Code driven testing (UA)
Code driven testing (UA)
 
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
МИХАЙЛО БОДНАРЧУК «Як перестати боятись та полюбити автотести на JavaScript» ...
 
cpp-2013 #16 Automated testing
cpp-2013 #16 Automated testingcpp-2013 #16 Automated testing
cpp-2013 #16 Automated testing
 
CoreCamp "Automated testing basics for developers"
CoreCamp "Automated testing basics for developers"CoreCamp "Automated testing basics for developers"
CoreCamp "Automated testing basics for developers"
 
Phpunit
PhpunitPhpunit
Phpunit
 
Anton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQAnton Serputko Start performance-testing-from-scratch, BAQ
Anton Serputko Start performance-testing-from-scratch, BAQ
 
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
QA Fest 2015. Ярослав Пернеровский. Мутанты наступают - смогут ли ваши тесты...
 
Automated testing
Automated testingAutomated testing
Automated testing
 
Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.Тестування при розробці програмного забезпечення. Unit Tests.
Тестування при розробці програмного забезпечення. Unit Tests.
 
майстер клас створення вправ в My test
майстер клас створення вправ в My testмайстер клас створення вправ в My test
майстер клас створення вправ в My test
 
Роман Писик - ISTQB Full Advanced: підготовка та застосування знань на практиці
Роман Писик - ISTQB Full Advanced: підготовка та застосування знань на практиціРоман Писик - ISTQB Full Advanced: підготовка та застосування знань на практиці
Роман Писик - ISTQB Full Advanced: підготовка та застосування знань на практиці
 
Web Testing in Agile
Web Testing in AgileWeb Testing in Agile
Web Testing in Agile
 
Процес забезпечення якості програмних продуктів
Процес забезпечення якості програмних продуктівПроцес забезпечення якості програмних продуктів
Процес забезпечення якості програмних продуктів
 
Testing Web in Agile
Testing Web in AgileTesting Web in Agile
Testing Web in Agile
 
Php unit. Y. Muzychushun
Php unit. Y. MuzychushunPhp unit. Y. Muzychushun
Php unit. Y. Muzychushun
 
Design patterns part 2
Design patterns part 2Design patterns part 2
Design patterns part 2
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Чим ще SDET може розважити себе на проекті крім е2е тес...
 
Структура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptxСтруктура тест-кейсу та звіту про помилки.pptx
Структура тест-кейсу та звіту про помилки.pptx
 
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?»  Online Q...
ОЛЕКСАНДР ХОТЕМСЬКИЙ «ChatGPT: який вплив буде мати на тестування?» Online Q...
 
225
225225
225
 

Recently uploaded

Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
ssuser7541ef1
 
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Collaborator.pro
 
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейсиДмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
Collaborator.pro
 

Recently uploaded (17)

Графіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та областіГрафіки стабілізаційних відключень у Чернігові та області
Графіки стабілізаційних відключень у Чернігові та області
 
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
Тренінг про тренінг. Педагогам ЗДО проте як скласти та провести тренінг у кол...
 
70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстання70 років тому – початок Кенгірського повстання
70 років тому – початок Кенгірського повстання
 
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
Анастасія Крижановська. Як AI-революція вплинула на бізнес контент-агентства?
 
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейсиДмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
Дмитро Ковшун. SEO в Crypto & Web 3 не для хомяків: реальність, стратегії, кейси
 
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
Заняття у різновіковій групі. Особливості планування та проведення з дітьми д...
 
Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...Особливості застосування інструментарію оцінювання готовності дитини до навча...
Особливості застосування інструментарію оцінювання готовності дитини до навча...
 
Енергоефективність будинку: як її підвищити.pptx
Енергоефективність будинку: як її підвищити.pptxЕнергоефективність будинку: як її підвищити.pptx
Енергоефективність будинку: як її підвищити.pptx
 
Хвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з нимиХвороби картоплі та заходи боротьби з ними
Хвороби картоплі та заходи боротьби з ними
 
Пасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptxПасивний будинок Енергоефективність ОБСБД.pptx
Пасивний будинок Енергоефективність ОБСБД.pptx
 
Проблема міжпівкульної асиметрії та взаємодії пр №5.pptx
Проблема міжпівкульної асиметрії та взаємодії пр №5.pptxПроблема міжпівкульної асиметрії та взаємодії пр №5.pptx
Проблема міжпівкульної асиметрії та взаємодії пр №5.pptx
 
Альфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptxАльфрейні опорядження поверхонь ТООРтаПД.pptx
Альфрейні опорядження поверхонь ТООРтаПД.pptx
 
Презентація про виникнення балади., особливості
Презентація про виникнення балади., особливостіПрезентація про виникнення балади., особливості
Презентація про виникнення балади., особливості
 
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВІм’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
Ім’я чернігівця на карті Місяця. ЮРІЙ МЕЗЕНЦЕВ
 
10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr
10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr
10_iu_g_2018_stand dfgdf gdf gdfgdfgsdfge er gesr
 
Графіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рікГрафіки відключень у Вінниці і області на 2024 рік
Графіки відключень у Вінниці і області на 2024 рік
 
80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...80 років від часу депортації з Криму кримських татар і осіб інших національно...
80 років від часу депортації з Криму кримських татар і осіб інших національно...
 

Code driven testing -- oleksandr pavlyshak