Lesson 08. Особенности тестирования web-приложений

Содержание

Слайд 2

Web-ориентированные приложения стали широко популярными в конце 1990-х - начале 2000-х

Web-ориентированные приложения стали широко популярными в конце 1990-х - начале 2000-х

годов. Бурное развитие Internet - технологий и сети Internet приводит к тому, что web-приложения становятся более актуальными, распространенными и все более сложными, играя таким образом основную роль в большинстве online проектов
В классических приложениях вся функциональность заключена в одной программе, которая полностью находится на одном компьютере. Классические приложения оказываются всегда более понятными. Их структура и поведение может меняться, но очень в узких рамках. Методики тестирования уже разработаны и наработаны

Введение

Слайд 3

Web-приложение - это клиент-серверное приложение, в котором клиентом выступает браузер, а

Web-приложение - это клиент-серверное приложение, в котором клиентом выступает браузер, а

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

Web-приложение

Слайд 4

Любое веб-приложение представляет собой набор статических и динамических веб-страниц. Статическая веб-страница

Любое веб-приложение представляет собой набор статических и динамических веб-страниц.
Статическая веб-страница

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

Структура приложения

Слайд 5

Статический веб-сайт содержит набор соответствующих HTML-страниц и файлов, размещенных на компьютере,

Статический веб-сайт содержит набор соответствующих HTML-страниц и файлов, размещенных на компьютере,

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

Статические страницы

Слайд 6

Статические страницы Весь HTML-код создается разработчиком до того момента, когда страница

Статические страницы

Весь HTML-код создается разработчиком до того момента, когда страница будет

размещена на сервере. Поскольку HTML-код не меняется после размещения страницы на сервере, данная страница называется статической
Слайд 7

Когда веб-сервер получает запрос на выдачу статической страницы, то, после анализа

Когда веб-сервер получает запрос на выдачу статической страницы, то, после анализа

запроса, сервер находит нужную страницу и отправляет ее браузеру

Статические страницы

Слайд 8

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

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

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

Динамические страницы

Слайд 9

Динамические страницы Веб-браузер запрашивает динамическую страницу Веб-сервер находит страницу и передает

Динамические страницы

Веб-браузер запрашивает динамическую страницу
Веб-сервер находит страницу и передает ее серверу

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

Протокол http реализован на прикладом уровне модели OSI и базируется на

Протокол http реализован на прикладом уровне модели OSI и базируется на

архитектуре клиент - сервер. Клиент посылает серверу запрос на который сервер в свою очередь отвечает.
Простой пример: вы решили зайти на www.google.ru для того чтобы что-нибудь найти. Вы (то есть клиент) применяете для этого свой браузер, который, являясь клиентским приложением, отсылает запрос серверу, в котором просит предоставить ему содержимое главной страницы сайта. Сервер обрабатывает этот запрос и посылает вам ответ, содержащий запрашиваемую страницу. Ваш браузер в свою очередь обрабатывает html код и в результате вы видите то что вы видите.

Основы HTTP

Слайд 11

Запрос в большинстве случаев выглядит так: HTTP/1.1 : : ... :

Запрос в большинстве случаев выглядит так:
<метод> <запрашиваемый_ресурс> HTTP/1.1<\n>
<заголовочное_поле>: <значение><\n>
<заголовочное_поле>: <значение><\n>
...
<заголовочное_поле>: <значение><\n>
<\n>
Метод

- характеризует текущий запрос. Их несколько,
например head, post, put, delete, get

Структура HTTP-запроса

Слайд 12

Ответ сервера выглядит следующим образом: HTTP/1.1 : : ... : Код

Ответ сервера выглядит следующим образом:
HTTP/1.1 <код ответа> <сообщение><\n>
<заголовочное_поле>: <значение><\n>
<заголовочное_поле>: <значение><\n>
...
<заголовочное_поле>: <значение><\n>
<\n>
<тело

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

Ответ сервера

Слайд 13

200 ОК 201 Успешная команда post 202 Запрос принят 203 Запрос

200 ОК
201 Успешная команда post
202 Запрос принят
203

