Программа выполняется в рамках темы выпускной курсовой работы в соответствии с учебным планом подготовки бакалавров по направлению 09.03.04 «Программная инженерия» Национального исследовательского университета «Высшая школа экономики», факультет компьютерных наук.
Программа должна удовлетворять следующим требованиям:
\item Система должна сохранять работоспособность и обеспечивать восстановление своих функций при возникновении следующих внештатных ситуаций:
\begin{nfr}
\item При ошибках работы сервера, к которому по API отправляет запросы Web-приложение, программа должна отображать сообщения в формате уведомлений в UI и продолжать корректную работу;
\item При ошибках в сбоях аппаратных средств (кроме носителей данных) восстановление работоспособности возлагается на ОС;
\item При ошибках, связанных с веб-браузером, восстановление работоспособности возлагается на ОС;
\end{nfr}
\item Компоненты защиты программы от несанкционированного доступа к данным и функционалу должны обеспечивать:
\begin{nfr}
\item Идентификацию пользователя;
\item Проверку полномочий пользователя при работе с системой;
\item Разграничение прав доступа пользователей на уровне задач и доступа к данным;
В процессе разработки программы были написаны unit-тесты, а также автотесты, тестирующие интеграционное взаимодействие Web-клиента и сервера~\cite{api}.
Unit-тесты были написаны с помощью фреймворка Jest~\cite{jest}. При разработке приложения был использован сервис Gitlab, а также встроенный в Gitlab механизм CI/CD~\cite{cicd}. Разработка была построена следующим образом: на каждом коммите в пулл реквесте запускался пайплайн, который состоял из следующих этапов: Eslint, Prettier, Test. Первые два шага - линтеры, которые осуществляли проверку файлов проекта на код-стайл. На последнем этапе пайплана запускались unit-тесты проекта.
Для автоматизации тестирования UI использовался фреймворк Silenium IDE~\cite{silenium}. С помощью этого фреймворка были написаны интеграционные авто-тесты, покрывающие основные бизнес-требования, отраженные на диаграмме прецедентов в Приложении. \ref{keyUsecase}.
Этап Test пайаплайна CI/CD автоматически запускает тесты проекта с помощью команды: \texttt{yarn test}. На изображении \ref{pic: test} можно увидеть успешный результат прохождения тестов в проекте.
При тестировании Веб-приложения был использован фреймворк Silenium IDE~\cite{silenium}. С помощью плагина, установленного в браузер Google Chrome~\cite{chrome}, были записаны тесты, проверяющие удовлетворение проекта составленным требованиям.
Для тестирования ключевых бизнес-процессов, выделенных на диаграмме прецедентов цветом (см. Приложение \ref{keyUsecase}), были составлены следующие тест-кейсы. По данным тест-кейсам были созданы тесты Silenium:
\input{tex/testcase}
Результаты UI тестов Silenium можно увидеть на рисунке \ref{pic: silenium}
Также было проведено регрессионное ручное тестирование сложных и многоэтапных бизнес-процессов, включающих активацию заявки и голосование по заявке. Данные сценарии невозможно автоматизировать с помощью Silenium IDE, так как их невозможно завершить (проверить полностью) без использования Android-клиента (или совершения запросов через консоль-клиент).
Для проверки требований и бизнес-сценариев были написаны следующие тест-кейсы:
\input{tex/regressiontest}
Для подтверждения успеха проведенного тестирования в Приложении \ref{test_1} и \ref{test_2} представить фотографии экрана Web-приложения по тест кейсу TC-9 и TC-10.