Post on 21-Dec-2014
description
Тестирование ПО
От 50 к 90• Переход от нацеленности на доказательство
отсутствия ошибок к поиску ошибок в ПО.
• Процесс тестирования расширяется на
весь период разработки ПО.
• Появление специализированных программ.
• Появление отдельной профессии.
• Тестирование не только для поиска ошибок.
По цели тестирования• Функциональные тесты. Поиск ошибок в ПО.
• Тестирование производительности.
• Нагрузочное тестирование. Определение работы ПО при
ожидаемой нагрузке.
• Стресс-тестирование. Анализ пропускной способности ПО
при максимальной нагрузке.
• Тестирование надежности. Проверку стабильности работы
ПО при длительном периоде и рабочей нагрузке.
• Тестирование пользовательского интерфейса (usability).
Проверка эргономичности работы с ПО.
• Тестирование безопасности.
По открытости системы• Черный ящик. Нам ничего не известно
о коде и ПО. Тестирование
производится с позиции конечного
пользователя.
• Белый ящик. Предполагается, что нам
доступен исходный код системы.
if(condition){
DoWork1();}else{
DoWork2();}
На такой код дайте два теста!
По степени автоматизацииРучное тестирование Автоматизированное
тестирование
По степени изолированности• Модульное или юнит-тестирование. В качестве компонентов
выделяют классы или даже методы классов.
• Интеграционное тестирование. При данном тестировании
программные модули (классы) объединяются и
автоматизировано тестируются совместно по методу черного
ящика.
• Системное тестирование. Тестируется вся система целиком по
методу черного ящика.
Библиотеки для unit-тестирования
• NUnit. Имеются дополнения для
тестирования WinForms и WebForms:
NUnit.Forms и NUnit.ASP
соответственно.
• msTest. Распространяется
компанией Microsoft.
• xUnit.
• mbUnit.
Основные принципы unit-тестирования
• Fast (Быстрота). Тесты должны выполняться быстро.
• Independent (Независимость). Результаты выполнения одного
теста не должны быть входными данными для другого.
• Repeatable (Повторяемость). Тесты должны давать одинаковые
результаты независимо от среды выполнения.
• Self-Validating (Очевидность). Тест либо прошел, либо не прошел.
• Timely (Своевременность). Тесты должны создаваться
своевременно.
Преимущества unit-тестов
• Отличный источник спецификации системы,
может выступать вместо документации.
• Unit-тесты позволяют легко вносить
изменения в ПО. Нету страха что-нибудь
сломать.
• Unit-тесты положительно влияют на
архитектуру и дизайн системы.
TDD (test driven development)
• Добавление теста. Любое
добавление функциональности
начинается с написания тестов к
нему.
• Реализация заявленной
функциональности.
• Рефакторинг. Внесение изменений
в код, с целью повышения его
читабельности.
Программист не использующий TDD
TDD евангелист
ПО и литератураCIS
• TeamCity
• TFS
• Jenkins
Bugtracker
• Redmine
• JIRA
• Bugzilla
Selenium
• http://software-testing.ru
• Кент Бек, Экстремальное
программирование: разработка через
тестирование
• Roy Osherove, The Art of Unit Testing
• Andy Hunt, Pragmatic Unit Testing in C#
with NUnit