Запрос get либо head выполнен
204 Запрос выполнен, но нет содержимого
300 Ресурс обнаружен в нескольких местах
301 Ресурс удален навсегда
302 Ресурс временно удален
304 Ресурс изменен
400 Плохой запрос от клиента
401 Неавторизованный запрос
402 Необходима оплата за запрос ("зарезервированно для дальнейшего использования”, на данный момент не используется)
403 Доступ к ресурсу запрещен
404 Ресурс не найден
405 Метод неприменим для данного ресурса
406 Недопустимый тип ресурса
410 Ресурс недоступен
500 Внутренняя ошибка сервера
501 Метод не выполнен
502 Перегрузка сервера или неисправный шлюз
503 Сервер недоступен или таймаут шлюза

Коды ответов сервера

Слайд 14

GET-запрос — это самый распространенный вид HTTP-запроса. При помощи него происходит

GET-запрос — это самый распространенный вид HTTP-запроса. При помощи него происходит

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

GET-Запрос

Слайд 15

В первой строке запроса после ключевого слова GET помещается путь к

В первой строке запроса после ключевого слова GET помещается путь к

запрашиваемому документу. Если в пути встречается знак вопроса, то принято считать, что в этом месте путь заканчивается, а за ним начинаются GET-параметры этого запроса
GET /examples/test.html?параметры HTTP/1.1
GET-параметр имеет формат имя_параметра=значение_параметра, сами параметры разделяются знаком &. Пример GET-запроса с двумя параметрами:
GET /enter?login=admin&password=qwerty HTTP/1.1

GET-Запрос

Слайд 16

GET-параметры можно вручную дописать в браузере в конце запрашиваемого URL в

GET-параметры можно вручную дописать в браузере в конце запрашиваемого URL в

адресной строке. Обратимся к envvars.php следующим образом:

GET-Запрос

Слайд 17

Например, имеется файл script.php в корневом каталоге test-domain1: результатом запроса http://test-domain1/script.php?name=John&age=33 будет: GET-Запрос

Например, имеется файл script.php в корневом каталоге test-domain1:
результатом запроса http://test-domain1/script.php?name=John&age=33 будет:

GET-Запрос

Слайд 18

Основным преимуществом GET-параметров является их размещение непосредственно в URL, что дает

Основным преимуществом GET-параметров является их размещение непосредственно в URL, что дает

возможность сформировать гиперссылку на документ с определенными параметрами (Например, ссылка на статью на сайте)
Основным недостатком является ограничение длины URL - 255 байтов/255 символов
Отдельным недостатком можно выделить явную передачу данных через строку браузера из соображений безопасности (можно визуально запомнить передаваемый логин/пароль или другую важную информацию)
Так же, через GET-запрос можно передать в скрипт вредоносную информацию в виде MySQL-инъекции или XSS-уязвимости

GET-Запрос

Слайд 19

Если необходимо передать на веб-сервер большой объем данных, например, текст сообщения

Если необходимо передать на веб-сервер большой объем данных, например, текст сообщения

или файл, используют POST-запрос. В этом типе запроса параметры помещаются в тело HTTP-запроса, а размер передаваемых данных в байтах указывается в заголовке Content-Length:
Таким образом, в URL передаваемые параметры не видны. Простым способом сформировать POST-запрос не получится, они в основном генерируются с помощью HTML-форм

POST-Запрос

Слайд 20

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

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

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

Основы MySQL

Слайд 21

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

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

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

Основы MySQL

Слайд 22

Сервер приложений не может непосредственно получить данные из базы, поскольку базы

Сервер приложений не может непосредственно получить данные из базы, поскольку базы

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

Основы MySQL

Слайд 23

После того как драйвер установит соединение, выполняется запрос к базе, в

После того как драйвер установит соединение, выполняется запрос к базе, в

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

Основы MySQL

Слайд 24

Веб-браузер запрашивает динамическую страницу Веб-сервер находит страницу и передает ее серверу

Веб-браузер запрашивает динамическую страницу
Веб-сервер находит страницу и передает ее серверу приложений
Сервер

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

Пример запроса С помощью этой инструкции формируется набор записей из трех

Пример запроса
С помощью этой инструкции формируется набор записей из трех столбцов,

содержащих фамилию, имя и набранные баллы всех сотрудников, сведения о которых хранятся в базе данных

Основы MySQL

Слайд 26

Создать базу данных на SQL сервере mysql> create database [databasename]; Просмотреть

Создать базу данных на SQL сервере
mysql> create database [databasename];
Просмотреть весь список

баз данных на SQL сервере
mysql> show databases;
Переключить базу данных.
mysql> use [db name];
Смотреть все таблицы в базе данных
mysql> show tables;
Удалить базу данных
mysql> drop database [database name];

Основные команды MySQL (Управление базами)

Слайд 27

Создать таблицу ‘supportContacts’ с полями: Автоматический счетчик ‘id’, текстовое поле на

Создать таблицу ‘supportContacts’ с полями: Автоматический счетчик ‘id’, текстовое поле на

20 символов ‘type’ и текстовое поле на 30 символов ‘details’.
CREATE TABLE supportContacts (id int auto_increment primary key, type varchar(20), details varchar(30));
Удаление таблицы ‘users’.
DROP TABLE `users`

Основные команды MySQL (Управление таблицами)

Слайд 28

Смотреть все данные в таблице mysql> SELECT * FROM [table name];

Смотреть все данные в таблице
mysql> SELECT * FROM [table name];
Показать определенные

выбранные строки со значением "whatever".
mysql> SELECT * FROM [table name] WHERE [field name] = "whatever";
Посмотреть все записи, содержащие название "Bob" и номер телефона, '3444444 '.
mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';

Основные команды MySQL (Получение данных)

Слайд 29

Показать все записи, начинающиеся с букв 'Bob' и номер телефона, '3444444

Показать все записи, начинающиеся с букв 'Bob' и номер телефона, '3444444

'.
mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';
Показать все записи, начинающиеся с букв 'Bob' и номер телефона, '3444444 ' в пределах от 1 до 5.
mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;
Показать уникальные записи
mysql> SELECT DISTINCT [column name] FROM [table name];

Основные команды MySQL (Условия поиска данных)

Слайд 30

Показать все записи, не содержащей название "Bob" и номер телефона, '3444444

Показать все записи, не содержащей название "Bob" и номер телефона, '3444444

'сортировка по phone_number области.
mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;
Показать выбранные записи отсортированы по возрастанию (ASC) или по убыванию (DESC).
mysql> SELECT [col1], [col2] FROM [table name] ORDER BY [col2] DESC;

Основные команды MySQL (Сортировка данных)