ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

ТЕСТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

В течение длительного времени внимание разработки программного обеспечения концентрировалось на крупномасштабных научных программах, а также программах министерства обороны, связанных с системами корпоративных баз данных, которые проектировались на базе универсальной ЭВМ или миникомпьютера. Данные тестовых сценариев конспектировались вручную. С их помощью проверялись целевые потоки управления, вычисления сложных алгоритмов и манипулирование данными. Финальный набор тестовых процедур мог эффективно проанализировать всю систему полностью. Тестирование обычно начиналось лишь после завершения плана-графика проекта и совершалось теми же рабочими.

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

В настоящее время области применения, цели и задачи тестирования ПО разнообразны, поэтому тестирование оценивается и объясняется по-разному. Иногда и самим тестировщикам бывает сложно объяснить, что такое тестирование ПО, вследствие чего возникает проблема неопределенных задач тестирования.

Целью данной работы является формулировка точного определения термина «тестирование программного обеспечения», изучение процесса тестирования.

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

Основной задачей является решение проблем, связанных с неоднозначной формулировкой термина «тестирование программного обеспечения» и, в связи с этим, ошибками, совершаемыми в процессе тестирования.

1. Теоретические основы тестирования программного обеспечения 1.1. Основные определения

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

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

Валидация - определение соответствия разрабатываемого ПО ожиданиям и потребностям пользователя, требованиям к системе.

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

Тест дизайн - это этап процесса тестирования ПО, на котором проектируются и создаются тестовые случаи, в соответствии с установленными ранее критериями качества и целями тестирования.

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

Глюк/Дефект Репорт - это документ, описывающий ситуацию или последовательность действий приведшую к некорректной работе объекта тестирования, с указанием причин и ожидаемого результата.

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

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

Время Прохождения тест-кейса - это время от начала прохождения шагов тест-кейса до получения результата теста [2].

1.2. Классификация видов тестирования

    1. Функциональное тестирование - тестирование ПО, направленное на проверку реализуемости функциональных требований. При функциональном тестировании проверяется способность ПО правильно решать задачи, необходимые пользователям.

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

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

    4. Стресс-тестирование - тестирование ПО, которое оценивает надёжность и устойчивость системы в условиях превышения пределов нормального функционирования.

    5. Тестирование стабильности– тестирование ПО, при котором проверяется работоспособность ПО при длительном тестировании со среднем уровнем нагрузки.

    6. Тестирование безопасности - тестирование ПО, которое проверяет фактическую реакцию защитных механизмов, встроенных в систему на проникновение злоумышленников.

    7. Тестирование совместимости - тестирование ПО, которое проверяет работоспособность ПО в определенном окружении.

  1. По объекту тестирования:

  2. По знанию системы:

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

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

  1. По времени проведения тестирования:

  1.  
    1. Альфа-тестирование - это процесс имитации реальной работы разработчиков с программным продуктом, или реальная работа потенциальных пользователей с системой.

    2. Бета-тестирование - это распространение версий с ограничениями для некоторой группы лиц, с целью проверки содержания допустимо минимального количества ошибок в программном продукте.

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

    4. Дымовое тестирование - тестирование ПО, при котором выполняется набор тестов, после которого можно сказать, что программный продукт запускается.

  1. По степени автоматизации:

  1.  
    1. Ручное тестирование - тестирование при котором не используются программные средства для выполнения тестов и проверки результатов выполнения.

    2. Автоматизированное тестирование - тестирование при котором используются программные средства для выполнения тестов и проверки результатов выполнения.

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

  1. Динамический и статический анализ кода:

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

  1.  
    1. Динамический анализ кода - способ анализа программы непосредственно при ее выполнении. При динамическом анализе проблемы в исходном коде находятся по мере их возникновения. Процесс анализа можно разбить на несколько этапов - подготовка исходных данных, проведение тестового запуска программы, сбор необходимых параметров и анализ полученных данных.

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

2. Процесс тестирования программного обеспечения 2.1. Технология тестирования ПО

Тестирование начинается не с того момента, когда дана рабочая программа, а намного раньше - как только пошли слухи, что команда будет работать над проектом.

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

Как только разработчики подготовили билд, проводится дымовое тестирование, по результатам которого делается вывод о возможности и целесообразности дальнейшего тестирования:

В случае если "дымовой тест провален!!!", приложение отправляется на доработку.

