Skip to content

py-AQA/qa_projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект №5 — Front-end тестирование

Привет, участник Школы 21! В этом проекте мы наконец познакомимся с такими понятиями, как Front-end и Back-end, разберёмся с тем, как устроены современные веб-приложения и как их необходимо тестировать. 😇

Instructions

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

Напоминаем, что все созданные отчёты и файлы вам нужно будет загрузить в папку src/ в корне проекта (обязательно в ветку develop).

Contents

  1. Chapter I
    1.1. Веб-приложения
    1.2. Клиент-серверное взаимодействие
    1.3. Front-end и Back-end
    1.4. Задание №1
    1.5. Важность изучения архитектуры веб-приложения
    1.6. Задание №2
  2. Chapter II
    2.1. Основные Frontend технологии
    2.2. HTML
    2.3. CSS
    2.4. JavaScript
    2.5. Задание №3
  3. Chapter III
    3.1. UX/UI
    3.2. Задание №4

Chapter I

Веб-приложения

Наверное, вы много раз слышали или встречали в Интернете термин "веб-приложение", давайте разберёмся с тем, что это такое и почему его не называют "сайтом". Сайт — набор страниц, которые как-то связаны между собой и содержат информацию различного рода: текст, видео, картинки. Основной целью сайтов является предоставление информации. К сайтам можно отнести блоги, сообщества, поисковики, сайты-визитки и т.д. Например, всем знакомую "Википедию" мы можем назвать сайтом.

Веб-приложения, в отличие от обычных сайтов, являются полноценной программой и обладают обширной функциональностью. Веб-приложения позволяют пользователям не только получать, но и манипулировать данными (создавать, удалять, изменять). Идеальным примером веб-приложений являются соцсети (VK, YouTube).

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

Клиент-серверное взаимодействие

Пользуясь веб-приложением, вы постоянно взаимодействуете с сервером. Допустим, регистрация в какой-нибудь социальной сети непременно приведёт к появлению ваших данных на сервере. Так и любое приложение, размещённое в сети Интернет, основывается на связке "клиент-сервер". И это не только электронные формы. Даже простое "перелистывание" страниц некоторого сайта в Интернете — пример клиент-серверного взаимодействия, ведь страницы хранятся не на каждом компьютере, а подгружаются извне.

Что же понимается под "клиентом" и "сервером"? 🤔

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

Сервер — это компьютер, который оснащён специальным программным обеспечением, которое позволяет решить задачи предоставления пользователю доступа к некоторым услугам и ресурсам, которыми владеет и управляет данный сервер. Код, выполняемый на стороне сервера, называют серверным кодом или серверным сценарием. Он обеспечивает обработку данных. Здесь важную роль играют серверные языки программирования. Примерами таких языков являются PHP и Python.

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

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

Схематично это выглядит следующим образом:

client_server

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

Front-end и Back-end

Вот мы и дошли до этих терминов. В IT сфере их можно услышать почти везде, где идёт речь о разработке веб-приложений. Так что же мы понимаем под словами Front-end и Back-end? На самом деле, всё очень просто.

Front-end (frontend, фронтенд) — это клиентская часть веб-приложения (да-да, тот самый "клиент"), пользовательский интерфейс, который мы видим, когда открываем что-либо в браузере. То есть фронтенд — всё, что браузер может читать, выводить на экран и/или запускать. К примеру, фронтенд гитлаба Школы21 выглядит так:

frontend

Back-end (backend, бэкенд) — это внутренняя, скрытая от пользователя часть веб-приложения (те самые "сервер" и база данных). То есть бэкенд — всё, что работает на сервере, "не в браузере".

Задание №1. MPA, SPA, PWA

Создайте файл exercise1.md, в котором:

  • Дайте определения следующим терминам:
    • Single Page Application (SPA)
    • Multi Page Application (MPA)
    • Progressive Web Application (PWA)
  • опишите их различия, недостатки и преимущества;
  • приведите по 3 различных примера к каждому термину (с ссылками на реальные приложения);
  • ответьте на вопросы:
    • Зачем вообще нужны PWA? Почему нельзя ограничиться SPA или MPA?
    • Какие технологии используются для реализации PWA?
    • Как можно понять (и можно ли), что перед нами PWA, а не другие виды приложений?
    • Чем отличается между собой тестирование SPA и MPA?
    • Как тестировать PWA?

