diff --git a/README.md b/README.md index 84d11fa..5eb4be3 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,23 @@ See most active contributors on [hexlet-friends](https://friends.hexlet.io/). Производные – требования, вытекающие из явных требований -### Вопросы по классификации и видам тестирования +### Вопросы по теории тестирования, классификациям и видам тестирования + +
+Что такое тестирование? Цель тестирования +
+ +
+Критерии начала и окончания тестирования +
+ +
+Что такое качество? +
+ +
+Разница между QA, QC и тестировщиком +
Какие виды тестирования включает классификация по запуску кода? @@ -79,13 +95,17 @@ Unit-тестирование, интеграционное, системное, В чем отличие регрессионного тестрования от повторного?
-### Вопросы по документации +### Вопросы по тестовой документации
Какие виды тестовой документации бывают? Для чего и кем она используется?
+
+В чем различия между тест-кейсом и чек-листом? +
+
Что такое требования и для чего они нужны? Перечислите атрибуты, которыми должны обладать требования @@ -96,6 +116,14 @@ Unit-тестирование, интеграционное, системное, Перечислите техники тест-дизайна?
+
+Что такое дефект? Типы дефектов +
+ +
+Основные атрибуты баг-репорта +
+
В чем отличие Severity от Priority? Кто назначает каждый из параметров? @@ -105,6 +133,10 @@ Unit-тестирование, интеграционное, системное, Результаты каких тестов приоритетнее?
+
+Жизненный цикл баг-репорта (отчета о дефекте) +
+ ### Жизненный цикл ПО и этапы тестирования
@@ -127,7 +159,16 @@ Unit-тестирование, интеграционное, системное,
-В чем отличие валидации от верификации?? +В чем отличие валидации от верификации? + +* Верификация — проверка соответствия приложения прописанным требованиям. +* Валидация — проверка соответствия приложения всем остальным (подразумеваемым) требованиям. + +Например. Для входа на страницу веб-сайта, пользователю необходимо выполнить регистрацию или же войти в систему под своим аккаунтом. + +1. Выполним верификацию: проверим наличие полей. Все поля должны быть валидными и соответствовать требованиям спецификации. Их количество, отображение и особенности определяются дизайнерами, которые создают макеты. Необходимые данные вносятся в техническое задание, а в случае отсутствия такового – необходимо иметь доступы к созданным макетам. +При выполнении верификации необходимо понимать, что все поля изначально рабочие, и в них можно занести данные, согласно отображенным обозначениям и наименованиям. +2. Пройдем валидацию: проверяются вводимые данные в поля информации, а также их соответствие утвержденной спецификации.
@@ -160,25 +201,210 @@ QA - это интерес надолго или трамплин для чег Какие инструменты используются для тестирования приложений?
-### HTTP, API +### Тестирование веб-приложений +
Что такое клиент серверная архитектура? -Опишите принцип работы. +Клиент-серверная архитектура – это подход, при котором задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами. +То есть клиент формирует запрос и отправляет его на сервер, после чего сервер обрабатывает данный запрос, формирует ответ и передаёт его обратно клиенту. +Один сервер может обрабатывать запросы от множества клиентов одновременно. + +В клиент-серверной архитектуре используется три компонента: + +* Клиент — программа, c которой работает пользователь в браузере или с desktop-приложением и обеспечивает связь с сервером. +* Сервер — компьютер, на котором хранится сайт или приложение. +* База данных — хранилище данных, обеспечивающее сохранность данных, даже если в приложении что-то сломается. + +Сервер может выполнять функции и приложения, и базы данных. Такая архитектура называется двухуровневой.
Что такое HTTP и HTTPS? -В чем разница между ними? +Клиент и сервер общаются по правилам, то есть по протоколам. +Для работы с сайтами используются два основных протокола: + +* HTTP (HyperText Transfer Protocol) – протокол (или набор правил) передачи данных прикладного уровня модели TCP/IP. +* HTTPS (HyperText Transfer Protocol Secure) — защищённый протокол передачи данных, работающий через шифрованные транспортные механизмы SSL (устарел в 2015г.) и TLS. + +По умолчанию HTTPS использует 443 TCP-порт (для незащищённого HTTP используют TCP-порт 80). + +Основное отличие HTTP и HTTPS — шифрование данных. При использовании HTTP данные передаются в открытом виде, поэтому сайты, в основном, используют протокол HTTPS, который шифрует данные. + +Протоколы HTTP и HTTPS описывают набор правил, в каком формате посылаются запросы от клиента, и что ожидается в ответ от сервера. + +Каждое HTTP-сообщение состоит из трёх частей, которые передаются в указанном порядке: + +* Стартовая строка (Request line) — определяет тип сообщения; +* Заголовки (Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; +* Тело сообщения (Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. + +*Стартовая строка для запроса* включает в себя тип запроса, путь и версию протокола. + +Например: + +`HEAD / HTTP/1.0` + +HEAD — тип запроса (называют метод или «глагол», определяющий как реагировать на запрос); +/ - путь к ресурсу URI (в данном случае корень сайта); +HTTP/1.0 – версия протокола. + +*Стартовая строка для ответа* представлена версией протокола, кодом состояния и пояснением к нему. + +Например: + +`HTTP/1.0 200 OK` + +HTTP/1.0 – версия протокола; +200 – код состояния; +OK – пояснение. + +*Заголовки* позволяют передавать дополнительную информацию, например браузеры предоставляют информацию о себе, чтобы было понятно откуда идет запрос. Кроме этого они указывают какие форматы сжатия поддерживают, в каком формате готовы принимать ответ и так далее. Количество стандартных заголовков достаточно большое, помимо них можно добавлять любые свои. + +Например: + +* `Content-Type: text/plain; charset=windows-1251` +* `Content-Language: ru` + +*Тело HTTP-сообщения* опционально. +Тело сообщения может быть добавлено в запрос, только когда метод запроса допускает тело объекта. +Тело сообщения в запросе сопровожается добавлением к заголовкам запроса поля заголовка Content-Length, в котором указывается длина тела запроса. + +Включается или не включается тело сообщения в сообщение ответа — зависит как от метода запроса, так и от кода состояния ответа. Все ответы на запрос с методом HEAD не должны включать тело сообщения, даже если присутствуют поля заголовка объекта (entity-header), заставляющие поверить в присутствие объекта. Никакие ответы с кодами состояния 1xx (Информационные), 204 (Нет содержимого, No Content), и 304 (Не модифицирован, Not Modified) не должны содержать тела сообщения. Все другие ответы содержат тело сообщения, даже если оно имеет нулевую длину. +
+ +
+Какие бывают виды методов HTTP (типы запросов) +Метод HTTP — последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. + +Виды методов: + +* *GET* +Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса. + +Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»: + +`GET /path/resource?param1=value1¶m2=value2 HTTP/1.1` + +* *HEAD* +Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения. + +* *POST* +Применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер. + +* *PUT* +Применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существует ресурса, то сервер создаёт его и возвращает статус 201 (Created). Если же ресурс был изменён, то сервер возвращает 200 (Ok) или 204 (No Content). +Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствует находящемуся по данному URI ресурсу. + +* *PATCH* +Аналогично PUT, но применяется только к фрагменту ресурса. + +* *DELETE* +Удаляет указанный ресурс. +
+ +
+Что такое код ответа HTTP? +Код состояний (код ответа) HTTP является частью ответа сервера. Он представляет собой целое число из трёх цифр. Первая цифра указывает на класс состояния. +Клиент узнаёт по коду ответа о результатах его запроса и определяет, какие действия ему предпринимать дальше. Набор кодов состояния является стандартом, и они описаны в соответствующих документах RFC. + +В настоящее время выделено пять классов кодов состояния: + +* 1хх – Информационный (Informational). Информирование о процессе передачи; +* 2хх – Успех (Success). Информирование о случаях успешного принятия и обработки запроса клиента; +* 3хх – Перенаправление (Redirection). Сообщает клиенту, что для успешного выполнения операции необходимо сделать другой запрос (как правило, по другому URI); +* 4хх – Ошибка клиента (Client Error). Указание ошибок со стороны клиента; +* 5хх – Ошибка сервера (Server Error). Информирование о случаях неудачного выполнения операции по вине сервера.
-Что такое DNS? -Что происходит, когда в браузере переходишь на страницу? +Что такое DNS? Как работает браузер? +DNS (Domain Name System или система доменных имён) - это автоматизированная система, которая связывает между собой доменное имя сайта, то есть его название, и IP-адрес — он нужен для «общения» компьютеров по сети. Благодаря DNS-серверу не нужно знать IP-адрес сайта, чтобы попасть на него. + +Распределённая база данных DNS поддерживается с помощью иерархии DNS-серверов. +Система может работать внутри локальной и глобальной сетей. Когда компьютер посылает сообщение на другое устройство, то запрашивает IP-адрес получателя у DNS-сервера. +Так это выглядит пошагово: + +1. Компьютер А_1 посылает запрос на DNS-сервер с просьбой сказать ему IP-адрес компьютера А_2 +2. DNS-сервер находит в записях компьютер А_2 и возвращает его IP-адрес на компьютер А_1 +3. Компьютер А_1 посылает информацию на адрес, который получил от DNS-сервера. + +Рассмотрим, что такое браузер. +Браузер — это прикладное программное обеспечение, которое позволяет искать информацию в интернете, просматривать сайты, скачивать файлы любого формата, загружать аудио и видеофайлы. +Пошаговый механизм работы браузера: + +1. Пользователь открывает свой браузер и вводит адрес нужного сайта. +2. Браузер ищет сервер. Сначала - в кэше роутера, операционной системе или же в истории подключений, которая хранит информацию об IP-адреса сервера, если его уже посещали ранее. Если браузер там его не находит, он обращается к DNS. +3. Браузер пытается установить соединение с сервером. Когда браузер нашёл нужный IP-адрес, он устанавливает с ним соединение с помощью специального протокола TCP/IP, который отвечает за передачу данных в интернете. +4. Браузер отправляет HTTP запрос на сервер. Таким образом он запрашивает информацию для того, чтобы отобразить страницу. Эта коммуникация осуществляется с помощью GET-запроса и POST-запроса. +5. Сервер обрабатывает запрос и отправляет ответ браузеру. Сервер отправляет браузеру ответ с данными о файлах cookie, способах кэширования ну и, конечно же, контентом для отображения страницы. +6. Браузер обрабатывает ответ и отображает запрашиваемый контент. Это называется рендерингом. Пока он происходит, браузер и сервер обмениваются данными. По завершении, пользователь видит загруженную страницу. +
+ +
+Что такое куки и кэш? +Куки (cookies) — это хранящиеся на компьютерах и гаджетах небольшие файлы, c помощью которых сайт запоминает информацию о посещениях пользователя. +Куки умеют запоминать: + +1. в какое время и с какого устройства человек заходил на страницу; +2. предпочтения пользователей (например, язык, валюта или размер шрифта); +3. товары, которые просматривались или добавлялись в корзину, даже если пользователь временно вышел из интернет-магазина; +4. текст, который мы вводили на сайте раньше; +5. IP-адрес и местоположение пользователя; +6. дату и время посещения сайта; +7. версию операционной системы и браузера; +8. клики и переходы. + +Выделяют два основных вида cookies: + +* сессионные (временные) — данные о просмотренных страницах, записи форм заказов и другая информация, позволяющая клиентам упростить работу с сайтом. Существуют только в период времени, когда пользователь находится на сайте, и удаляются сразу же после прекращения сеанса, то есть вслед за тем, как закроется вкладка. После закрытия вкладки временные файлы автоматически удаляются; +* постоянные — хранят долгосрочную информацию в течение нескольких недель или месяцев, например логин от учётной записи. Они не удаляются после окончания взаимодействия с сайтом. + +Кэш (cache) - это память программы или устройства, которая сохраняет временные или часто используемые файлы для быстрого доступа к ним. Это увеличивает скорость работы приложений и операционной системы. Процесс сохранения таких файлов в специальном месте называется кэшированием. +Типы кэш-памяти: + +* аппаратная кэш-память — память системы. Свой кэш есть у жёсткого диска, графического ускорителя и процессора. +* программная кэш-память — это папки на диске устройства, в которых программы и сервисы сохраняют свои файлы для быстрого доступа. У каждой программы своя папка. +Размер программного кэша ограничивают, чтобы не ухудшалось быстродействие всей системы. Когда место заканчивается, то удаляется часть старой информации и записывается новая. +
+ +
+Что такое HTML и CSS? +HTML (HyperText Markup Language) — это язык гипертекстовой разметки текста. Он нужен, чтобы размещать на веб-странице элементы: текст, картинки, таблицы и видео. +Когда вы заходите на сайт, браузер подгружает HTML-файл с информацией о структуре и контенте веб-страницы. HTML как бы выстраивает визуальный фундамент сайта, но не «запускает» сайт самостоятельно. Он всего лишь указывает, где располагаются элементы, какой у них будет базовый дизайн, откуда брать стили для элементов и скрипты. + + +CSS (Cascading Style Sheets) — это каскадные таблицы стилей. По сути — язык, который отвечает за описание внешнего вида HTML-документа. Подавляющее большинство современных веб-сайтов работают на основе связки HTML+CSS. + +Таким образом, HTML структурирует контент на странице, а CSS позволяет отформатировать его, сделать более привлекательным для читателя.
Что такое API? -Для чего используется? Приведите пример. +API (Application Programming Interface — программный интерфейс приложения, или интерфейс программирования приложений) — специальный протокол для взаимодействия компьютерных программ, который позволяет использовать функции одного приложения внутри другого. + +Структуру интерфейса, как правило, рассматривают с позиций клиента и сервера. +API бывают 4 видов, каждый из которых предназначен для определённых целей и имеет свои особенности: + +* SOAP API. Дословно переводится как «простой протокол доступа к объектам». Обмен информации между программой и сервером производится на языке XML. Сегодня он используется редко, так как существуют более гибкие интерфейсы. +* RPC API. Удаленный вызов процедур. Клиент запрашивает необходимое действие у сервера и получает ответ, что и приводит функцию приложения в исполнение. +* Websocket API. Очередная современная веб-версия. Для отправки информации клиенту или серверу применяется текстовый формат JSON. Особенность этого варианта API состоит в том, что у сервера есть возможность присылать сообщения обратного вызова, что повышает эффективность взаимодействия программ. +* REST API. Сегодня это самая востребованная версия. Программа присылает нужную информацию серверу, а тот в свою очередь производит выполнение встроенных функций и отправляет итоговые данные клиенту. + +Примерами API может служить любая интеграция в сети: + +* Быстрая регистрация на сайте через аккаунты социальных сетей и других сервисов. +* Сервис прогноза погода с актуальной информацией из внешний источников. +* Сервис авиабилетов и т.п. +
+ +
+Каковы различия между идентификацией, аутентификацией, авторизацией? +Идентификация — процедура, в результате выполнения которой для субъекта идентификации выявляется его идентификатор, однозначно определяющий этого субъекта в информационной системе. Проще говоря, сначала система запрашивает логин, пользователь его указывает, система распознает его как существующий — это и есть идентификация. + +Аутентификация — процедура проверки подлинности, например, проверка подлинности пользователя путём сравнения введённого им пароля с паролем, сохранённым в базе данных. + +Авторизация — предоставление определённому лицу или группе лиц прав на выполнение определённых действий. +То есть предоставление пользователю право, например, читать письма в его почтовом ящике — это авторизация.
### Задания