Файл: Тестирование производительности программ: подходы в зависимости от категорий приложений.pdf
Добавлен: 29.03.2023
Просмотров: 386
Скачиваний: 10
СОДЕРЖАНИЕ
1. ОСНОВНЫЕ АСПЕКТЫ ТЕСТИРОВАНИЯ И ОТЛАДКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
1.1 Понятия тестирования и отладки программного обеспечения
1.2 Цели и задачи тестирования программного обеспечения
1.3 Этапы тестирования программного обеспечения
1.4 Комплексное тестирование программного обеспечения
1.5 Восходящее и нисходящее тестирование
2. РАЗЛИЧНЫЕ ПОДХОДЫ К ТЕСТИРОВАНИЮ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
2.3 Методы тестирования на основе стратегии «белого ящика»
2.5 Методы тестирования на основе стратегии «черного ящика»
3. ТЕСТИРОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
3.1 Виды тестирования производительности
3.2 Основные тесты производительности
3.3 Примеры тестирования на производительность
ВВЕДЕНИЕ
Повышение интереса к тестированию программного обеспечения пришлось на 90-е годы XX века в США. Стремительный рост систем автоматизированной разработки программного обеспечения и компьютерных сетей привел к увеличению производства программного обеспечения и к разработке подходов к обеспечению качества и надёжности разрабатываемых приложений. Рост конкуренции между создателями программного обеспечения потребовал определенного внимания к качеству производимых приложений, так как у пользователей появился выбор: разработчики предоставляли свои программы по достаточно приемлемым ценам, что позволяло обращаться к тому, кто разработает необходимый продукт не только дёшево и быстро, но и качественно[3].
В настоящее время компьютеризация вошла практически во все сферы человеческой жизни. Поэтому качество программного обеспечения приобрело особую важность: в современном мире это уже не только удобство в работе программ – программное обеспечение управляет работой диспетчерских систем в аэропортах, оборудования в больницах, космических кораблей, атомных реакторов и т.д [5].
Анализ актуальности обусловили выбор темы исследования: «Тестирование производительности программ: подходы в зависимости от категорий приложений».
Объектом исследования является процесс тестирования программного обеспечения.
Предметом исследования являются техники тестирования производительности программного обеспечения.
Цель исследования состоит в изучении процесса тестирования, основных технологий тестирования производительности программного обеспечения.
Для достижения поставленной цели необходимо решить следующие задачи:
- определить место, которое занимает процесс тестирования в разработке программного обеспечения;
- ознакомиться с процессом тестирования;
- изучить технологии тестирования программного обеспечения.
1. ОСНОВНЫЕ АСПЕКТЫ ТЕСТИРОВАНИЯ И ОТЛАДКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
1.1 Понятия тестирования и отладки программного обеспечения
Тестированием программного обеспечения (software testing) является процесс эксплуатации или анализа программного обеспечения для выявления дефектов[1].
Разберём более подробно данное определение. Понятие «процесс» используется выделения того, что тестирование является плановой, упорядоченной деятельностью. На это необходимо обратить внимание, так как хорошо организованная, систематическая проверка упрощает обнаружение программных ошибок, в сравнении с плохо спланированным тестированием.
Из определения следует, что тестирование подразумевает «эксплуатацию» или «анализ» программного обеспечения. Тестирование, при котором выполняется анализ результатов разработки программного продукта, называют статическим тестированием (static testing), в которое включается проверка кода программы, сквозной контроль и проверка «за столом» (desk checks) , т.е. проверка программного продукта без запуска на компьютере. В отличие от статического тестирования, тестовая деятельность, в которой предусмотрена эксплуатация программы, называется динамическим тестированием (dynamic testing). Эти два типа тестирования дополняют друг друга, реализуя в отдельности собственный подход к определению ошибок в программе.
Понятие дефекта (bug), использующееся в определении, представляет собой программную ошибку, изъян в разработке программы, в результате вызывающий несоответствие ожидаемых и фактически полученных результатов выполнения программного продукта. Дефект может возникнуть на этапе формулирования требований, на этапе проектирования, или на этапе кодирования, также причиной дефекта может быть неправильная конфигурация программы или данных. Дефект может состоять в чём-то другом, что не соответствует требованиям заказчика программного продукта и или не определено в спецификации созданной программы.
Отладкой называют процесс по выявлению источников ошибок, и внесение в программный продукт соответствующих корректировок.
Отладка – это процесс поиска того оператора программы, который вызвал ошибку вычислительного процесса и исправления найденной ошибки, обнаруженной в процессе тестирования программного обеспечения. Чтобы исправить ошибку необходимо выявить ее причину [2]. Различают следующие типы ошибок:
- синтаксические ошибки. Данные ошибки определяются транслятором или компилятором в результате синтаксического и семантического анализа и могут сопровождаться комментариями, в которых указанно их местоположение;
- ошибки компоновки определяются редактором связей (компоновщиком) в процессе объединения программных модулей;
- ошибки выполнения определяются операционной системой, аппаратными средствами или пользователем в процессе выполнения программы.
1.2 Цели и задачи тестирования программного обеспечения
Целями тестирования программного обеспечения являются[8]:
- повышение вероятности правильной работы приложения в различных обстоятельствах;
- повышение вероятности соответствия приложения всем необходимым требованиям.
- проведение полного тестирования приложения в короткие сроки.
Задачами тестирования являются:
- проверка работоспособности системы в соответствии с определенными критериями;
- проверка верности выполнения наиболее критических последовательностей действий пользователя с конечной системой;
- проверка работы пользовательских интерфейсов;
- проверка того, что модификации в базах данных не влияют на выполняемые программные компоненты;
- минимизация переработки тестов при возможных модификациях приложения;
- использование средств автоматизированного тестирования;
- проведение тестирования не только для обнаружения, но и предупреждения дефектов.
1.3 Этапы тестирования программного обеспечения
Первым действием при планировании тестирования программного обеспечения является разработка стратегии испытаний на высоком уровне. В общем, стратегия определяет объем тестовых испытаний, методики тестирования, применяемых для нахождения дефектов, процедуры, которые уведомляют о найденном дефекте и устраняющие его, условия входа и выхода из теста, управляющие различными типами тестов. Учитывая принцип интеграции разработки и тестирования улучшения графика разработки, стратегия испытаний должна включать разнообразные виды тестов жизненного цикла разработки. При разработке общей стратегии должны использоваться тестирования как статического, так и динамического типа.
При использовании автоматизации различных видов тестовой деятельности, данная стратегия должна входить составной частью в общую стратегию тестирования. При автоматизации необходимо выполнение определенных тщательно спланированных параллельных работ, которые должны выполняться только так, чтобы это не приводило к снижению производительности[12].
Существуют несколько подходов при формулировании стратегии тестирования[4]:
1. Определение объемов тестовых испытаний, анализируя документы, которые содержат требования к программе (технические условия), для выяснения, что нужно проверять. При этом необходимо учитывать виды тестов, которые непосредственно не следуют из документов с требованиями, например, возможность установки и увеличение функционала программного продукта, простота и удобство обслуживания программы, а также возможность её взаимодействия с различной аппаратной архитектурой, имеющейся у заказчика.
2. Определение типа тестовых испытаний из разнообразия статических и динамических тестов на каждом этапе разработки. При этом необходимо включение описания всех программных элементов, которые готовятся тестовой группой.
3. Определение условий входа и выхода на каждом этапе тестирования, определение всех точек контроля качества.
4. Определение стратегии автоматизации при использовании автоматизации определенного вида тестовых испытаний.
При определении объемов тестовых работ нет возможности протестировать абсолютно все, поэтому необходимость выбора того, что нужно протестировать очевидна. При избыточности тестового покрытия, времени для отладки программы потребуется значительно больше, что повлияет на срок сдачи работы. Если же тестовое покрытие будет недостаточным, то повысится риск пропуска ошибок, устранение которых после сдачи программного продукта в заказчику будет стоить дороже. Определить норму тестовых испытаний можно при использовании различных способов измерения успешности тестирования.
Можно выделить несколько рекомендаций по разработке стратегии тестирования, использование которых могут обеспечить оптимальное тестовое покрытие[7]:
- в первую очередь необходимо тестирование требований с высоким приоритетом;
- проверка нового функционала программы и программного кода, который был модифицирован для совершенствования или исправления устаревших функциональных возможностей;
- тестирование участков с наиболее вероятным присутствием ошибок;
- использование разбиения на эквивалентные классы и выполнение анализа граничных условий для уменьшения затрат на тестирование;
- сосредоточение внимания на конфигурациях и функциях, с которые наиболее чаще всего будут использованы.
При определении тестированию необходимо вначале исследовать каждый этап жизненного цикла разработки для отбора тестов статического и динамического типов, которые будут использованы на соответствующем этапе. При этом могут быть использованы различные модели жизненного цикла разработки, такие как каскадная, спиралевидная или модель с итеративными версиями. Для примера рассмотрим каскадную модель и определим, какие виды тестирования могут в ней использоваться[4]:
- этап, на котором формулируются требования;
- этап системного проектирования;
- этап, на котором тестируются проекты программы, программные коды, производится модульное тестирование и комплексные испытания;
- системное тестирование;
- приемочное тестирование;
- регрессионное тестирование.
Выбранный подход к тестированию необходимо отразить в документах, которые содержат план проведения тестирования.
Для определения критериев тестирования и точек контроля качества перед началом системного тестирования используют следующие пять типов[6]:
- В критерии входа определяется, что необходимо выполнить сделать перед началом испытания.
- В критерии выхода определяется, что необходимо для завершения испытания.
- В критерии приостановки/возобновления описывается, что будет, если при возникновении дефекта продолжение испытания станет невозможным.
- В критерии успешного/неудачного прохождения теста задаются заранее известные результаты каждого испытания.
- В других критериях, которые определяются стандартами или процессом, задаются соответствующие условия работы программы.
Определение стратегии автоматизации целесообразно при создании любой многократно выполняемой задачи. При этом на автоматизацию задачи требуется намного больше времени, чем на ее выполнение, поэтому необходимо вначале проанализировать потенциальный выигрыша от автоматизации, принимая во внимание, что сама автоматизация имеет отдельный жизненный цикл.
Плохо организованная автоматизация может привести не только к напрасному расходу ресурсов, но и к нарушению графика выполняемых работ, по причине затраты времени на отладку средств автоматизации.
1.4 Комплексное тестирование программного обеспечения
Комплексное тестирование состоит в проверке корректного согласования каждого модуля приложения с остальными его модулями. При этом могут использоваться технологии обработки снизу вверх и сверху вниз, при которых каждый модуль, в виде листа в дереве системы, интегрируется с модулями более высокого или более низкого уровня, пока не будет сформировано дерево программного продукта. Такая технология тестирования необходима для проверки как параметров, передающихся между двумя модулями, так и для проверки глобальных параметров[10].