Важность изучения архитектуры веб-приложения

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

  1. Знание архитектуры позволяет тестировщику понять, какие части приложения являются наиболее критичными для его общей производительности и функциональности и нуждаются в большем внимании.
  2. При проведении системного тестирования QA-специалист должен понимать, как между собой взаимодействуют пользовательский интерфейс и серверная часть (как данные передаются между клиентской и серверной сторонами), так как это взаимодействие играет ключевую роль в функциональности, производительности и безопасности веб-приложения.
  3. Знание архитектурных паттернов (например, SPA) помогает тестировщику лучше ориентироваться в структуре и логике приложения, проводить аналогии с тестируемыми ранее приложениями и более эффективно выявлять проблемы

Задание №2. Архитектура

Создайте файл exercise2.md, в котором дайте ответы на следующие вопросы:

  • Какие существуют уровни веб-приложения?
  • За что отвечает каждый из них?
  • Что такое монолитная и микросервисная архитектуры веб-приложения?
  • Каковы различия между монолитом и микросервисами?
  • Почему не все приложения построены на микросервисной архитектуре?
  • Каковы особенности тестирования монолитных и микросервисных веб-приложений?

Chapter II

Основные Frontend технологии

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

  • HTML
  • CSS
  • JS (JavaScript)

HTML

HTML (HyperText Markup Language) — это язык гипертекстовой разметки текста. HTML-код используется для структурирования и отображения веб-страницы и её контента. Чтобы посмотреть на HTML-код любой страницы в Интернете, просто нажмите на клавишу F12 и перейдёте во вкладку Elements. Также можно разом посмотреть код всей страницы: для этого надо нажать правой кнопкой мыши на пустую область сайта, а после на кнопку "Посмотреть код страницы".

HTML-код состоит из ряда элементов. Когда вы заходите на сайт, браузер подгружает HTML-файл с информацией о структуре и контенте веб-страницы. HTML выстраивает структуру сайта, он указывает, где будут располагаться элементы, какой у них будет базовый дизайн, откуда брать стили для элементов и скрипты (обычно их пишут на JavaScript). Элементы же состоят из тегов и контента.

К примеру, следующую форма для авторизации (поля для ввода логина и пароля, а также кнопка "Войти"):

auth_form

на HTML будет описана следующим образом:

html

  • <!DOCTYPE html>: эта строка сообщает браузеру о том, что документ является HTML-документом. Это объявление необходимо для правильного отображения и интерпретации документа;
  • <html lang="en">: тег для обозначения начала HTML-документа. Атрибут lang="en" указывает на язык документа, в данном случае, это английский;
  • <head>: секция заголовка документа. Здесь обычно размещаются метаданные и ссылки на внешние ресурсы, такие как стили и скрипты;
  • <meta charset="UTF-8">: устанавливает кодировку документа на UTF-8, что позволяет правильно отображать символы различных языков;
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">: задает параметры масштабирования для устройств с разными ширинами экрана. Это помогает сделать веб-страницу адаптивной к различным устройствам (например, для телефона, для планшета и для ноутбука);
  • <title>Document</title>: заголовок (название) документа, оно отображается во вкладке браузера;
  • <body>: секция тела документа, где размещается основное содержимое веб-страницы;
  • <input type="text" placeholder="Логин">: элемент ввода текста, предназначенный для ввода логина. type="text" указывает, что это поле для текста. Атрибут placeholder задает подсказку, отображаемую внутри поля ввода до тех пор, пока пользователь не начнет вводить текст;
  • <input type="password" placeholder="Пароль" id="password">: ёще один элемент ввода текста, но с типом "password", что скрывает введенный текст (поле для пароля). Атрибут id предоставляет уникальный идентификатор элементу, который может быть использован для стилизации или взаимодействия с JavaScript.
  • <button>Войти</button>: кнопка, которую пользователь может нажать для входа. Текст "Войти" находится между открывающим и закрывающим тегами <button>, и именно он отображается на кнопке.

Конечно, тема HTML очень обширная, её попросту нельзя раскрыть за один проект. Существуют целые курсы по изучению HTML и вёрстки сайтов. Поэтому подробно рассматривать данную тему мы не станем, но изучим основные теги.

CSS

