Файл: Отладка и тестирование программ: основные подходы и ограничения (Применение отладки при разработке программного обеспечения).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 328

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1. Создание документации и утверждение плана тестирования, которые включают цели тестирования, возможные допущения, признаки и условия успешного тестирования.

2. Проверка соответствия функциональности и работоспособности программного продукта с техническим заданием.

3. Анализ поведения программного продукта, в случае введения валидных или невалидных входных данных.

4. Обнаружение и устранение ошибок.

5. Проверка целостности программного продукта после возможного устранения ошибок.

6. Оценка готовности, качества и скорости работы разрабатываемого программного продукта.

7. Оценка и последующее снижение рисков.

Программный продукт тестируется на соответствие к определенным критериям и свойствам, которыми он должен обладать, и для определенного свойства программного продукта установлены соответствующие критерии и требования, что позволяет осуществлять оценку на соответствие. Требования к критериям и свойствам программного продукта[19]:

1. Надежность и производительность программного продукта. Данные свойства определяются скоростью работы при заданных входных данных.

2. Безопасность. Предполагает разграничение прав доступа к данным.

3. Функциональность. Предполагает соответствие работы программного продукта с техническим заданием.

4. Мобильность. Данное свойство определяется временем, которое будет затрачено на перенесение программного обеспечения с одной аппаратной платформы на другую.

5. Практичность программного продукта.

6. Отказоустойчивость программного продукта.

Процесс тестирования программного продукта предполагает проверку на соответствие вышеперечисленным показателям качествам, благодаря чему можно представить основную классификацию видов на уровни, виды и типы. Разные виды тестирования могут применяться для каждого из уровней тестирования. Соответственно к каждым видам совместно с уровнями тестирования, применяются типы тестовых испытаний. Ниже приведена классификация на уровни, виды и типы тестирования программного продукта[20].

Уровни тестирования[21]:

1. Модульное тестирование. Тестирование производится в основном разработчиком, который, зная программный код и алгоритм работы, проверяет отдельный модуль (функцию, класс) на наличие ошибок, корректность входных данных и возвращающихся аргументов функции. Модульное тестирование является составляющим процесса отладки программы разработчиком[22].


2. Интеграционное тестирование. Предполагает тестирование совокупности программных модулей на совместные ошибки между отлаженными функциями, правильный обмен данными между модулями. Тестирование производит разработчик, не участвовавший в написании кода к данному программному продукту при этом он проверяет и фиксирует входные и выходные данные для последующего системного тестирования.

3. Системное тестирование. Предполагает тестирование готовой интегрированной системы на ее соответствие техническому заданию, используя только интерфейс программного продукта, доступный пользователю[23].

4. Приемочное тестирование предполагает тестирование готовой программы реальными пользователей с помощью определенных сценариев.

5. Операционное тестирование. Определяет соответствие бизнес - модели и разработанного программного продукта.

Виды тестирования[24]:

1. Инсталляционное тестирование. Предполагает корректную установку программного продукта в соответствии с техническим заданием.

2. Функциональное тестирование. Предполагает проверку работы программного продукта на точное соответствие спецификации.

3. Тестирование производительности. Предполагает определение скорости работы программы, количества потребляемых ресурсов и соответствие требованиям производительности в спецификации.

4. Стрессовое тестирование. Предполагает проверку поведения системы при экстремальных нагрузках.

5. Нагрузочное тестирование. Предполагает проверку поведения системы при прогнозируемых нагрузках[25].

6. Конфигурационное тестирование. Предполагает проверку работы программного продукта на различных платформах.

7. Тестирование удобства использования.

8. Тестирование безопасности. Предполагает определение оценки уязвимости программного продукта к атакам, взломам.

Для проведения тестирования важным моментом является правильный и эффективно выбранный способ тестирования и тщательно продуманный набор правильных и неправильных входных данных, так как провести тесты абсолютно каждого возможного набора входных параметров практически невозможно, в дополнении необходимо данные действия согласовать с заказчиком. Тестирование позволяет убедить заказчика в том, что программный продукт соответствует требованиям и техническому заданию и является надежным. Тем самым, можно перечислить несколько правила тестирования, обеспечивающие качество программного продукта и доверие заказчика[26]:


1. Соблюдение условий заказчика и его критериев качества.

2. Продуманное формирование тестовых входных данных.

3. Поиск оптимального метода тестирования программного продукта в соответствии с критериями качества, которые требуются заказчику.

2.2. Этапы тестирования программного обеспечения

Для любого предприятие основной задачей является высокая производительность и получение готового продукта, либо оказание услуги. В связи с бурным процессом компьютеризации все отрасли переходят на автоматизацию процесса, для сокращения затрат и повышения прибыли. Тем самым основная ответственность перекладывается на компьютеры, а в частности даже на программное обеспечение, именно поэтому программное обеспечение должно быть на высоком уровне[27].

Разработкой программного обеспечения для различных отраслей занимаются не только отечественные, но и зарубежные специалисты. Однако только на разработке ПО деятельность не останавливается ещё необходимо тестирование и внедрение, а также, если необходимо, то обучение персонала.

