Введение в тестирование программного обеспечения. Введение в тестирование программного обеспечения Тема цели и задачи тестирования по
Скачать 0.6 Mb.
|
Введение в тестирование программного обеспеченияТема 1.ЦЕЛИ И ЗАДАЧИ ТЕСТИРОВАНИЯ ПОНесколько определенийДефект (баг, глюк; defect, bug) – любое несоответствие фактического и ожидаемого результата (согласно требованиям или здравому смыслу).Тест-кейс (test case) – набор входных данных, условий выполнения и ожидаемых результатов, разработанный с целью проверки того или иного свойства или поведения программного средства.Тест-план (test plan) – часть проектной документации, описывающая и регламентирующая процесс тестирования.Билд (build) – промежуточная версия программного средства (финальный бил часто называют релизом (release)).Жизненный цикл ПОДля более глубокого понимания места процесса тестирования в разработке ПО, познакомимся с этапами жизненного цикла ПО. Он включает:
Жизненный цикл ПО: затратыАналитики отмечают, что распределение затрат по стадиям жизненного цикла ПО примерно таково:
Продукты, подвергаемые тестированиюТестировать можно (и нужно!):
Проверка соответствия программы требованиям, осуществляемая путем наблюдения за ее работой в специальных, искусственно созданных ситуациях, выбранных определенным образом.ЧТО ТАКОЕ ТЕСТИРОВАНИЕ?
ЧТО ТАКОЕ ТЕСТИРОВАНИЕ?Цель тестирования – помочь сделать качественный продукт и в намеченные сроки.Исходя из цели, можно сказать, что Тестирование По – это процесс определения качества программного продукта.Тестирование, в первую очередь зависит от величины проекта и модели его разработки.ПРОЦЕСС ТЕСТИРОВАНИЯTest Design Test Execution Analysis & Reporting Test Planning
Тест-план
Тест кейсы
Отчеты об ошибках Журналы испытаний
Финальный отчет КАЧЕСТВО ПОКачественный – значит соответствующий ожиданиям того, кому этот продукт предназначается.Для этого нужны требования к продукту.В зависимости от того, какие это требования – соответственно, нужно выбирать подход, как мы будем убеждаться, что они соблюдаются.КАЧЕСТВО ПОСледует помнить, что качество продукта определяется качеством процесса его разработки.Некоторые рассуждения о качестве:
КАЧЕСТВО ПОДля того, что бы понять, что продукт соответствует требованиям пользователя и/или заказчика применяют верификацию и валидацию.Верификация отвечает на вопрос: «Соответствует ли продукт требованиям?», а валидация: «Можно ли использовать продукт для определенных целей?»Верификация – это процесс оценки системы или её компонентов с целью определения удовлетворяют ли результаты текущего этапа разработки условиям, сформированным в начале этого этапа. Т.е. выполняются ли наши цели, сроки, задачи по разработке проекта, определенные в начале текущей фазы.Валидация – это определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе.
Функциональность и надежность являются обязательными критериями качества ПП, причем обеспечение надежности является неотъемлемой частью всех этапов и процессов разработки ПП.КРИТЕРИИ КАЧЕСТВАНиже приведены лишь некоторые примеры того, как могут формулироваться критерии качества.
КРИТЕРИИ КАЧЕСТВАБоб Мартин на конференции “Agile 2008” предложил прекрасную метрику качества кода: “What the f… / per minute”. Для проведения исследования нужен лишь секундомер, эксперт и калькулятор.КЛАССИФИКАЦИЯ ТЕСТИРОВАНИЯ ПОСтатическое тестирование (static testing) - это процесс анализа самой разработки программного обеспечения, иными словами – это тестирование без запуска программы (проверка кода, требований, функциональной спецификации, архитектуры, дизайна и т.д.)Динамическое тестирование (dynamic testing) - это тестовая деятельность, предусматривающая эксплуатацию (запуск) программного продукта.
МЕТОДЫ ТЕСТИРОВАНИЯМетод белого ящика (white-box testing, glass-box testing) – тестирование, при котором тестировщик имеет доступ к коду. Его еще называют тестированием стеклянного ящика или тестированием прозрачного ящика..Тесты основаны на знании кода приложения и его внутренних механизмов.Метод белого ящика часто используется на стадии, когда приложение ещё не собрано воедино, но необходимо проверить каждый из его компонентов, модулей, процедур и подпрограмм.МЕТОДЫ ТЕСТИРОВАНИЯМетод чёрного ящика (black-box testing) заключается в том, что тестировщик имеет доступ к ПО только через те же интерфейсы, что и заказчик или пользователь.Тестирование чёрного ящика ведётся с использованием спецификаций или иных документов, описывающих требования к системе на основе применения пользовательского интерфейса для ввода входных и получения выходных данных.Цель данного метода – проверить работу всех функций приложения на соответствие функциональным требованиям. Как вы думаете, каковы основные преимущества метода белого ящика? А чёрного ящика? МЕТОДЫ ТЕСТИРОВАНИЯМетод серого ящика (gray box testing) – совокупность подходов из методов белого и чёрного ящика.Этот метод, как правило, используется при тестировании веб-приложений, когда тестировщик знает принципы функционирования технологий, на которых построено приложение, но может не видеть кода самого приложения.ПО ОБЪЕКТУ ТЕСТИРОВАНИЯ
ПО ОБЪЕКТУ ТЕСТИРОВАНИЯФункциональное тестирование (functional testing) – процесс проверки программного обеспечения, сконцентрированный на анализе соответствия ПО требованиям и спецификациям. Функциональное тестирование ещё называют поведенческим или тестированием на поведенческом уровне.Цели функционального тестирования:
ПО ОБЪЕКТУ ТЕСТИРОВАНИЯТестирование производительности (performance testing) – проверяет способность программы выполнять заданное количество операций в заданный промежуток времени:
ПО ОБЪЕКТУ ТЕСТИРОВАНИЯТестирование удобства использования (usability testing) – проверка того, насколько пользователю удобно и приятно работать с приложением.Суровая правда жизни (C) bash.org.ru «Поражаюсь старательности подрастающего поколения... Сегодня по дороге на работу заметил появление большого количества скворечников на деревьях. Дабы не долбить деревья гвоздями, скворечники примотаны скотчем. Многие прямо поперек кругленького отверстия...» ПО ОБЪЕКТУ ТЕСТИРОВАНИЯТестирование безопасности (security testing)Тестирование безопасности представляет собой ряд работ: от разработки политики безопасности до тестирования безопасности на уровне приложения, операционной системы и сетевой безопасности.Тестирование безопасности может иметь различную степень покрытия:
ПО ОБЪЕКТУ ТЕСТИРОВАНИЯТестирование интернационализации (internationalisation testing) – проверка готовности продукта к переводу на различные языки.Тестирование локализации (localisation testing) – проверка качества перевода продукта на конкретный язык.ПО ОБЪЕКТУ ТЕСТИРОВАНИЯИ ещё немного о тестировании локализации …суровая правда жизни с bash.org.ru«Попалась одна прога. Всё бы ничего, но русификация интерфейса не смогла оставить равнодушной. Итак – лучшее (орфография сохранена):
ПО ОБЪЕКТУ ТЕСТИРОВАНИЯТестирование совместимости (compatibility testing) – проверка того, как приложение взаимодействует с другими приложениями и операционной системой. В случае веб-ориентированных приложений особое внимание уделяется совместимости с различными браузерами.Инсталляционное тестирование (installation testing) – проверка всего того, что связано с инсталляцией продукта в систему и удалением продукта из системы.Тестирование документации (documentation testing) – вид тестирования, с которого начинается почти любой проект. Призвано обнаружить ошибки в документации. Эти ошибки опасны тем, что они, как маленький комок снега могут вызвать лавину проблем, вырастая на более поздних стадиях работы с проектом в очень сложно-устранимые и дорогостоящие последствия.ПО СТЕПЕНИ АВТОМАТИЗАЦИИ:
ПО СТЕПЕНИ ИЗОЛИРОВАННОСТИ КОМПОНЕНТОВ:Компонентное (модульное) тестирование (component/unit testing) – тестирование отдельного модуля программного средства (под модулем может пониматься в т.ч. отдельный класс, метод и т.д.)Интеграционное тестирование (integration testing) – проверка того, как отдельные компоненты, проверенные на предыдущем уровне, взаимодействуют друг с другом.Системное тестирование (system/end-to-end testing) – полная проверка приложения: проверяются как функциональные, так и нефункциональные требования.ПО ВРЕМЕНИ ПРОВЕДЕНИЯ ТЕСТИРОВАНИЯ:Альфа-тестирование (alpha testing) – имитация реальной работы с системой штатными разработчиками, либо реальная работа с системой потенциальными пользователями/заказчиком.Тестирование при приёмке (smoke testing)Тестирование новой функциональности (newfeature testing) – проверка того, что заявленный в данном билде новый функционал работает должным образом.Регрессионное тестирование (regression testing) - проверка того, что внесённые в приложение изменения не привели к потере работоспособности того, что ранее работало, и/или привели к работоспособности того, что ранее не работало.Тестирование при сдаче (acceptance testing)Бета-тестирование (beta testing) – интенсивное использование почти готовой версии продукта (как правило, программного или аппаратного обеспечения) с целью выявления максимального числа ошибок в его работе для их последующего устранения перед окончательным выходом (Релизом) продукта на рынок, к массовому потребителю. Кроме того, открытие бета-тестирования может использоваться как стратегия: продвижение продукта на рынок, т.к. реклама, а также получение предварительных отзывов. В отличие от альфа-тестирования, проводимого силами штатных разработчиков или тестировщиков, бета-тестирование предполагает привлечение добровольцев из числа обычных будущих пользователей, которым доступна упомянутая предварительная версия продукта (так называемая бета-версия).ПО ПРИЗНАКУ ПОЗИТИВНОСТИ СЦЕНАРИЕВ:
Ожидаемый результат (expected result) – такое поведение программного средства, которое мы ожидаем в ответ на наши действия.ПО СТЕПЕНИ ПОДГОТОВЛЕННОСТИ К ТЕСТИРОВАНИЮ:
ВЫВОДЫ1. Тестирование всегда разное. Задача тестироващика – узнать, какие действия будут наиболее полезными в его условиях работы.2. Наша основная задача – проверять корректность работы программ и сообщать руководителю проекта "что работает, а что – нет".И еще…1. Целью тестирования является обнаружение ошибок в тестируемом объекте, а не доказательство их отсутствия.2. Тестировщики не отвечают за качество. Они помогают тем, кто за него отвечает.3. Тестирование даёт тем большую экономическую отдачу, чем на более ранних стадиях работы над проектом оно выявило дефект.4. Тестирование имеет смысл прекращать тогда, когда устранены все критические и 85% и более некритических дефектов программы, т.к. дальнейшее тестирование, как правило, является неоправданной статьёй расходов.Психологические аспекты тестированияХороший тестировщик должен обладать следующими психологическими качествами:
Технические навыки тестировщикаТестировщик (в идеале) должен знать следующие технологии:Программирование: C/C++/C#, Java, Object Pascal, Visual Basic, JavaScript, VBScript, HTML, .NET.Администрирование СУБД: Oracle, MS SQL, IBM DB2, Sybase, Informix.Системное администрирование: Windows, Sun Solaris, HP-UX, IBM AIX, Linux, Free BSD.Сетевое администрирование: NetWare, Cisco IOS, TCP/IP, IPX/SPX, NetBIOS.Автоматизированное тестирование: Segue SilkTest and SilkPerformer, Mercury Interactive WinRunner, Quick Test Pro and LoadRunner, JUnit, HTTP Unit. |