LaTeX-documentation/PMI.tex

227 lines
13 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\documentclass[a4paper,12pt,reqno]{article}
\usepackage{styledoc19}
\begin{document} % конец преамбулы, начало документа
\year{2021}
\docNumber{RU.17701729.09.09-62 51 01-1}
\docFormat{Программа и методика испытаний}
\student{БПИ 174}{Д. Ю. Редникина}
\project{CRM-СИСТЕМА ДЛЯ БЛАГОТВОРИТЕЛЬНОГО ФОНДА <<AIAIN>>. WEB-ПРИЛОЖЕНИЕ ДЛЯ СОТРУДНИКОВ ФОНДА}
\supervisor{Доцент департамента \vfill образовательной программы \vfill <<Программная инженерия>>}
{Х. М. Салех}
\firstPage
\newpage
\secondPage
\newpage
\thirdPage
\newpage
\section{Объекты испытаний}
\subsection{Наименование программы}
\input{tex/rusTitle} (\input{tex/engTitle})
\subsection{Область применения программы}
\subsubsection{Функциональное назначение}
\input{tex/functionalPurpose}
\subsubsection{Эксплуатационное назначение}
\input{tex/operationalPurpose}
\subsubsection{Область применения}
\input{tex/projectScope}
\newpage
\section{Цель испытаний}
Проверка на соответствие требованиям, указанным в документе <<\input{tex/rusTitle}. Техническое задание>>.
\section{Требования к программе}
\subsection{Требования к функциональным характеристикам}
Программа выполняется в рамках темы выпускной курсовой работы в соответствии с учебным планом подготовки бакалавров по направлению 09.03.04 «Программная инженерия» Национального исследовательского университета «Высшая школа экономики», факультет компьютерных наук.
Программа должна удовлетворять следующим требованиям:
\input{tex/req}
\subsection{Требования к интерфейсу}
Цветовая гамма интерфейса должена быть выполнена в голубых тонах. Разработанный интерфейс должен соответствовать макетам (см. Приложение \ref{figma}).
\subsection{Требования к надежности}
\newlist{nfr}{enumerate}{10}
\setlist[nfr, 1]{label=\textbf{NFR-\arabic*.}}
\setlist[nfr, 2]{label*=\textbf{\arabic*.}}
\setlist[nfr, 3]{label=\arabic*.}
\begin{nfr}
\item Система должна сохранять работоспособность и обеспечивать восстановление своих функций при возникновении следующих внештатных ситуаций:
\begin{nfr}
\item При ошибках работы сервера, к которому по API отправляет запросы Web-приложение, программа должна отображать сообщения в формате уведомлений в UI и продолжать корректную работу;
\item При ошибках в сбоях аппаратных средств (кроме носителей данных) восстановление работоспособности возлагается на ОС;
\item При ошибках, связанных с веб-браузером, восстановление работоспособности возлагается на ОС;
\end{nfr}
\item Компоненты защиты программы от несанкционированного доступа к данным и функционалу должны обеспечивать:
\begin{nfr}
\item Идентификацию пользователя;
\item Проверку полномочий пользователя при работе с системой;
\item Разграничение прав доступа пользователей на уровне задач и доступа к данным;
\end{nfr}
\end{nfr}
\section{Требования к программной документации}
\subsection{Состав программной документации}
\input{tex/documents}
\newpage
\section{Средства и порядок испытаний}
\subsection{Технические средства, используемые во время испытаний}
\input{tex/tech}
\subsection{Программные средства, используемые во время испытаний}
\input{tex/prog}
Тестирование производилось с развернутым Web-приложением и API~\cite{api} на стенде, по адресу \url{https://charity.infostrategic.com/}.
\subsection{Порядок проведения испытаний}
В процессе разработки программы были написаны 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}.
\newpage
\section{Методы испытаний}
Этап Test пайаплайна CI/CD автоматически запускает тесты проекта с помощью команды: \texttt{yarn test}. На изображении \ref{pic: test} можно увидеть успешный результат прохождения тестов в проекте.
\begin{figure}[H]
\centering
\includegraphics[width = \linewidth]{img/test.png}
\caption{Тестирование. CI job.}
\label{pic: test}
\end{figure}
\subsection{Проверка требований к функциональным характеристикам}
При тестировании Веб-приложения был использован фреймворк Silenium IDE~\cite{silenium}. С помощью плагина, установленного в браузер Google Chrome~\cite{chrome}, были записаны тесты, проверяющие удовлетворение проекта составленным требованиям.
Для тестирования ключевых бизнес-процессов, выделенных на диаграмме прецедентов цветом (см. Приложение \ref{keyUsecase}), были составлены следующие тест-кейсы. По данным тест-кейсам были созданы тесты Silenium:
\input{tex/testcase}
Результаты UI тестов Silenium можно увидеть на рисунке \ref{pic: silenium}
\begin{figure}[H]
\centering
\includegraphics[width = \linewidth]{img/silenium.png}
\caption{Silenium IDE. Проект с тестами}
\label{pic: silenium}
\end{figure}
Также было проведено регрессионное ручное тестирование сложных и многоэтапных бизнес-процессов, включающих активацию заявки и голосование по заявке. Данные сценарии невозможно автоматизировать с помощью Silenium IDE, так как их невозможно завершить (проверить полностью) без использования Android-клиента (или совершения запросов через консоль-клиент).
Для проверки требований и бизнес-сценариев были написаны следующие тест-кейсы:
\input{tex/regressiontest}
Для подтверждения успеха проведенного тестирования в Приложении \ref{test_1} и \ref{test_2} представить фотографии экрана Web-приложения по тест кейсу TC-9 и TC-10.
\subsection{Проверка требований к программной документации}
Вся документация, представленная в требованиях, готова.
\newpage
%\section{Источники, использованные при разработке}
%\renewcommand{\refname}{Список источников}
% \addcontentsline{toc}{subsection}{\refname}
\patchcmd{\thebibliography}{\section*{\refname}}{}{}{}
\anonsection{Список источников}
\begin{thebibliography}{3}
\bibitem{md} Markdown Guide URL: \url{https://www.markdownguide.org} (Дата обращения: 16.04.2021).
\bibitem{gost}Единая система программной документации М.: ИПК, Издательство стандартов, 2000, 125 стр.
\bibitem{chrome}
LMS [Электронный ресурс] URL:
\url{https://www.google.com/chrome} (Дата обращения: 31.05.2021, режим доступа: свободный)
\bibitem{api} Swagger Charity API, v0.2 [Электронный ресурс] URL:\url{https://app.swaggerhub.com/apis/charity-crm/Charity/0.2} (Дата обращения: 31.05.2021, режим доступа: свободный)
\bibitem{jest} Jest - testing URL:\url{https://jestjs.io} (Дата обращения: 31.05.2021, режим доступа: свободный)
\bibitem{cicd} Gitlab - CI/CD URL:\url{https://docs.gitlab.com/ee/ci/} (Дата обращения: 31.05.2021, режим доступа: свободный)
\bibitem{silenium} Silenium IDE URL:\url{https://www.selenium.dev/selenium-ide/}(Дата обращения: 31.05.2021, режим доступа: свободный)
\end{thebibliography}
\newpage
\addition{Макеты интерфейса}{figma}
\input{tex/figma}
\newpage
\addition{Ключевые прецеденты}{keyUsecase}
\begin{figure}[H]
\centering
\includegraphics[width = 0.9\linewidth]{img/key-usecase.pdf}
\caption{Диаграмма прецедентов}
\end{figure}
\newpage
\addition{Тест кейс активации заявки}{test_1}
\begin{figure}[H]
\centering
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/1.png}
\end{subfigure}
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/2.png}
\end{subfigure}
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/3.png}
\end{subfigure}
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/4.png}
\end{subfigure}
\caption{Скриншоты проведенного тестирорования TC-9}
\end{figure}
\newpage
\addition{Тест кейс голосования по заявке}{test_2}
\begin{figure}[H]
\centering
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/5.png}
\end{subfigure}
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/6.png}
\end{subfigure}
\begin{subfigure}[b]{0.475\linewidth}
\includegraphics[width=\linewidth]{img/test/7.png}
\end{subfigure}
\caption{Скриншоты проведенного тестирорования TC-10}
\end{figure}
\newpage
\addition{Роли сотрудников фонда}{stuff}
\input{tex/stuff}
\newpage
\addition{Диаграмма жизненного цикла заявки}{status}
\begin{figure}[H]
\centering
\includegraphics[width = 0.9\linewidth]{img/statusflow.pdf}
\caption{Диаграмма статусов}
\label{pic: status}
\end{figure}
\newpage
\listRegistration
\end{document}