Академический Документы
Профессиональный Документы
Культура Документы
тестирования
- Функциональное тестирование
- Тестирование безопасности (ВАЖНО! Раньше этот вид всегда относили к функциональным видам
тестирования. НО в последнее время ведутся споры о том чтобы отнести его к нефункциональным
видам).
- Тестирование взаимодействия
Тестирование функциональности (Functional Testing)
● требования
● бизнес процессы
Тестирование в перспективе «требования» использует функциональные требования к системе как основу для
дизайна тестов (Test Cases).
Тестирование в перспективе «бизнес процессы» использует знание этих самых бизнес процессов, которые
описывают сценарии ежедневного использования системы. В этой перспективе тесты, как правило,
основываются на случаях использования системы (use cases).
Тестирование пользовательского интерфейса (GUI Testing)
Если по простому то это функциональная проверка интерфейса на соответствие требованиям — размер,
шрифт, цвет.
- расположение, размер, цвет, ширина, длина элементов; возможность ввода букв или цифр
- реализуется ли функционал приложения с помощью графических элементов
- размещение всех сообщений об ошибках (ввели неверный логин и пароль), уведомлений (а также
шрифт, цвет, размер, расположение и орфография текста)
- читабелен ли использованный шрифт
- переходит ли курсор из текстового в поинтер при наведении на активные элементы, выделяются ли
выбранные элементы
- выравнивание текста и форм
- качество изображений
- проверить расположение и отображение всех элементов при различных разрешениях экрана, а
также при изменении размера окна браузера (проверить, появляется ли скролл)
- унификация дизайна (цвета, шрифты, текст сообщений, названия кнопок и т.д.) - то есть
приведение дизайна к единообразной системе или форме
Тестирование безопасности (Security and Access Control Testing)
Стратегия тестирования, используемая для проверки безопасности системы, а также для анализа рисков,
связанных с обеспечением целостного подхода к защите приложения, атак хакеров, вирусов,
несанкционированного доступа к конфиденциальным данным.
Основные принципы:
Доступность - представляет собой требования о том, что ресурсы должны быть доступны авторизованному
пользователю, внутреннему объекту или устройству. Как правило, чем более критичен ресурс тем выше уровень
доступности должен быть. Только назначенным пользователям предоставляется доступ к информации.
Например внутренняя система больницы.
Отслеживаемость - система ведет журнал действий всех пользователей, предоставляет пользователям доступ к
информации в соответствии с их правами (Например: Администратор, модератор, обычный пользователь) и
реагирует на действия пользователей с целью минимизации возможных потерь, в том числе посредством
шифрования.
Примеры уязвимостей
SQL - injections (один из самых доступных способов взлома сайта). Суть таких инъекций – внедрение в данные
(передаваемые через GET, POST запросы или значения Cookie) произвольного SQL кода. Если сайт уязвим и
выполняет такие инъекции, то по сути есть возможность творить с БД что угодно.
Пример из жизни:
Отец, написал в записке маме, чтобы она дала Васе 100 рублей и положил её на стол. Переработав это в
шуточный SQL язык, мы получим:
Так-как отец плохо написал записку (Корявый почерк), и оставил её на столе, её увидел брат Васи — Петя.
Петя, будущий хакер, дописал там «ИЛИ Пете» и получился такой запрос:
Мама прочитав записку, решила, что Васе она давала деньги вчера и дала 100 рублей Пете. Не фильтруя
данные (Мама еле разобрала почерк), Петя добился выгоды.
JavaScript injections - также очень популярным видом атак является межсайтовый скриптинг с
применением javascript. Также может встречаться название XSS Cross-Site Scripting — «межсайтовый
скриптинг». Это такой тип атак, который внедряет в веб-системы вредоносный код, заставляя её
выдавать измененные данные, подменяет ссылки (видимые/скрытые) или выводит собственную
рекламу на пораженном ресурсе.
Активные – это вид атак, когда хакер пытается найти уязвимость в фильтре сайта. Как же
реализуется такая атака? Все очень просто. Нужно при помощи комбинации тегов и символов
создать такой запрос, чтобы сайт его понял и выполнил команду. Как только дыра в
безопасности найдена, в наш запрос можно вложить «вредокод», который, например, будет
воровать cookie и пересылать в удобное нам место. Пример скрипта:
На некоторых сайтах возле адреса страницы в браузере отображается значок замка. Он бывает
зелёного, золотого или серого цвета. Бывает, замок перечеркнут или вообще отсутствует, а иногда
рядом с доменным именем появляется зелёная строка с названием компании.
Замок или зелёная строка означают, что на сайте установлен сертификат и вся информация
передается по защищенному протоколу.
Протокол — это такой набор правил; браузер и сервер используют его, чтобы обмениваться
информацией.
- Декомпиляция файла приложения (.ipa-файлы для Apple iOS и .apk-файлы для Google Android) и
разбор локально сохраненных данных. Защита этого, наиболее важного в настоящее время, уровня
целиком лежит на плечах мобильного разработчика. По простому вы можете разархивировать
файлы внутри установленного приложения и если они не зашифрованы, можно или взять оттуда
информацию или внести изменения в конфиги.
Нагрузочное — это тестирование в пределах значений нагрузки, которые должна выдерживать система, а
стрессовое — это тестирования за ее пределами.
Например требование к сайту: выдерживать нагрузку в 100 посетителей при нагрузочном проверяем работу при
100 посетителях. При стрессовом проверяем поведение при 1000 посетителях.
ВАЖНО! Что при стрессовом тестировании также мы проверяем как поведёт себя сайт после того как наплыв
людей схлынет.
Целью объемного тестирования является определение производительности системы при увеличении объемов
данных в базе данных. Тут нас интересуют те же показатели, что и при тестировании производительности, то
есть в основном - время выполнения операций при большой нагрузке БД.
Самые первые претенденты на объемное тестирование, это те места, где выбираются большие объемы данных
из БД или выполняются сложные sql запросы для выборки данных.
Тестирование Установки или Installation
Testing
При достижении соответствующих условий сбоя и по результатам работы систем восстановления, можно оценить
продукт с точки зрения тестирования на отказ. Во всех вышеперечисленных случаях, по завершении процедур
восстановления, должно быть достигнуто определенное требуемое состояние данных продукта:
ВНИМАНИЕ!
Smoke - это беглая проверка основного функционала. На примере автомобиля, основная его
цель, ездить, поворачивать и тормозить, мы убеждаемся, что предварительно эти функции
доступны к ним замечаний нет. Значит можем брать продукт в дальнейшее тестирование
Build Verification Test - Показываем что функционал из за которого была выпущена новая
версия работает. На примере всё того же автомобиля. Новая версия этой машина выпускалась
из за добавления в нее фар и сигнала. Значит прежде чем брать в тестирование машину мы
должны убедится что эти функции работают.
Sanity - доказываем, что данная конкретная функция работает. Заказчик никогда не примет
работу без движущихся дворников, значит перед предоставлением ему продукта мы должны
это проверить.
Регрессионное тестирование (Regression
Testing)
Regression testing — проверяется то, что исправление багов, а также любые изменения в коде приложения, не
повлияли на другие модули ПО и не вызвало новых багов.
Но в некоторых источника вы можете не встретить упоминания повторного тестирования, оно будет являться
частью регрессионного. Так Сэм Канер, к примеру, описал 3 основных типа регрессионного тестирования:
- Регрессия багов (Bug regression) попытка доказать, что исправленная ошибка на самом деле не
исправлена
- Регрессия старых багов (Old bugs regression) попытка доказать, что недавнее изменение кода или данных
сломало исправление старых ошибок, т.е. старые баги стали снова воспроизводиться.
- Регрессия побочного эффекта (Side effect regression) попытка доказать, что недавнее изменение кода или
данных сломало другие части разрабатываемого приложения
Подведем небольшой итог
Мы познакомились с наиболее
распространенной классификацией видов
тестирования. Но это далеко не полный
перечень видов тестирования. О них мы
поговорим рассмотрев альтернативную
классификацию видов тестирования. Но о ней
мы поговорим на следующей лекции, а пока
предлагаю разобраться как лучше запомнить
пройденный материал.
Как это всё выучить???
Разные виды тестирования могут выполняться на разных уровнях тестирования или же только на некоторых
из них. Тут нет универсального разделения на каком уровне какие виды тестирования используются. Всё
зависит от проекта. Например тестирование безопасности если это банковский проект, возможно на всех
уровнях тестирования. Функциональное тестирование будет выполнятся также на всех уровнях. А вот
тестирование установки будем проводить на последних уровнях тестирования таких как операционное или
приемочное. Но повторюсь всё это зависит от проекта.
Модульное или компонентное тестирование (Unit Testing)