Файл: Отчет по практике студента Круглова Анастасия Александровна Курс 4.docx
Добавлен: 11.12.2023
Просмотров: 1704
Скачиваний: 26
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Тестирование в жизненном цикле разработки программного обеспеченияДо начала 80-х годов процесс тестирования программного обеспечения был разделен с процессом разработки: вначале программисты реализовывали заданную функциональность, а затем тестировщики приступали к проверке качества созданных программ. Такая модель жизненного цикла разработки ПО называется каскадной (или водопадной) и состоит из 5 основных этапов: разработка требований к программе, проектирование, реализация, тестирование и сопровождение. Однако описанный выше подход создает множество проблем. Например, разработка программ может оказаться достаточно длительной (скажем, несколько месяцев), чем тогда в это время должны заниматься тестировщики? Другая, более серьезная проблема заключается в плохой предсказуемости результатов такого процесса разработки. Ключевым вопросом здесь может быть: какое количество времени потребуется на завершение продукта, в котором существует 500 известных ошибок? На самом деле, предугадать это совершенно невозможно, так как разные ошибки будут требовать разного количества времени на исправление, а исправление известных ошибок будет неизбежно связано с внесением новых. Существует следующая мрачная статистика: даже однострочное изменение в программе с вероятностью 55 % либо не исправляет старую ошибку, либо вносит новую. Если же учитывать изменения любого объема, то в среднем менее 20 % изменений корректны с первого раза.В связи с этим, в 90-х годах появилась другая методика разработки, которую вслед за компанией Microsoft называют zero-defect mindset. Основная идея этой методики заключается в том, что качество программ проверяется не post factum, а постоянно в процессе разработки. Например, программист не может перейти к разработке новой функциональности, если существуют известные ошибки высокого приоритета в частях, разработанных им ранее. Так появились шарнирно-каскадная (или V-образная), а также спиралевидная модели разработки ПО.При такой постановке вопроса тестирование становится центральной частью каждого этапа жизненного цикла разработки программ: тестированию подвергаются требования к программному продукту, алгоритмы, исходные коды, модули, программные сборки, функциональность программ и т. д. Практика показывает, что, чем раньше найдена ошибка, тем дешевле ее исправить. Частым примером в литературе является следующий: стоимость незамеченной ошибки в документе требований, которую можно оценить в 2 $, вырастает в 200 $ на этапе сопровождения, поскольку были затрачены силы и время на все предыдущие этапы.
На разных этапах жизненного цикла ПО тестирование проводится в разных формах:
Типичные ошибки: отсутствие / неправильные связи между элементами системы, неправильные передаваемые данные, отсутствие обработки ошибок, отказы и падения при обращениях к API.Ответственный: разработчик и тестировщик.Интеграционные тесты выполняются дольше (несколько десятков в минуту), чем модульные интеграционные тесты (несколько сотен-тысяч в минуту) и являются более творческими.Системное тестирование — процесс тестирования системы, на котором проводится не только функциональное тестирование, но и оценка характеристик качества системы — ее устойчивости, надежности, безопасности и производительности.Цель: проверка работы системы в целом.Объект: система, конфигурации системы, рабочее окружение.Базис: системные требования, бизнес требования, сценарии использования, User Stories, системные руководства, инструкции.Типичные ошибки: невозможность выполнять функциональные задачи, для которых создавалась система, неправильная передача данных внутри системы, неспособность системы работать правильно в среде эксплуатации, нефункциональные сбои (уязвимости, зависания, выключения).Ответственный: тестировщик.Системное тестирование может включать в себя различные типы тестирования. Эти тесты все чаще автоматизируется и именно этот вид автоматизации сейчас очень востребован (JAVA, Python, JavaScript, C#, Selenium и т.п.)Приёмочное тестирование — проверяет соответствие системы потребностям, требованиям и бизнес-процессам пользователя.Существуют несколько форм приемочного тестирования:Пользовательское приемочное тестирование (User Acceptance testing, UAT) — проверяет пригодность системы к эксплуатации конечными пользователями.Контрактное приемочное тестирование — проводится в соответствии с критериями, указанными в контракте приемки специального ПО.Альфа-тестирование (alpha testing) и бета-тестирование (beta-testing) — используются для получения обратной связи от потенциальных или существующих клиентов. Альфа-тестирование проводится “внутри” компании, без участия разработчиков / тестировщиков продукта. Бета-тестирование проводится реальными пользователями системы.Цель: проверка готовности системы.Объект: система, конфигурация системы, бизнес процессы, отчеты, аналитика.
Базис: системные требования, бизнес требования, сценарии использования, User Stories.Типичные ошибки: бизнес-требования неправильно реализованы, система не соответствует требованиям контракта.Ответственный: заказчик / клиент / бизнес-аналитик / product owner и тестировщик.Количество тестов на приемочном уровне намного меньше, чем на других уровнях, потому что в этот момент времени вся система уже проверена. Приемочные тесты практически никогда не автоматизируются.1.2 ВИДЫ И МЕТОДЫ ТЕСТИРОВАНИЯ1.2.1 ВИДЫ ТЕСТИРОВАНИЯ ПО ЦЕЛИВсе виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы[1]:
2. Тестированиебезопасности (Security and Access Control Testing)Тестирование безопасности - это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.
На разных этапах жизненного цикла ПО тестирование проводится в разных формах:
-
на этапе определения требований: их анализ и верификация также могут считаться тестированием; -
контроль процесса проектирования на этапе разработки дизайна системы – это тоже форма тестирования; -
как уже упоминалось, разработчики тоже участвуют в тестировании на уровне модульного тестирования.
-
граничные сроки, установленные заранее; -
выполнение всех предусмотренных тест-кейсов; -
достижение определенного уровня тестового покрытия; -
когда после определенного момента, мы практически не находим новых багов или критических дефектов; -
решение менеджмента.
Типичные ошибки: отсутствие / неправильные связи между элементами системы, неправильные передаваемые данные, отсутствие обработки ошибок, отказы и падения при обращениях к API.Ответственный: разработчик и тестировщик.Интеграционные тесты выполняются дольше (несколько десятков в минуту), чем модульные интеграционные тесты (несколько сотен-тысяч в минуту) и являются более творческими.Системное тестирование — процесс тестирования системы, на котором проводится не только функциональное тестирование, но и оценка характеристик качества системы — ее устойчивости, надежности, безопасности и производительности.Цель: проверка работы системы в целом.Объект: система, конфигурации системы, рабочее окружение.Базис: системные требования, бизнес требования, сценарии использования, User Stories, системные руководства, инструкции.Типичные ошибки: невозможность выполнять функциональные задачи, для которых создавалась система, неправильная передача данных внутри системы, неспособность системы работать правильно в среде эксплуатации, нефункциональные сбои (уязвимости, зависания, выключения).Ответственный: тестировщик.Системное тестирование может включать в себя различные типы тестирования. Эти тесты все чаще автоматизируется и именно этот вид автоматизации сейчас очень востребован (JAVA, Python, JavaScript, C#, Selenium и т.п.)Приёмочное тестирование — проверяет соответствие системы потребностям, требованиям и бизнес-процессам пользователя.Существуют несколько форм приемочного тестирования:Пользовательское приемочное тестирование (User Acceptance testing, UAT) — проверяет пригодность системы к эксплуатации конечными пользователями.Контрактное приемочное тестирование — проводится в соответствии с критериями, указанными в контракте приемки специального ПО.Альфа-тестирование (alpha testing) и бета-тестирование (beta-testing) — используются для получения обратной связи от потенциальных или существующих клиентов. Альфа-тестирование проводится “внутри” компании, без участия разработчиков / тестировщиков продукта. Бета-тестирование проводится реальными пользователями системы.Цель: проверка готовности системы.Объект: система, конфигурация системы, бизнес процессы, отчеты, аналитика.
Базис: системные требования, бизнес требования, сценарии использования, User Stories.Типичные ошибки: бизнес-требования неправильно реализованы, система не соответствует требованиям контракта.Ответственный: заказчик / клиент / бизнес-аналитик / product owner и тестировщик.Количество тестов на приемочном уровне намного меньше, чем на других уровнях, потому что в этот момент времени вся система уже проверена. Приемочные тесты практически никогда не автоматизируются.1.2 ВИДЫ И МЕТОДЫ ТЕСТИРОВАНИЯ1.2.1 ВИДЫ ТЕСТИРОВАНИЯ ПО ЦЕЛИВсе виды тестирования программного обеспечения, в зависимости от преследуемых целей, можно условно разделить на следующие группы[1]:
-
Функциональные. -
Нефункциональные. -
Связанные с изменениями.
-
Требования. -
Бизнес-процессы.
2. Тестированиебезопасности (Security and Access Control Testing)Тестирование безопасности - это стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков, связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов, несанкционированного доступа к конфиденциальным данным.