Главная страница
Навигация по странице:

  • Анализ и автоматизация процесса тестирования программного обеспечения

  • По объекту тестирования

  • Анализ. Анализ и автоматизация процесса тестирования программного обеспе. Высшего образования национальный исследовательский университет высшая школа экономики


    Скачать 197.73 Kb.
    НазваниеВысшего образования национальный исследовательский университет высшая школа экономики
    АнкорАнализ
    Дата02.12.2021
    Размер197.73 Kb.
    Формат файлаdocx
    Имя файлаАнализ и автоматизация процесса тестирования программного обеспе.docx
    ТипАнализ
    #289192
    страница1 из 4
      1   2   3   4

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

    ВЫСШЕГО ОБРАЗОВАНИЯ

    «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

    «ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»

    Факультет Бизнеса и менеджмента
    Черкасова Елизавета Романовна

    Анализ и автоматизация процесса тестирования программного обеспечения

    Выпускная квалификационная работа - БАКАЛАВРСКАЯ РАБОТА

    по направлению подготовки Бизнес-информатика

    образовательная программа «Бизнес-информатика»

    Научный руководитель:

    старший преподаватель, к.т.н.

    Д. С. Проценко

    Москва 2016

    Оглавление


    Введение 3

    Глава 1. Теоретические аспекты процесса тестирования 6

    1.1. Определение понятия тестирования ПО 6

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

    1.3.Методологии тестирования 16

    1.4.Процесс тестирования 18

    1.4.1.Разработка тест-кейсов 19

    1.4.2.Выполнение тест-кейсов 23

    1.4.3.Анализ результатов тестирования 25

    Глава 2. Описание и анализ процесса автоматизированного тестирования 26

    2.1.Описание процесса тестирования 26

    2.2.Критерии эффективности процесса тестирования 29

    Глава 3. Автоматизация процесса тестирования 33

    3.1.Описание компании 33

    3.2.Расчёт экономической целесообразности введения автоматизированного тестирования 33

    3.3.Внедрение автоматизированных тестов 36

    Заключение 44

    Список литературы 46

    Приложение 48


    Введение


    Основной пик интереса к тестированию программного обеспечения пришелся на девяностые года в США. Быстрое развитие систем автоматизированной разработки программного обеспечения и сетевых технологий привело к увеличению производства на рынке программного обеспечения. Усиление конкуренции между производителями программного обеспечения требовало повышенного внимания к качеству продукции. Поскольку ассортимент продукции сильно расширился, а цены стали доступнее, потребители начали обращать большее внимание на качество программного обеспечения. В настоящее время практически все области жизни подвержены компьютеризации. Мало того, что компьютеры, используются в повседневной жизни для обычных целей, они также необходимы, когда речь идет о гораздо более значимых сферах, таких как медицина, транспорт, строительство, безопасность и многие другие. Таким образом, вопрос о качестве программного обеспечения становится особенно важным, поскольку это не только вопрос комфорта, но и безопасности.

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

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

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

    Целью данного исследования является анализ эффективности использования автоматизированного тестирования. Для достижения поставленной цели были определены следующие задачи:

    • Выявление теоретических основ тестирования, классификация и описание его видов.

    • Анализ и описание процесса тестирования, выявление критериев корректно построенного процесса.

    • Определение критериев эффективности процесса тестирования.

    • Расчёт экономической целесообразности введения автоматизированного тестирования.

    • Внедрение автоматизированного тестирования.

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

    Для данного исследования была использована литература описывающая различные направления тестирования. Для решения теоретических задач, таких как анализ процессов тестирования и его видов, использовались фундаментальные, классические для области тестирования книги, такие как «Ключевые процессы тестирования» автора Рекс Блэк, «Software Testing» автора Ron Patton. Для решения задач, связанных с автоматизированным тестированием, использовалась литература более узкой направленности, такая как «Автоматизация процессов тестирования» Винниченко И. В. При изучении экономических аспектов автоматизированного тестирования и расчетах использовалась следующие книги и статьи: Александр Хрущев «Эффективность использования автоматических тестов в ИТ-проектах», Максим Черняк «Оценка эффективности автоматизации тестирования» и «Автоматизированное тестирование программного обеспечения» авторов Элфрид Дастин, Джефф Рэшка, Джон Пол.

    Структура работы обусловлена целью и задачами исследования. Работа состоит из введения, трех глав и заключения.

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

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

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

    В приложении предоставлен полный исходный код решения по автоматизации тестов.

    Глава 1. Теоретические аспекты процесса тестирования

    Данная глава посвящена решению таких задач, как выявление теоретических основ тестирования, классификация и описание видов тестирования, анализ и описание процесса тестирования, выявление критериев корректно построенного процесса.

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

      1. Определение понятия тестирования ПО

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

    Тестирование – это одна из техник контроля качества, которая включает в себя такие процессы, как проектирование тестов, выполнение тестирования и анализ полученных результатов.

    Общая схема тестирования (рисунок 1):



    Рисунок 1. Общая схема тестирования.

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

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

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

    Таким образом, в процессе тестирования тестировщик выполняет две основные задачи.

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

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

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

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

    При тестировании программного продукта применяется огромное количество различных видов тестов. Наиболее широкую и подробную классификацию предложил автор книги «Тестирование Дот Ком» Роман Савин. Он объединил виды тестирования по таким признакам, как объект, субъект тестирования, уровень, позитивность тестирования, и степень автоматизации тестирования. Классификация была дополнена на основании таких источников, как книга Сэма Канера, «Тестирование программного обеспечения» и интернет-ресурс, посвященный тестированию, «Про Тестинг - Тестирование Программного Обеспечения».

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

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

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

      • Надежность (способность системы реагировать на непредвиденные ситуации).

      • Производительность (способность системы работать под большими нагрузками).

      • Удобство (исследование удобства работы пользователя с приложением).

      • Масштабируемость (возможность масштабировать приложение как вертикально, так и горизонтально).

      • Безопасность (исследование возможности нарушения работы приложения и кражи пользовательских данных злоумышленниками).

      • Портируемость (возможность перенести приложение на определенный набор платформ)

    И много других качеств.

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

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

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

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

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

    • Тестирование надежности и восстановления после сбоев (стрессовое тестирование). Такой вид тестирования довольно часто проводится для программного обеспечения, работающего с ценными пользовательскими данными, бесперебойность работы и скорость восстановления после сбоев которого критичны для пользователя. Тестирование на отказ и восстановление осуществляет проверку способности программы быстро и успешно восстанавливаться после отказа оборудования, перебоев сети или критических ошибок в самом программном обеспечении. Это дает возможность оценить возможные последствия отказа и время, необходимое для последующего восстановления системы. На основе полученных в ходе тестирования данных может быть оценена надежность системы в целом, и, при условии неудовлетворительных показателей, соответствующие меры, направленные на улучшение систем восстановления, могут быть приняты

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

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

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

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

    • Замер времени выполнения операций, связанных с получением или изменением данных БД при определенной интенсивности запросов.

    • Выявление зависимости увеличения времени операций от объема данных в БД.

    • Определение максимального количества пользователей, которые имеют возможность одновременно работать с приложением без заметных задержек со стороны БД.



    • Тестирование масштабируемости. Это вид тестирования программного обеспечения, предназначенный для проверки способности продукта к увеличению (иногда к уменьшению) масштабов определенных нефункциональных возможностей. Некоторые виды приложений должны легко масштабироваться и, при этом, разумеется, оставаться работоспособными и выдерживать определенную пользовательскую нагрузку [2].
      1   2   3   4


    написать администратору сайта