CSS (Cascading Style Sheets, каскадные таблицы стилей) — это код, который используется для стилизации веб-страницы. Он позволяет "украсить" ваши HTML-элементы, по умолчанию у которых почти никаких стилей нет. CSS позволяет реализовать анимации, переходы, реакции элементов на движение мыши и прочее.

JavaScript

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

P.S.: очень советуем изучить вышеперечисленные технологии подробнее, ведь вам ещё не раз придётся с этим столкнуться!

Задание №3. XML и HTML

Создайте файл exercise3.1.md, в него добавьте ответы на вопросы:

  • Что такое язык разметки?
  • Какие вы знаете языки разметки? Опишите каждый из них.
  • Что такое XML?
  • Что такое теги, атрибуты и элементы в XML?
  • Чем XML отличается от HTML?
  • Что такое DTD? Расшифруйте и приведите примеры использования в различных документах.
  • Из чего состоит HTML-документ?

Создайте файл exercise3.2.md, в котором опишите, за что отвечают следующие теги HTML:

  • <a>
  • <div>
  • <p>
  • <style>
  • <br>
  • <!--...-->

Chapter III

UX/UI

Работая с фронтенд-составляющей приложения, можно часто встретить такие аббревиатуры, как UI и UX. Есть даже такие виды тестирования, как UI-тестирование и UX-тестирование (юзабилити-тестирование).

Аббревиатура UI расшифровывается как user interface — оформление сайта: сочетания цветов, шрифты, иконки и кнопки. UX — user experience, то есть "пользовательский опыт". Простыми словами, это то, каким образом пользователь взаимодействует с интерфейсом и насколько приложение для него удобно.

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

Для проведения UI-тестирования необходимо:

  • Сравнить реализованный интерфейс приложения с дизайн-макетами. Если же у вас нет дизайн-макетов, на которые можно ориентироваться, то:
    • проверить, что цвета на страницах приложения согласованы между собой;
    • проверить, что текст удобно считывается, не выезжает за границы блоков;
    • проверить логику расположения элементов на странице, ориентируясь на типовые структуры веб-страниц (и на пользовательский опыт).
  • Проверить, как сайт отображается на различных устройствах, таких как ноутбуки, планшеты и мобильные телефоны. Убедиться, что элементы интерфейса адекватно реагируют на изменения размеров экрана.
  • Проверить работу всех интерактивных элементов, таких как кнопки, ссылки, формы ввода и другие элементы управления.
  • Убедиться, что анимации и переходы между страницами (если они есть) работают корректно.
  • Протестировать навигацию по сайту, убедившись, что все ссылки и кнопки перехода ведут на соответствующие страницы.
  • Проверить все формы на наличие их корректной работы и валидации введенных данных. Убедиться, что пользователь получает понятные сообщения об ошибках при неправильном вводе данных.
  • Проверить работу интерфейса в различных браузерах, например, в таких как Chrome, Firefox, Edge, Opera, чтобы убедиться в его корректном отображении.

UX-тестирование (юзабилити-тестирование) — это метод наблюдения за респондентами, для выявления проблемных мест в пользовательском интерфейсе. Данный вид тестирования отличается от других, которые мы рассматривали ранее, тем, что оно подразумевает проведение проверки на реальных пользователях и не проводится тестировщиками. Потому проводить UX-тестирование в данном проекте мы не будем, но от UI-тестирования не откажемся!

Задание №4. UI-тестирование

Задание №4.1

В TestIT создайте общее рабочее пространство, в нём создайте проект и назовите его "СберСтрахование". Добавьте тест-кейсы, которые позволяют провести полное ручное UI-тестирование одной из страниц СберСтрахования: "1. Оформление".

После выполнения задания выгрузите полученные тест-кейсы в формате xlsx, назовите файл exercise4.1.xlsx и загрузите его в папку /src.

Задание №4.2

Добавьте в созданное рабочее пространство новый проект. Теперь вам необходимо создать тест-кейсы, которые позволят провести полное ручное UI-тестирование демонстрационного приложения conduit. Файл с выгруженными тест-кейсами назовите exercise4.2.xlsx и загрузите его во всю ту же папку /src!

Double-check

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

exercise1.md
exercise2.md
exercise3.1.md
exercise3.2.md
exercise4.1.xlsx
exercise4.2.xlsx

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published