Если же "дымовой тест пройден!!!", то следующий этап тестирования - регрессионное тестирование и санитарное тестирование.

В багтрекере перепроверяются дефекты, которые разработчики переводят в статус Fixed (Исправлено), Rejected, Can't Reproduce и т.д. Заметим, что статусы Rejected и Can't Reproduce говорят о том, что дефект не локализован, шаги для воспроизведения описаны неясно, или разработчик не воспроизвел ситуацию.

Основная работа - централизованное тестирование по тест кейсам - производится на следующем этапе: "исследование" программы.

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

Процесс тестирования ПО может быть представлен следующей схемой:

Рис.1 Блок-схема процесса тестирования ПО

2.2. Условия для проведения тестирования
  • Необходимое условие истинности утверждения А - условие, без соблюдения которого А не может быть верным.

  • Достаточное условие - условие, при выполнении которого утверждение А является верным.

Попытаемся определить необходимые условия для тестирования программного обеспечения. Очевидно, что тестирование не возможно без объекта тестирования. Таким образом, первое условие:

  • наличие объекта тестирования, доступного для проведения испытаний;

Также, для того, чтобы тестирование было возможным, мы нуждаемся в исполнителе, значит, второе необходимое условие:

  • наличие исполнителя;

В роли исполнителя возможны человек или машина, или комбинация человек-машина.

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

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

Для подтверждения прохождения тестирования, формируется отчет о его результатах.

В результате, мы имеем следующие необходимые и достаточные условия для проведения тестирования.

Необходимые условия:

  1. Наличие объекта испытания, располагаемого для проведения тестирований

  2. Наличие исполнителя(ей) (в зависимости от типа испытаний)

Достаточные условия:

  1. Наличие объекта тестирования, доступного для проведения испытаний

  2. Наличие исполнителя(ей) (в зависимости от типа операций)

  3. Наличие плана тестирования

  4. Наличие тест-кейсов

  5. Наличие отчета, который подтверждает выполнение задач и достижение целей, по тестированию объекта

Если вернуться к определению тестирования программного обеспечения и проанализировать степень его противоречивости вышеперечисленным условиям, можно сказать, что наличие плана тестирования говорит об активностях в области планирования, тест кейсов - о проектировании, исполнителя – о выполнении тестов, наличие отчета говорит об анализе полученных результатов [5].

Заключение

Философия тестирования гласит, что тестирование нужно не для качества. Тестирование, это часть инженерной культуры. Тестирование, это часть разработки, тестирование, это то, что сотрудники делают перед релизами. Высокое качество закладывается разработчиками, менеджерами проектов и тестировщиками, а не тестами. Однако, зачастую сегодня в компаниях ни один разработчик не может внести в ветку проекта код, который был бы не покрыт тестами. Это все происходит автоматически, как часть рабочего процесса. Этот метод называется TDD (Test Driven Development), техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест, и под конец проводится рефакторинг нового кода к соответствующим стандартам. Философия метода гласит:

«Тестирование, это работа для каждого. Но сотрудники, которые занимаются контролем качества программных продуктов, не видят себя тестерами, они называют себя отделом продуктивности инженеров. Ведь идея заключается не в создании тестов как таковых, а в ускорении разработки.»

Проанализировав информацию о тестировании программного обеспечения, можно сделать следующие выводы:

  • Тестирование – неотъемлемая и очень важная часть процесса разработки ПО

  • Тестирование – очень затратный, как по времени, так и по ресурсам, процесс

  • В наши дни тестирование активно развивается, внедряются новейшие технологии

  • Наиболее распространенным методом тестирования является автоматизированное тестирование

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

Список литературы
  1. IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004 [Электронный ресурс]. Дата обращения – 08.12.2017

  2. «Методы тестирования программного обеспечения». [Учебное пособие]. И.В. Степанченко, 2006. Дата обращения – 08.12.2017

  3. «Про Тестинг. Тестирование программного обеспечения». [Электронный ресурс]. Код доступа - http://www.protesting.ru/ Дата обращения – 10.12.2017

  4. «Разработка приложений. Тестирование программного обеспечения». [Электронный ресурс]. Код доступа - https://social.msdn.microsoft.com/. Дата обращения – 10.12.2017

  5. «Тестирование программного обеспечения. Основные понятия и определения» [Электронный ресурс]. Код доступа - http://test-automation.info/ru/. Дата обращения – 10.12.2017

Просмотров работы: 220