Один из важнейших этапов - тестирование. Тестирование ПО представляет процедуру проверки работоспособности программы, выявление ошибок в работе программы, выявление конфликтующих программ. Таким образом, этап тестирование направлен[28]:

- на предварительную подготовку организации к внедрению ПО;

- на выявление ошибок и уязвимостей;

- на решение вопросов с конфликтующим ПО;

- на проверку правильности работы;

- на обучение сотрудников работе с ПО.

Этапы тестирования[29]:

1. Анализ.

2. Разработка стратегии тестирования и планирование процедур контроля качества.

3. Работа с требованиями.

4. Создание тестовой документации.

5. Тестирование прототипа.

6. Основное тестирование.

7. Стабилизация.

8. Эксплуатация.

Говоря о качестве тестирования, поднимается вопрос о том, что на сегодняшний день сотрудники отдела тестирования стали гораздо опытнее, тем самым из-за большой необходимости тестирования программного обеспечения умения и навыки тестеров растут. Это плодотворно сказывается на деятельности компаний из различных сфер. Так мы должны понимать, что чем лучше протестировано ПО, тем лучше оно работает и соответственно, тем меньше происходит сбоев и на выходе организация имеет большое число готовых продуктов надлежащего качества[30].


Говоря о негативных факторах, приводящих к ущербу для предприятия (именно связанных с ПО), выделим следующие[31]:

- сбои работы программного обеспечения, данный сбой может привести к полной остановки деятельности предприятия в различных отраслях;

- отсутствие быстродействия, тем самым на создание готового продукта или на другую деятельность компании уходит времени более, чем могла бы уходить;

- уязвимости в ПО, которые позволяют злоумышленникам осуществить сбой или иное правонарушение, которое повлечёт за собой ущерб для компании.

В заключении необходимо ещё раз подчеркнуть важность отдела тестирования при разработке или внедрения программного обеспечения в организацию. Ведь именно сотрудники данного отдела своей деятельностью способны предотвратить возможный ущерб для предприятия[32]. Стоит также отметить, что на сегодняшний день навыки тестеров заметно выросли и уже сейчас большинство ПО обеспечения после прохождения "тестирования" и исправления багов в дальнейшем работают бесперебойно.

3. Стратегии тестирования программного обеспечения

Современный мир полон возможными инновационными технологиями, в то время как технический прогресс только набирает обороты. Одну из немаловажных ветвей развития информационных технологий занимает разработка и производство программного обеспечения (ПО). С каждым днём люди сталкиваются с десятками программ, приложений, которые автоматизируют множество действий в различных сферах жизнедеятельности человека. Стоит отметить, что в настоящее время компьютеризации подвержены практически все области человеческой жизни. Следовательно, качество ПО имеет особую важность: сегодня это доставляет не только комфортабельность от использования автоматизированных систем, сегодня ПО управляет оборудованиями в медицинских учреждениях, диспетчерскими системами в аэропортах, военными электронно-вычислительными системами, атомными реакторами и т.д[33].

Тестирование является одной из обязательных частей процесса производства ПО. Данный процесс направлен на поиск и устранение максимального количества ошибок. Следствием такой деятельности является повышение качества ПО по всем его характеристикам. Существующие на сегодняшний день методы тестирования программного обеспечения не позволяют однозначно и полностью устранить все дефекты и ошибки и установить корректность функционирования программного продукта[34].


Современное ПО весьма разнообразно, и для его тестирования требуется определённый своеобразный подход. В данной тематике рассмотрим примеры использования различных видов тестирования для разнообразных типов ПО: мобильные приложения, объектно-ориентированные системы, веб-приложения, распределённые системы[35].

Следует отметить, что для ПО, которое имеет достаточно большой объём, требуется применение автоматизации тестирования.

Существует две стратегии тестирования ПО – тестирование по принципу «белого ящика» и «чёрного ящика». Данные стратегии зависят от того, имеет ли инженер по контролю качества (тестировщик) доступ к исходному коду ПО, или же тестирование выполняется через пользовательский интерфейс либо прикладной программный интерфейс, предоставленный тестируемым модулем[36].

3.1. Метод «белого и черного ящиков»

При тестировании методом «белого ящика» (white-box testing, оно же структурное тестирование) разработчик теста имеет доступ к исходному коду программ и имеет возможность писать код, который связан с библиотеками тестируемого программного обеспечения[37]. На рисунке 1 представлено схематическое изображение данного метода.

«Белый ящик»

Рисунок 1. Метод «Белого ящика»[38]

При тестировании методом «чёрного ящика», схему которого можно увидеть на рисунке 2, тестировщик имеет доступ к ПО только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования.

«Черный ящик»

Рисунок 2. Метод «Черного ящика»[39]

Сопоставив два метода, можно сделать вывод, что метод «белого ящика» основывается на принципе тестирования, управляемом логикой программы. Происходит подбор таких тестов, которые смогут обеспечить выполнение максимально возможного количества маршрутов, логических циклов и ветвлений тестируемого ПО. Метод «чёрного ящика» основывается на функциональном тестировании. Таким образом, происходит проверка входных и выходных данных, не прибегая к логике тестируемого ПО[40].