Диплом: Автоматизация регрессионного тестирования с использованием языка программирования Python

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
12
соответствие программного обеспечения выставляемым заказчиком
требованиям.
Нефункциональное тестирование (non-functional testing). Дает
возможность проверить ПО на соответствие с поставленными
нефункциональными требованиями. Более подробная классификация
нефункционального тестирования указана в таблице 1. [44]
Таблица 1Подклассы нефункционального тестирования
Нагрузочное
тестирование - Load
testing
Load testing позволяет собрать показатели и
определить производительность и времени отклика
системы, в ответ на внешний запрос. Популярной
целью данного вида тестирования, является проверка
максимального количество пользователь, которые
смогут комфортно работать с продуктом.
Тестирование
надежности - Stress
testing
Stress testing позволяет оценить как быстро и в какой
объеме система будет доступна в случае критической
ситуации. Также этот вид тестирования позволяет
оценить последствия отказа системы.
Тестирование
стабильности -
Stability testing
Stability testing подразумевает под собой
тестирование системы, под определенной нагрузкой,
распределённой на продолжительный промежуток
времени. Тестирование стабильности направлено на
то чтобы выявить, такие ошибки как утечки памяти,
переполнения буфера, проблемы с нагрузкой и другие
факторы, которые могут проявиться спустя
продолжительное время работы.
13
Тестирование пользовательского интерфейса (UI testing). Тестирование
корректности отображения интерфейса программного обеспечения на
разнообразных устройствах, ожидаемого поведения программного
обеспечения в ответ на совершаемые пользователем действия.
Тестирование пользовательского интерфейса дает возможность
оценить, насколько эффективно пользователь сможет использовать
программное обеспечение, и в какой степени интерфейс программы
соответствует заявленным требованиям.
Тестирование удобства использования (usability testing). Данное
тестирование позволяет оценить насколько быстро, конечный
пользователь поймет программу, как быстро освоит основной
функционал и насколько привлекателен графический интерфейс
программного обеспечения.
Тестирование защищенности (security testing). Оценка уязвимости
программного обеспечение относительно различных атак со стороны
злоумышленников. Программное обеспечение очень часто является
целью для кибер атак с целью проникнуть в систему, взлома, кражи
конфиденциальных данных. В ходе тестирования тестировщик
старается вести себя точно также как бы повел себя потенциальный
взломщик. Тестировщику позволены любые способы взлома или
проникновения, а также любые средства атак и взлома.
Инсталляционное тестирование (installation testing). Под
инсталляционным тестированием подразумевается уровень
корректности установки программного обеспечения в искусственно
созданных условиях (на разных конфигурация аппаратного или
программного обеспечения) с целью выявления степени готовности ПО
14
к фактической эксплуатации. Основной причиной проведения
инсталляционного тестирования является необходимость проверки
корректности установки программного продукта при
автоматизированном развертывании или обновлении.
Конфигурационное тестирование (configuration testing).
Конфигурационное тестирование позволяет определить влияние
изменения конфигурации системы на производительность и поведение
программного обеспечения.
Тестирование локализации (localisation testing). Тестирование
локализации позволяет оценить, насколько хорошо продукт
адаптирован для конкретной целевой группы. При тестировании
локализации, чаще всего рассматриваются культурный и языковой
нюансы. Основными целями данного вида тестирования являются
проверка корректности перевода контента, документации по продукту,
форматов чисел, дат и валют.
2. Тестирование, связанное с изменениями
Санитарное тестирование (sanity testing). Узконаправленный вид
тестирования позволяющий определить, что конкретная функция или
модуль работает в соответствии с предъявляемыми к ним
требованиями. Чаще всего используется при проверке
работоспособности определённой части предложения после внесения
каких либо изменений.
Дымное тестирование (smoke testing). Данный вид тестирования
представляет собой предварительное тестирование, которое
проводится, чтобы выявить функциональность и работоспособность
основных функций системы, и отсутствие критически и блокирующих
дефектов. По результатам дымного тестирования продукт либо
15
передается для проведения полного цикла тестирования, либо
отправляется на доработку.
Регрессионное тестирование (regression testing). Данный вид
тестирования имеет своей целью обнаружение ошибок в уже
протестированных участках исходного кода. Дефекты, обнаруженные
во время регрессионного тестирования, в ранее протестированном и
рабочем исходном коде, называют регрессионными ошибками.
Регрессионными тестами могут быть как нефункциональные, так и
функциональные тесты. Чаще всего в регрессионном тестировании
используются тесты, написанные на предыдущих этапах тестирования.
3. По уровню изолированности
Модульное тестирование (unit testing). Данный вид тестирования
проводиться для поиска дефектов в частях приложения, которые могут
быть доступны и протестированы по отдельности. При реализации
подобных тестов часто используются различные заглушки и
специализированные драйвера, для имитации реальности системы.
Модельное (компонентное) тестирование позволяет очень быстро
выявлять ошибки в коде программы, которые часто появляются в ходе
разработки программного обеспечения.
Интеграционное тестирование (integration testing). Интеграционное
тестирование предназначено для тестирования отдельных модулей
системы на предмет связи между компонентами, а также
взаимодействия с другими частями системы (операционной системой,
сторонним оборудованием и т.п.). Главная цель интеграционного
тестирования выявить дефекты, связанные с ошибками интерпретации
или реализации взаимодействия между модулями.
16
Приемочное тестирование (acceptance testing). Вид комплексного
тестирования, проверяющий соответствие системы конечным
требованиями, с целью определить удовлетворяет ли система
приемочным критериям и для того чтобы определить фактический
уровень готовности системы к эксплуатации конечными
пользователями программного обеспечения.
4. По исполнению кода
Статическое тестирование (static testing). При статическом
тестирования программный код не выполняется, производится анализ
исходного кода программы, который вычитывается вручную или с
использование программ анализаторов. В редких случаях,
анализируется не исходный а промежуточный код (как пример, байт
код). Статическое тестирование следует проводить до динамического
тестирования, при таком подходе дефекты обнаруженные на данном
этапе обойдутся дешевле. С точки зрения процесса тестирования,
статическое тестирование выражается в ревизии кода. Стандартная
ревизия кода конкретных файлов производиться после каждого
изменения этого файла самим программистом. Использование
статического тестирования в процессе разработки программного
продукта, позволяет ускорить время разработки ПО, и существенно
снизить количество дефектов в продукте. Также к статическому
тестирование следует отнести тестирование спецификаций,
документации и требований по продукту.
Динамическое тестирование (dynamic testing). К динамическому
тестирование следует отнести такой вид тестирование который
предполагает запуск исходного кода приложения. К динамическому
тестированию можно отнести множество других типов тестирования,
17
что были описанные ранее. Большая часть существующих видов
тестирования относиться именно к динамическому тестированию.
5. По субъекту тестирования
Альфа тестирование (alpha testing). Тип тестирования проводимый на
самой ранней версии программного продукта. Чаще всего альфа
тестирование проводится самими разработчиками программного
обеспечения. В процессе альфа тестирования устраняются самые
критичные дефекты. Как правило, во время альфа тестирования
разработчиками производиться имитация работы программы в рабочих
условиях, в некоторых случаях альфа тестирования проводиться
усилиями конечных пользователей. Альфа тестирование может
проводиться на любом этапе разработки программного обеспечения.
Бета тестирование (beta testing). Активное использование программного
продукта все ещё находящего в стадии активной разработки. Чаще
всего, для проведения бета тестирования предполагается
использование добровольцев или некоторое число конечных
пользователей программного продукта. Бета тест может делиться на
два этапа: закрытый бета тест и открытый бета тест. Закрытое бета
тестирование - это первоначальное тестирование со строго
ограниченным количеством пользователей. Открытое бета
тестирование подразумевает под собой размещение бета-версии
программного обеспечения в открытом доступе. В случае открытого
бета-тестирования любой пользователь может выступить бета-
тестером. Анализ работы программного обеспечения осуществляется с
использование системы логирования, аналитики пользовательских
действий, а также обратной связи от бета тестеров. Данные системы
необходимы для анализа действий пользователей при наступлении
18
критичных и не критичных ситуаций, обнаружении ошибок и
трудностей с которыми сталкиваются бета тестеры.
6. По позитивности сценария.
Таблица 2Классификация по признаку позитивности сценария
Позитивное тестирование
Positive testing
Негативное тестирование –
Negative testing
Позитивное тестирование
предполагает проверку способности
программного обеспечения
выполнять заложенную в него
функцию. Как правило, для такого
тестирования разрабатываются тесты,
которые представляют собой чаще
всего выполняемые действия
конечного пользователя и при
выполнении этих тестов не должно
возникать непредвиденных ситуаций.
Под негативным тестирование
подразумевается проверка на
поведение системы в нештатных
ситуациях. Такого типа тесты
позволяют убедиться, что в случаем
возникновения непредвиденных
ситуаций, программа выдает
корректные сообщения об ошибках,
пользовательская информация не
повреждается и программа
продолжает функционировать
дальше.
7. По степени автоматизации
Ручное тестирование (manual testing). Ручное тестирование один из
этапов контроля качества в процессе разработки ПО, которое
производиться без использования программных средств. Ручное
тестирование имитирует поведение конечного пользователя. В данном
случае, именно тестировщик выступает в качестве конечного
19
пользователя программного продукта, следует определенным
сценариям поведения, после чего анализирует полученный результат.
Автоматизированное тестирование (automation testing). Является одним
из этапов контроля качество в процессе разработки программного
продукта. При данном тестирование тесты исполняются за счет
использования стороннего программного обеспечения, что позволяет
значительно ускорить тестирование программного обеспечения. С
помощью стороннего ПО появляется возможность контролировать
исполнение тестов, анализировать получаемый результат. Существует
два подхода к автоматизированному тестированию: тестирование
пользовательского интерфейса (GUI testing) и тестирование на уровне
кода ПО. К первому следует отнести имитацию действия пользователя
с помощью специальных тестовых фреймворков. Ко второму типу
относится модельное тестирование.
Самым высоким уровнем классификации подходов к тестированию
является понятие метода тестирование. Метод тестирования может
охватывать сразу несколько техник и видов тестирования. Рассмотрим
несколько методов тестирования, которые отличаются друг от друга
полнотой знания о внутреннем устройстве тестируемого объекта.
Тестирование методом «черного ящика», как функциональное, так и
нефункциональное, предполагает, что у тестирующего нет знаний
внутреннего устройства тестируемой системы. Также данный метод известен
как тестирование по спецификации или тестирование поведения. Данный
метод тестирования позволяет изучить систему, абстрагируясь от ее
внутреннего устройства. Данный метод тестирования позволяет обнаружить:
20
- функциональные ошибки программного обеспечения, такие как
неправильно реализованные функции, некорректное поведение программы,
ошибки в графическом интерфейсе и многие другие
- нефункциональные ошибки программного обеспечения, такие как
недостаточная производительность системы и т.п.
Из определения метода тестирования черным ящиком следует, что при
тестировании тестировщик не имеет представления о процессах
происходящих внутри программного продукта, и поэтому ему следует
сконцентрироваться только на том, что делает программа. [7] К минусам
данного метода можно отнести:
- тестируется ограниченное количество возможностей выполнения ПО
- без четкой спецификации слишком сильно падает эффективность
составления тестов
- возможно избыточное тестирование некоторых областей ПО, ввиду
пересечение тестов созданных тестировщиком и разработчиком
Тестирование методом «белого ящика» - подразумевает, что
внутреннее устройство программного обеспечения известны тестировщику.
Данный метод тестирования основывается на исследовании и анализе
внутренней структуры ПО. Тесты создаются основываясь на том, что
тестировщик точно знает код который их будет обрабатывать, и также знает
каким должны быть результаты исполнения этих тестов. Тестирование
методом белого ящика позволяют углубиться во внутреннее устройство
тестируемого программного обеспечения, выходя за пределы его внешних
интерфейсов. К минусам данного метода тестирования стоит отнести:
- для проведения данного метода тестирования требуется большой
количество специальных знаний.
21
- при автоматизации данного метода тестирования, поддержка
автоматизированных тестов может стать излишне накладной, если продукт
будет часто изменяться.
Таблица 3 - Сравнение методов Black-box и White-box тестирования
Критерий
Черный ящик
Белый ящик
Определение
Тестирование,
функциональное и
нефункциональное, не
предполагающее знания
внутреннего устройства
системы
Тестирование,
основанное на анализе
внутренней структуры
системы
Уровни, которым
применима техника
В основном:
- приемочное тестирование
- системное тестирование
В основном:
- юнит-тестирование
- интеграционное
тестирование
Кто выполняет
Как правило, тестировщик
Как правило,
разработчик
Знание
программирования
Не нужно
Необходимо
Знание реализации
Не нужно
Необходимо
Основа для тест-
кейсов
Спецификация, требования
Проектная
документация
В данном параграфе были рассмотрены различные виды и методы
тестирования, которые широко используются в процессе тестирования

Смотрите также:

«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)
Value-based education: ценности в системе образования и способы их реализации на уроке английского языка. Опыт Европейских стран
Work-life balance подход в управлении рабочим временем молодых сотрудников (на примере ООО «МГТ-сервис»)
Автоматизация управления проектами студии ООО «Альт айти солюшенс»
Автоматизация учета рабочего времени сотрудников компании ООО "Эпам Системз"
Автоматизация учёта ремонта компьютерного оборудования в компании «ГАРАНТ-СЕРВИС»
Автоматизация учета товара на складе для фирмы Эльдорадо