SlideShare a Scribd company logo
ТЕСТИРОВАНИЕ
ТОЧКА ЗРЕНИЯ РАЗРАБОТЧИКА
IT Talk, September 21, 2017
S
ЭДСГЕР ДЕЙКСТРА
«Тестирование программ
можно использовать для
того, чтобы показать
наличие ошибок и никогда —
для того чтобы показать их
отсутствие!»
Тестирование — это прикладная,
стандартизированная, инженерная пр
актика, которая применима в
большинстве отраслей человеческой
деятельности
S
Здесь тоже есть свои
тонкости и своя
философия
Почему тестировать программы так
важно?
S
Как правило, самые
дорогостоящие ошибки вызваны
изменением одного символа.
S
Ivan
Ivanov
i.ivanov
First name:
Last name:
Login:
0..255
0..255
0..20
a-z, A-Z
a-z, A-Z
a-z, A-Z, 0-9, . - % $
Количество возможных ситуаций > 52255
+ 52255
+ 3620
S
Типы ошибок в проектах
8
25.18% Структурные
22.14% Данных
16.19% Реализация
функциональности
9.88% Конструирования
8.98% Интеграции
8.12% Функциональных требований
2.76% Определение и выполнение
тестов
1.14% Архитектура ПО
S
0%
20%
40%
60%
80%
100%
2K 8K 32K 128K 512K
Конструирование Проектирование Выработка требований
Статистика ошибок на стадиях разработкиS
Правило Парето
работает и в
тестировании ПО:
80% дефектов
локализированы
лишь в 20% вашего
кода.
S
S
Т.е. если тестами покрыто 50%
кода нельзя утверждать, что
удалось предотвратить 50%
возможных дефектов
S
Тестирование - самая
популярная методика управления
качеством
S
Тестирование может выполнятся
разработчиками,
тестировщиками, менеджерами,
заказчиками и т.д.
S
Тестирование черного
и белого ящиков
Тестирование черного
и белого ящиков
Какие тесты пишут
разработчики?
• Модульные тесты
• Функциональные тесты
• Интеграционные
• End-to-end
Пирамида
модульного
тестирования
Тестирование черного
и белого ящиков
F.I.R.S.T.
• Быстрота (Fast) - Если тесты выполняются медленно, вам
не захочется их запускать.
• Независимость (Independent) - Один тест не должен
создавать условия для выполнения следующего теста. Все
тесты должны выполняться независимо и в любом порядке.
• Повторяемость (Repeatable) - Тесты должны давать
повторяемые результаты в любом окружении.
• Очевидность (Self-Validating) - Результатом выполнения
теста должен быть логический признак. Тест либо прошел
либо нет. Тесты должны создаваться своевременно.
• Своевременность (Timely)
Тестирование черного
и белого ящиков
TDD & BDD
Тестирование черного
и белого ящиков
TDD & BDDTDD процесс
Тестирование черного
и белого ящиков
TDD & BDD
TDD
suite('#factorial()', function (){
test('equals 1 for sets of zero length', function (){
assert.equal(1, factorial(0));
});
test('equals 1 for sets of length one', function (){
assert.equal(1, factorial(1));
});
test('equals 2 for sets of length two', function (){
assert.equal(2, factorial(2));
});
test('equals 6 for sets of length three', function (){
assert.equal(6, factorial(3));
});
});
Тестирование черного
и белого ящиков
TDD & BDD
BDD
describe('#factorial()', function (){
it('should return 1 when given 0', function (){
factorial(0).should.equal(1);
});
it('should return 1 when given 1', function (){
factorial(1).should.equal(1);
});
it('should return 2 when given 2', function (){
factorial(2).should.equal(2);
});
it('should return 6 when given 3', function (){
factorial(3).should.equal(6);
});
});
Тестирование черного
и белого ящиков
Особенности
модульного
тестирования
• дает возможность писать много тестов,
причем достаточно быстро
• необходимость изолировать участки
кода (mocks, stubs, spies)
• требует понимания кода, который нужно
тестировать (тестирование белого
ящика)
Тестирование черного
и белого ящиков
TDD & BDD
Инструменты для unit-тестирования
Тестирование черного
и белого ящиков
QUnit
Это библиотека от разра
ботчиков jQuery, позволя
ющая писать unit-
тесты в TDD стиле и
имеющая свой
механизм assert-ов.
QUnit.test( "hello test", function( assert ) {
assert.ok( 1 == "1", "Passed!" );
});
Тестирование черного
и белого ящиков
Mocha
Фреймворк для
тестирования,
позволяющий писать
тесты
в TDD и BDD формате
describe('User', function() {
describe('#save()', function() {
it('should save without error', function(done) {
var user = new User('Luna');
user.save(function(err) {
if (err) done(err);
else done();
});
});
});
});
Тестирование черного
и белого ящиков
Chai
Очень популярная
библиотека
assert’ов
assert.typeOf(foo, 'string');
assert.equal(foo, 'bar');
assert.lengthOf(foo, 3;
assert.property(tea, 'flavors');
assert.lengthOf(tea.flavors, 3);
expect(foo).to.be.a('string');
expect(foo).to.equal('bar');
expect(foo).to.have.lengthOf(3);
expect(tea).to.have.property('flavors').with.lengthOf(3
);
foo.should.be.a('string');
foo.should.equal('bar');
foo.should.have.lengthOf(3);
tea.should.have.property('flavors').with.lengthOf(3);
Тестирование черного
и белого ящиков
Sinon
Инструмент для
создания Mocks,
stubs, spies
function () {
var myAPI = { method: function () {} };
var spy = sinon.spy();
var mock = sinon.mock(myAPI);
mock.expects("method").once().throws();
PubSub.subscribe("message", myAPI.method);
PubSub.subscribe("message", spy);
PubSub.publishSync("message", undefined);
mock.verify();
assert(spy.calledOnce);
}
Тестирование черного
и белого ящиков
Jasmine
describe("A suite is just a
function",
function() {
var a;
it("and so is a spec",
function() {
a = true;
expect(a).toBe(true);
});
});
Популярный в
экосистеме Angular’a,
BDD фреймворк
Тестирование черного
и белого ящиков
Мифы
• Тестирование - это долго и дорого. Разумеется
тестирование увеличивает время на разработку, но
уменьшает время, затраченное на рефакторинг и
багфикс.
• Писать тесты – это скучно и нудно. Написание тестов
позволяет еще раз взглянуть на вашу архитектуру и
принять правильные решения
• 100%-ое покрытия. Тестов необходимо ровно столько,
сколько достаточно для выпуска стабильного и
надежного продукта.
• Тестирование не позволяет писать код без багов.
Тестирование черного
и белого ящиков
Ситуации в
проектах бывают
разные
• Заказчик не поддерживает и не
принимает идею unit-тестов в
проекте
• Тесты пишутся только для наличия и
метрик, а «чистоте» тестов не
уделяется должное внимание
• Вы пишите тесты намного позже
создания кода. Тесты не
актуализируются
?

More Related Content

What's hot

Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
Andrey Karpov
 
Грязная автоматизация
Грязная автоматизацияГрязная автоматизация
Грязная автоматизация
SQALab
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
Dmytro Mindra
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QAFest
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
SQALab
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
Sergey Shvets
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureAnton Katkov
 
Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOS
RAMBLER&Co
 
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
Ontico
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
corehard_by
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QAFest
 
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктов
SQALab
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
Igor Lyubin
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
Igor Lyubin
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
CodeFest
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
SQALab
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Technopark
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Deutsche Post
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Technopark
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
SQALab
 

What's hot (20)

Что могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
 
Грязная автоматизация
Грязная автоматизацияГрязная автоматизация
Грязная автоматизация
 
XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
 
Testing RIA with Selenium
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
 
XP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architectureXP.Party (iOS) - testable code & architecture
XP.Party (iOS) - testable code & architecture
 
Rambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOSRambler.iOS #3: Test-Driven Development в iOS
Rambler.iOS #3: Test-Driven Development в iOS
 
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
 
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья ШишковC++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
C++ CoreHard Autumn 2018. Заглядываем под капот «Поясов по C++» - Илья Шишков
 
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайников
 
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктов
 
Автоматическое тестирование Web api
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
 
Автоматическое тестирование. Моя система
Автоматическое тестирование. Моя системаАвтоматическое тестирование. Моя система
Автоматическое тестирование. Моя система
 
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
 
Шаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптовШаблоны проектирования нагрузочных скриптов
Шаблоны проектирования нагрузочных скриптов
 
Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014Тестирование лекция 2 весна 2014
Тестирование лекция 2 весна 2014
 
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестированииМетод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
Метод No-Tests-Cases: избавьтесь от тест-кейсов в тестировании
 
Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1Тестирование весна 2014 смешанное занятие 1
Тестирование весна 2014 смешанное занятие 1
 
Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?Дефицит ресурсов тестирования... или нет?
Дефицит ресурсов тестирования... или нет?
 

Similar to Евгений Сафронов "Тестирование. точка зрения разработчика"

JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
GeeksLab Odessa
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
Andrey Karpov
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
CEE-SEC(R)
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
Roman Brovko
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
Кирилл Ушков
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
Andrey Karpov
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Dmytro Zharii
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
Kairat Yussupov
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
corehard_by
 
TAP
TAPTAP
TAP
miraj84
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...Iosif Itkin
 
10_tips_for_become_qa
10_tips_for_become_qa10_tips_for_become_qa
10_tips_for_become_qa
SoftengiTrainingCenter
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
Dima Denisenko
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QAFest
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
SQALab
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
MskDotNet Community
 

Similar to Евгений Сафронов "Тестирование. точка зрения разработчика" (20)

JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
JS Lab2017_Евгений Сафронов_Тестирование Javascript кода. Инструменты, практи...
 
Статический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибокСтатический анализ кода: борьба с удорожанием ошибок
Статический анализ кода: борьба с удорожанием ошибок
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
UI+unit testing in iOS
UI+unit testing in iOSUI+unit testing in iOS
UI+unit testing in iOS
 
Всё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программистаВсё о статическом анализе кода для Java программиста
Всё о статическом анализе кода для Java программиста
 
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyЧитабельные отчеты для автоматизации на C# / Gallio / BDDfy
Читабельные отчеты для автоматизации на C# / Gallio / BDDfy
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
 
Continious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-AgileContinious integration-Automated Testing-Solid-Agile
Continious integration-Automated Testing-Solid-Agile
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
TAP
TAPTAP
TAP
 
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
 
10_tips_for_become_qa
10_tips_for_become_qa10_tips_for_become_qa
10_tips_for_become_qa
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
QA Fest 2014. Алексей Лупан. Не тест-кейсы красят тестировщика, а...
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
 

More from DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
DataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
DataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
DataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
DataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
DataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
DataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
DataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
DataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
DataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
DataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
DataArt
 
Selenoid
SelenoidSelenoid
Selenoid
DataArt
 
Selenide
SelenideSelenide
Selenide
DataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
DataArt
 

More from DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Евгений Сафронов "Тестирование. точка зрения разработчика"

  • 2. ЭДСГЕР ДЕЙКСТРА «Тестирование программ можно использовать для того, чтобы показать наличие ошибок и никогда — для того чтобы показать их отсутствие!»
  • 3. Тестирование — это прикладная, стандартизированная, инженерная пр актика, которая применима в большинстве отраслей человеческой деятельности S
  • 4. Здесь тоже есть свои тонкости и своя философия
  • 6. Как правило, самые дорогостоящие ошибки вызваны изменением одного символа. S
  • 7. Ivan Ivanov i.ivanov First name: Last name: Login: 0..255 0..255 0..20 a-z, A-Z a-z, A-Z a-z, A-Z, 0-9, . - % $ Количество возможных ситуаций > 52255 + 52255 + 3620 S
  • 8. Типы ошибок в проектах 8 25.18% Структурные 22.14% Данных 16.19% Реализация функциональности 9.88% Конструирования 8.98% Интеграции 8.12% Функциональных требований 2.76% Определение и выполнение тестов 1.14% Архитектура ПО S
  • 9. 0% 20% 40% 60% 80% 100% 2K 8K 32K 128K 512K Конструирование Проектирование Выработка требований Статистика ошибок на стадиях разработкиS
  • 10. Правило Парето работает и в тестировании ПО: 80% дефектов локализированы лишь в 20% вашего кода.
  • 11. S
  • 12. S
  • 13. Т.е. если тестами покрыто 50% кода нельзя утверждать, что удалось предотвратить 50% возможных дефектов S
  • 14. Тестирование - самая популярная методика управления качеством S
  • 17. Тестирование черного и белого ящиков Какие тесты пишут разработчики? • Модульные тесты • Функциональные тесты • Интеграционные • End-to-end
  • 19. Тестирование черного и белого ящиков F.I.R.S.T. • Быстрота (Fast) - Если тесты выполняются медленно, вам не захочется их запускать. • Независимость (Independent) - Один тест не должен создавать условия для выполнения следующего теста. Все тесты должны выполняться независимо и в любом порядке. • Повторяемость (Repeatable) - Тесты должны давать повторяемые результаты в любом окружении. • Очевидность (Self-Validating) - Результатом выполнения теста должен быть логический признак. Тест либо прошел либо нет. Тесты должны создаваться своевременно. • Своевременность (Timely)
  • 21. Тестирование черного и белого ящиков TDD & BDDTDD процесс
  • 22. Тестирование черного и белого ящиков TDD & BDD TDD suite('#factorial()', function (){ test('equals 1 for sets of zero length', function (){ assert.equal(1, factorial(0)); }); test('equals 1 for sets of length one', function (){ assert.equal(1, factorial(1)); }); test('equals 2 for sets of length two', function (){ assert.equal(2, factorial(2)); }); test('equals 6 for sets of length three', function (){ assert.equal(6, factorial(3)); }); });
  • 23. Тестирование черного и белого ящиков TDD & BDD BDD describe('#factorial()', function (){ it('should return 1 when given 0', function (){ factorial(0).should.equal(1); }); it('should return 1 when given 1', function (){ factorial(1).should.equal(1); }); it('should return 2 when given 2', function (){ factorial(2).should.equal(2); }); it('should return 6 when given 3', function (){ factorial(3).should.equal(6); }); });
  • 24. Тестирование черного и белого ящиков Особенности модульного тестирования • дает возможность писать много тестов, причем достаточно быстро • необходимость изолировать участки кода (mocks, stubs, spies) • требует понимания кода, который нужно тестировать (тестирование белого ящика)
  • 25. Тестирование черного и белого ящиков TDD & BDD Инструменты для unit-тестирования
  • 26. Тестирование черного и белого ящиков QUnit Это библиотека от разра ботчиков jQuery, позволя ющая писать unit- тесты в TDD стиле и имеющая свой механизм assert-ов. QUnit.test( "hello test", function( assert ) { assert.ok( 1 == "1", "Passed!" ); });
  • 27. Тестирование черного и белого ящиков Mocha Фреймворк для тестирования, позволяющий писать тесты в TDD и BDD формате describe('User', function() { describe('#save()', function() { it('should save without error', function(done) { var user = new User('Luna'); user.save(function(err) { if (err) done(err); else done(); }); }); }); });
  • 28. Тестирование черного и белого ящиков Chai Очень популярная библиотека assert’ов assert.typeOf(foo, 'string'); assert.equal(foo, 'bar'); assert.lengthOf(foo, 3; assert.property(tea, 'flavors'); assert.lengthOf(tea.flavors, 3); expect(foo).to.be.a('string'); expect(foo).to.equal('bar'); expect(foo).to.have.lengthOf(3); expect(tea).to.have.property('flavors').with.lengthOf(3 ); foo.should.be.a('string'); foo.should.equal('bar'); foo.should.have.lengthOf(3); tea.should.have.property('flavors').with.lengthOf(3);
  • 29. Тестирование черного и белого ящиков Sinon Инструмент для создания Mocks, stubs, spies function () { var myAPI = { method: function () {} }; var spy = sinon.spy(); var mock = sinon.mock(myAPI); mock.expects("method").once().throws(); PubSub.subscribe("message", myAPI.method); PubSub.subscribe("message", spy); PubSub.publishSync("message", undefined); mock.verify(); assert(spy.calledOnce); }
  • 30. Тестирование черного и белого ящиков Jasmine describe("A suite is just a function", function() { var a; it("and so is a spec", function() { a = true; expect(a).toBe(true); }); }); Популярный в экосистеме Angular’a, BDD фреймворк
  • 31. Тестирование черного и белого ящиков Мифы • Тестирование - это долго и дорого. Разумеется тестирование увеличивает время на разработку, но уменьшает время, затраченное на рефакторинг и багфикс. • Писать тесты – это скучно и нудно. Написание тестов позволяет еще раз взглянуть на вашу архитектуру и принять правильные решения • 100%-ое покрытия. Тестов необходимо ровно столько, сколько достаточно для выпуска стабильного и надежного продукта. • Тестирование не позволяет писать код без багов.
  • 32. Тестирование черного и белого ящиков Ситуации в проектах бывают разные • Заказчик не поддерживает и не принимает идею unit-тестов в проекте • Тесты пишутся только для наличия и метрик, а «чистоте» тестов не уделяется должное внимание • Вы пишите тесты намного позже создания кода. Тесты не актуализируются
  • 33. ?