LaTeX-documentation/PMI.tex

227 lines
13 KiB
TeX
Raw Normal View History

2021-06-07 19:32:31 +03:00
\documentclass[a4paper,12pt,reqno]{article}
2018-08-18 21:32:48 +03:00
\usepackage{styledoc19}
\begin{document} % конец преамбулы, начало документа
2021-06-07 19:32:31 +03:00
\year{2021}
\docNumber{RU.17701729.09.09-62 51 01-1}
\docFormat{Программа и методика испытаний}
\student{БПИ 174}{Д. Ю. Редникина}
\project{CRM-СИСТЕМА ДЛЯ БЛАГОТВОРИТЕЛЬНОГО ФОНДА <<AIAIN>>. WEB-ПРИЛОЖЕНИЕ ДЛЯ СОТРУДНИКОВ ФОНДА}
\supervisor{Доцент департамента \vfill образовательной программы \vfill <<Программная инженерия>>}
{Х. М. Салех}
2018-08-18 21:32:48 +03:00
\firstPage
2021-06-07 19:32:31 +03:00
\newpage
\secondPage
2021-06-07 19:32:31 +03:00
\newpage
\thirdPage
2021-06-07 19:32:31 +03:00
\newpage
2018-08-18 21:32:48 +03:00
\section{Объекты испытаний}
\subsection{Наименование программы}
2021-06-07 19:32:31 +03:00
\input{tex/rusTitle} (\input{tex/engTitle})
2018-08-18 21:32:48 +03:00
\subsection{Область применения программы}
2021-06-07 19:32:31 +03:00
\subsubsection{Функциональное назначение}
\input{tex/functionalPurpose}
\subsubsection{Эксплуатационное назначение}
\input{tex/operationalPurpose}
\subsubsection{Область применения}
\input{tex/projectScope}
2018-08-18 21:32:48 +03:00
\newpage
2021-06-07 19:32:31 +03:00
2018-08-18 21:32:48 +03:00
\section{Цель испытаний}
2021-06-07 19:32:31 +03:00
Проверка на соответствие требованиям, указанным в документе <<\input{tex/rusTitle}. Техническое задание>>.
2018-08-18 21:32:48 +03:00
\section{Требования к программе}
\subsection{Требования к функциональным характеристикам}
2021-06-07 19:32:31 +03:00
Программа выполняется в рамках темы выпускной курсовой работы в соответствии с учебным планом подготовки бакалавров по направлению 09.03.04 «Программная инженерия» Национального исследовательского университета «Высшая школа экономики», факультет компьютерных наук.
Программа должна удовлетворять следующим требованиям:
\input{tex/req}
2018-08-18 21:32:48 +03:00
\subsection{Требования к интерфейсу}
2021-06-07 19:32:31 +03:00
Цветовая гамма интерфейса должена быть выполнена в голубых тонах. Разработанный интерфейс должен соответствовать макетам (см. Приложение \ref{figma}).
2018-08-18 21:32:48 +03:00
\subsection{Требования к надежности}
2021-06-07 19:32:31 +03:00
\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{Требования к программной документации}
2018-08-18 21:32:48 +03:00
\subsection{Состав программной документации}
2021-06-07 19:32:31 +03:00
\input{tex/documents}
2018-08-18 21:32:48 +03:00
2021-06-07 19:32:31 +03:00
\newpage
2018-08-18 21:32:48 +03:00
\section{Средства и порядок испытаний}
\subsection{Технические средства, используемые во время испытаний}
2021-06-07 19:32:31 +03:00
\input{tex/tech}
2018-08-18 21:32:48 +03:00
\subsection{Программные средства, используемые во время испытаний}
2021-06-07 19:32:31 +03:00
\input{tex/prog}
Тестирование производилось с развернутым Web-приложением и API~\cite{api} на стенде, по адресу \url{https://charity.infostrategic.com/}.
2018-08-18 21:32:48 +03:00
\subsection{Порядок проведения испытаний}
2021-06-07 19:32:31 +03:00
В процессе разработки программы были написаны unit-тесты, а также автотесты, тестирующие интеграционное взаимодействие Web-клиента и сервера~\cite{api}.
2018-08-18 21:32:48 +03:00
2021-06-07 19:32:31 +03:00
Unit-тесты были написаны с помощью фреймворка Jest~\cite{jest}. При разработке приложения был использован сервис Gitlab, а также встроенный в Gitlab механизм CI/CD~\cite{cicd}. Разработка была построена следующим образом: на каждом коммите в пулл реквесте запускался пайплайн, который состоял из следующих этапов: Eslint, Prettier, Test. Первые два шага - линтеры, которые осуществляли проверку файлов проекта на код-стайл. На последнем этапе пайплана запускались unit-тесты проекта.
Для автоматизации тестирования UI использовался фреймворк Silenium IDE~\cite{silenium}. С помощью этого фреймворка были написаны интеграционные авто-тесты, покрывающие основные бизнес-требования, отраженные на диаграмме прецедентов в Приложении. \ref{keyUsecase}.
\newpage
2018-08-18 21:32:48 +03:00
\section{Методы испытаний}
2021-06-07 19:32:31 +03:00
Этап 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}
2018-08-18 21:32:48 +03:00
\subsection{Проверка требований к функциональным характеристикам}
2021-06-07 19:32:31 +03:00
При тестировании Веб-приложения был использован фреймворк 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.
2018-08-18 21:32:48 +03:00
\subsection{Проверка требований к программной документации}
2021-06-07 19:32:31 +03:00
Вся документация, представленная в требованиях, готова.
2018-08-18 21:32:48 +03:00
2021-06-07 19:32:31 +03:00
\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
2018-08-18 21:32:48 +03:00
\listRegistration
2021-06-07 19:32:31 +03:00
\end{document}