Похожие презентации:
Тестирование программного обеспечения
1. Тестирование программного обеспечения
2.
Тестирование – один из обязательных этапов разработкипрограммного обеспечения. Его целями выступают: проверка
соответствия ПО исходным задачам, выявление и устранение
ошибок, оптимизация кода.
Результатом становится более эффективная программа или сайт,
способный работать быстро, точно и без проблем. Рассмотрим
более внимательно, что понимается под тестированием, каковы
его основные виды, этапы и используемые инструменты.
3.
В 50–60-х годах прошлого века процесс тестирования былпредельно формализован, отделён от процесса непосредственной
разработки ПО.
В 70-х годах фактически родились две фундаментальные идеи
тестирования: тестирование сначала рассматривалось как процесс
доказательства работоспособности программы в некоторых
заданных условиях, а затем — строго наоборот: как процесс
доказательства неработоспособности программы в некоторых
заданных условиях.
В 80-х годах произошло ключевое изменение места тестирования в
разработке ПО: вместо одной из финальных стадий создания
проекта тестирование стало применяться на протяжении всего
цикла разработки, что позволило в очень многих случаях не только
быстро обнаруживать и устранять проблемы, но даже
предсказывать и предотвращать их появление.
4.
В этот же период времени отмечено бурное развитие иформализация методологий тестирования и появление первых
элементарных попыток автоматизировать тестирование.
В 90-х годах произошёл переход от тестирования как такового к
более всеобъемлющему процессу, который называется
«обеспечение качества», охватывает весь цикл разработки ПО и
затрагивает процессы планирования, проектирования, создания и
выполнения тест-кейсов, поддержку имеющихся тест-кейсов и
тестовых окружений.
5.
В нулевые годы, автоматизация тестирования уже воспринималаськак обычная неотъемлемая часть большинства проектов, а также
стали популярны идеи о том, что во главу процесса тестирования
следует ставить не соответствие программы требованиям, а её
способность предоставить конечному пользователю возможность
эффективно решать свои задачи.
Кто же такой тестировщик?
Если говорить конкретно кто такой тестировщик и чем он
занимается, то это человек, который проверяет работу, сделанную
командой разработки, указывает на ошибки в работе
программного обеспечения (сайта, приложения, чатбота и т.д.).
6. «Верификация, тестирование, валидация»
Цель верификации - обеспечение гарантий того, что отобранноепромежуточное программное изделие или конечная продукция
отвечает специфицированным требованиям.
Верификация программных продуктов представляет
собой проверку готового продукта или его промежуточных
версий на соответствие исходным требованиям. При этом
подразумевается не только тестирование самой программы, но и
аудит проекта, пользовательской и технической документации.
7. «Верификация, тестирование, валидация»
Обычно процесс верификации проводится сверху вниз, начиная отобщих требований, заданных в техническом задании и/или
спецификации на всю информационную систему до детальных
требований на программные модули и их взаимодействие.
На выбор эффективных методов верификации и
последовательность их применения в наибольшей степени влияют
основные характеристики тестируемых объектов:
• класс комплекса программ, определяющийся глубиной связи его
функционирования с реальным временем и случайными
воздействиями из внешней среды, а также требования к качеству
обработки информации и надежности функционирования;
8. «Верификация, тестирование, валидация»
• сложность или масштаб (объем, размеры) комплекса программ иего функциональных компонентов, являющихся конечными
результатами разработки;
• преобладающие элементы в программах: осуществляющие
вычисления сложных выражений и преобразования измеряемых
величин или обрабатывающие логические и символьные данные
для подготовки и отображения решений.
9.
Тестирование - процесс выполнения программы с цельюобнаружения ошибки.
Тестовые данные – входы, которые используются для проверки
системы.
Тестовая ситуация (test case) – входы для проверки системы и
предполагаемые выходы в зависимости от входов, если система
работает в соответствии с ее спецификацией требований.
Хорошая тестовая ситуация – та ситуация, которая обладает
большой вероятностью обнаружения пока еще необнаруженной
ошибки.
Удачный тест - тест, который обнаруживает пока еще
необнаруженную ошибку.
10.
Ошибка - действие программиста на этапе разработки, котороеприводит к тому, что в программном обеспечении содержится
внутренний дефект, который в процессе работы программы может
привести к неправильному результату.
Отказ – непредсказуемое поведение системы, приводящее к
неожидаемому результату, которое могло быть вызвано
дефектами, содержащимся в ней.
Баг – отклонение фактического результата от ожидаемого
результата.
11.
Таким образом, в процессе тестирования программногообеспечения, как правило,
проверяют следующее:
• Проверка того, что программное обеспечение соответствует
требованиям на него
• Проверка того, что в ситуациях, не отраженных в
требованиях, программное
обеспечение ведет себя адекватно, то есть не происходит
отказ системы.
• Проверка программного обеспечения на предмет типичных
ошибок, которыеделают программисты.
12.
Цель Валидации состоит в том, чтобы продемонстрировать, чтоготовая продукция действительно удовлетворяет своему
исходному предназначению.
13. Принципы тестирования
1.Тестирование выявляет проблемы, но не гарантирует ихполного отсутствия. То есть обнаружить все баги, скорее всего, не
получится.
2.100%-ного результата тестирование не дает. Логическое
продолжение предыдущего принципа. Заключается в том, что
всегда существует вероятность таких действий пользователя,
которые приведут к сбою.
3.Чем раньше начать тестирование, тем лучшего результата
удастся добиться. Именно поэтому эффективнее всего привлекать
QA-инженера к разработке ПО с самого начала. Он определит,
когда имеет смысл включить в команду тестировщика.
14. Принципы тестирования
4.Проблемы программного обеспечения подвержены правилукластеризации. То есть большая часть сбоев (80%) обычно
содержится в небольшом участке кода (20%) – цифры приведены в
соответствии с хорошо известным законом Парето.
5.Эффективность тестирования постепенно снижается, что
становится следствием парадокса пестицида. Он гласит, что
регулярное повторение одинаковых сценариев дает на выходе все
меньший КПД. Поэтому целесообразно периодически менять и
обновлять используемые тесты и другие инструменты проверки.
6.Контекст всегда актуален. Что означает важность учета
специфики и предназначения программы при выборе
оптимальных инструментов и методов тестирования.
15. Принципы тестирования
7.Частое заблуждение тестировщика – отсутствие багов впрограмме. Оно способно привести к очень негативным
последствиям в виде выхода на рынок «сырого» программного
продукта.
Изучение принципов позволяет лучше понять задачи тестирования
и инструментарий тестировщика. Важно следовать их духу, но с
обязательным учетом особенностей конкретной задачи, стоящей
перед специалистом. Перечисленные принципы – это база, но не
догма, которой нужно следовать безоговорочно.
16. Виды тестирования
По объекту тестированияРазница между отдельными видами заключается в том, какая
именно часть программного обеспечения проходит проверку. С
этой точки зрения различают функциональное и
нефункциональное тестирование.
Функциональное
В первом случае речь идет о проверке ПО на предмет соответствия
ожиданиям и функциональным требованиям. Главной задачей
тестировщика становится определить, способна ли программа
выполнить предназначенные ей функции. Причем сделать это без
сбоев и каких-либо других проблем.
17.
Существует несколько подвидов функционального тестирования, вчисле которых:
1.Модельное или Unit-тестирование. Осуществляется еще на этапе
разработки программного кода. Предусматривает проверку
отдельных компонентов программы.
2.Интеграционное. Тестируются взаимосвязи частей программного
кода между собой.
3.Системное или End-to-End-тестирование. На этой стадии
проверяется вся программа в целом.
4.Приемочное. Итоговая проверка практически готового
программного продукта перед выходом на рынок или передачей
заказчику.
18.
НефункциональноеПредусматривает проверку нескольких важных составляющих
программного обеспечения, которые не имеют прямого отношения
к функционалу. Обычно речь идет о пяти ключевых параметрах:
производительность, надежность, безопасность,
масштабируемость и совместимость.
В большинстве случаев в процессе нефункционального
тестирования проверяются такие свойства ПО, на которые
пользователь обращает внимание далеко не всегда. Обычно –
только в случае возникновения каких-либо очень существенных
проблем. В то же время, все перечисленные выше параметры
крайне важны для стабильной работы любой программы.
19.
1.Нагрузочное. Программа проверяется на производительностьпод большой нагрузкой. Как с точки зрения количества
пользователей, так и объема выполняемых операций.
2.На проникновение. В этом случае проверка касается
безопасности ПО в плане способности противостоять кибератакам
или попыткам получения несанкционированного доступа.
3.На совместимость. Качественная программа должна одинаково
эффективно работать на всех платформах, устройствах и браузерах,
для которых предназначена.
20.
4.Стрессовое. Дополняет нагрузочное тестирование посредствомдополнительной проверки работы программы в различных
ситуациях, включая нештатные.
5.На отказоустойчивость. Целью тестировщика становится
определение возможности ПО противостоять сбоям в работе
внешних устройств и программ, например, сервера или
персонального компьютера. Оптимальной реакцией программного
продукта выступает сохранение максимального объема данных и
отсутствие повреждений.
6.Интерфейса. Объектом проверки становится интерфейс и
правильность его работы.
7.На восстановление. Дополняет тестирование на
отказоустойчивость. Проверяет, как быстро восстанавливается
работа программы после внешнего сбоя.
21.
По характеру сценариевПод сценарием в тестировании понимается способ взаимодействия
пользователя с программным продуктом. Принято выделять два
возможных варианта – позитивный и негативный. Рассмотрим
более внимательно каждый из них как самостоятельный вид
тестирования.
Позитивное
Проверка ведется в отношении программы, работающей в
обычном, то есть нормальном, режиме. Другими словами, акцент
делается на том, как исполняются стандартные функции продукта.
Например, вход в систему, исполнение выбранной опции, переход
по ссылке и т.д.
22.
НегативноеВ этом случае проверяется работа программы в нештатной
ситуации. Она может быть вызвана некорректными действиями
пользователя, внутренним или внешним сбоем, другими
причинами. Главной задачей ПО в этом случае становится
корректная обработка ошибки в виде возврата нормальное работе
приложения/сайта или выдаче пользователю рекомендаций по
устранению и проблемы.
23.
По запуску ПОСовременные методы и инструменты тестирования допускают два
возможных варианта проверки. Один предусматривает
выполнение программного кода, другой – обходится без этого. Оба
заслуживают внимания, так как органично дополняют друг друга.
Статическое
Проводится без запуска программного обеспечения. Проверка
ведется непосредственно в отношении исходного кода и других
составляющих разработанного продукта. Например, рабочей и
сопроводительной документации (инструкция пользователя,
техническое задание на разработку ПО и т.д.)
24.
ДинамическоеПроводится посредством исполнения программы. Является
обязательным как для функционального, так и нефункционального
тестирования. При грамотном использовании позволяет добиться
быстрых и точных результатов.
По уровню автоматизации
Самый простой для понимания критерий классификации видов
тестирования. Предусматривает определение использования для
проверки специальных автоматизированных инструментов.
25.
РучноеОсуществляется, что вполне логично, вручную. Тестировщик
фактически выступает обычным пользователем и самостоятельно
проверяет соответствие программы заявленным требованиям.
Особенно часто ручное тестирование используется для получения
ответов на вопросы в части удобства использования ПО, поведения
программы в нештатных ситуациях (так как их трудно или даже
невозможно автоматизировать), эффективности внешнего
интерфейса и т.д.
Автоматизированное
Выполняется с применением широкого спектра специальных
инструментов, работающих в автоматическом режиме, то есть
независимо от тестировщика. Специалист только получает
результаты проверки и занимается их интерпретацией.
26. Принципы тестирования
По уровню знания ПОДанный критерий используется для классификации тестирования
на виды с учетом степени допуска тестировщика к программному
коду. Или знания специалистом всех аспектов и нюансов
проверяемой программы. Для обозначения каждого из видов
используется специальный термин «ящик», под которым
понимается программный продукт. Степень его прозрачности –
черный, белый, серый – наглядно демонстрирует уровень знаний
тестировщика о предмете. Принято выделять еще два отдельных
вида тестирования по степени погруженности в тему (формальное
и интуитивное). Они также рассматриваются ниже.
27. Принципы тестирования
«Черный ящик»Программа проверяется снаружи, то есть на уровне интерфейса.
Без знания и понимания того, как она устроена внутри.
Тестировщик выступает в роли пользователя. Он акцентирует
внимание на функционировании системы в целом и принципах ее
взаимодействия с внешними факторами.
28. Принципы тестирования
«Белый ящик»Прямо противоположная ситуация, при которой тестировщик
получает исчерпывающие сведения о программном продукте.
Вплоть до доступа к любой части исходного кода и других
подобных нюансов. Что позволяет проверить каждый компонент
системы с точки зрения работоспособности и отсутствия багов.
Мероприятие является намного более трудоемким, так как
включает как проверку по схеме «черного ящика», так и множество
дополнительных действий, связанных с изучением и
тестированием «внутренностей» ПО.
29. Принципы тестирования
«Серый ящик»Комбинация двух описанных выше вариантов. Позволяет добиться
большего эффекта, чем в первом случае, и одновременно избежать
доскональное проверки, как во втором. В результате удается
добиться сбалансированного сочетания итогового КПД
тестирования и разумного объема времени, необходимого для его
проведения.
30. Принципы тестирования
По документации (формальное)Проверка выполняется посредством изучения различных
документов. Начиная с технического задания на разработку ПО и
заканчивая руководством для пользователя. Обычно формальное
тестирование задействуется вместе с другими видами, что
позволяет добиться лучших результатов на выходе.
31. Принципы тестирования
ИнтуитивноеБазируется целиком на интуиции и – в некоторых случаях – опыте
тестировщика. Сложнее всего поддается какой-либо
классификации. Как и формальное тестирование, обычно
комбинируется с другими видами, результатом чего становится
увеличение КПД от работы специалиста.
По времени проведения проверки
32. Виды тестирования
Как было отмечено выше, в большинстве случаев тестированиепроводится в отношении более-менее готового программного
продукта. Но даже при таком подходе речь идет о разных
временных этапах разработка ПО. Поэтому критерий времени
проведения позволяет выделить несколько видов тестирования.
Альфа-тестирование
Мероприятие выполняется перед официальным релизом
программы. Обычно проводится внутри компании, занимавшейся
разработкой программного продукта, с привлечением небольшого
числа тестировщиков. Задачей проверки становится доработка ПО
с последующей передачей заказчику более качественного,
эффективного и надежного ПО.
33.
ДымовоеПредставляет собой быструю проверку программы после внесения
серьезных изменений или обновлений в исходный код. Очень
напоминает пробный запуск ПО для проверки работоспособности с
точки зрения серьезных ошибок.
Регрессионное
Проводится в отношении измененной в результате обновления или
доработки программы, но проверка распространяется на «старые»
участка кода. Целью ее становится обнаружение проблем, которые
могут быть вызваны сделанными изменениями и нарушить то, что
исправно работало ранее.
34.
ПриемочноеВыполняется представителями заказчика на этапе
приема/передачи готового программного продукта. При этом
основной акцент делается на соответствии ПО исходным
требованиям, указанным в начальном техническом задании.
Бета-тестирование
Завершающий этап проверки. Обычно предусматривает
привлечение рядовых пользователей, который предоставляется
доступ к готовой или почти готовой программе. Результатом
становится формирование обратной связи в виде сообщений о
проблемах или возможностях для улучшения ПО.
35. Этапы тестирования
1.Анализ исходных данных. Предусматривает изучениетехнического задания и требований, которые предъявляются к
конечному программному продукту. Оптимальным считается
привлечение тестировщика или QA-инженера на этапе разработки
и согласования ТЗ.
36. Этапы тестирования
2.Разработка плана тестирования. Включает составлениестратегии, на основании которой осуществляется планирование.
Перечень необходимых мероприятий и глубина их проработки
зависят от масштабности разрабатываемого программного
обеспечения.
3.Разработка и/или отбор тестов. Допускается как использование
готовых шаблонов, так и создание новых сценариев тестирования.
Важной частью работы становится формирование наборов
тестовых данных.
37.
4.Непосредственное проведение тестов. Проверка выполняется всоответствии с разработанным и утвержденным ранее планом.
Лучшим и самым правильным подходом решению задачи
становится комплексная работа по календарному графику. Что
становится особенно актуальным для крупных проектов, где
согласованная деятельность всей команды всегда выходит на
первый план.
38.
5.Составление отчетов. Результаты тестирования представляютсобой перечень обнаруженных ошибок и иной информации,
полученное при проведении проверки (например, в виде
показателей производительности и других подобных параметров).
Крайне желательно включать в отчет рекомендации
тестировщиков, что особенно ценится, если речь идет о грамотных
и опытных IT-специалистах.
6.Анализ результатов. Нередко тестировщиков привлекают к
исправлению выявленных багов. В этом случае специалисты
работают вместе с программистами (нередко – еще и с
представителями заказчика). Такой подход к оптимизации
программного продукта считается самым эффективным.
39.
7.Повторное проведение тестов. На этом этапе проверки особоевнимание уделяется тем местам кода и сторонам приложения, где
ранее были диагностированы проблемы. В обязательном порядке
проводится регрессионное тестирование (проверяет те участки
кода, которые работали исправно, на предмет возможных
дефектов от внесенных изменений).
40.
8.Завершение тестирование. Представляет собой формальныйэтап, на которой проводится архивирование данных, составляется
необходимая сопроводительная документация, при
необходимости – осуществляется оплата выполненных работ.
Отдельно стоит отметить, что результаты тестирования любого ПО
должны не только сохраняться в виде архива. Они могут выступать
отличной базой для обучения тестировщика с целью повышения
квалификации. Причем с одинаково высокой эффективностью в
отношении специалистов, проводивших проверку, так и сторонних
сотрудников.
41. Инструменты тестирования
1.Документация. База для успешного проведения проверки.Включает план тестирования, чек-листы (перечень критериев или
вопросов), тест-кейсы (подробная инструкция для тестировщика о
проведении теста), баг-репорты (описание дефектов), отчеты
(обобщенная информация о полученных результатах).
2.Сервисы генерации данных. Тестирование предусматривает
ввод в программу различной информации. Самостоятельно
продумать ее непросто и требует много времени. Намного проще
воспользоваться специальными сервисами,
например, random1 (генерация данных для регистрации в личном
кабинете) или 10minutemail.ru (формирование вымышленного
email).
42.
3.Программы для визуализации данных. Часто используетсядругое название – дашборды. Инструмент необходим, если ведется
проверка масштабных проектов. Самыми популярными выступают
два: встроенная в Allure опция и Grafana.
43.
4.Сервисы для создания скриншотов. Последние практическивсегда прикладываются к отчетам о результатах тестирования. Они
необходимы для подтверждения выявленного бага и лучшей
демонстрации его особенностей. Количество программ для
создания скриншотов очень много. Выбор оптимального зависит от
личных запросов конкретного тестировщика.
5.Валидаторы HTML/CSS. Предназначены для проверки исходного
кода веб-приложений и страниц сайтов. Позволяют
автоматизировать процесс обнаружения синтаксических ошибок в
написании программ. Экономят время тестировщика при
одновременном повышении качества работы.
44.
6.Эмуляторы. Специальные сервисы, имитирующие работупрограммы в определенных условиях. Которые зависят от типа
устройства (планшет, ПК, смартфон и т.д.), операционной системы
(Android, iOS, Microsoft и другие) и других подобных параметров.
Приведенный перечень далеко не полон. Что объясняется
разнообразием как видов тестирование, так и объектов для
проверки. Тем более – с учетом постоянного появления новых
инструментов для работы специалиста.
Программное обеспечение