diff --git a/report/3_RequirementsAndAnalysis.tex b/report/3_RequirementsAndAnalysis.tex index fe4a589f7389da4ccea0eaaac65eaee3f756bba6..59f3f91cd4a670d691f0255f70272d1c10a999d3 100644 --- a/report/3_RequirementsAndAnalysis.tex +++ b/report/3_RequirementsAndAnalysis.tex @@ -409,7 +409,3 @@ This chapter will analyse the requirements of the proposed application and infor \end{tikzpicture} \caption{Architecture} \end{figure} - - -\section{Validation} - The testing and validation of the application will be done using Robot Framework. Robot Framework is a generic, open source, automation framework for acceptance testing \cite{Robot}, developed with Python. The framework has many libraries that extend its functionality, and one such library is Selenium, which will be used extensively to automatically drive the application\textquoteright s user interface. These tests will be written in conjunction with the application\textquoteright s features, and run alongside each check-in, as per the continuous integration methodology. \ No newline at end of file diff --git a/report/5_Implementation.tex b/report/5_Implementation.tex index f2a057c54d8e005529692430e87e0729482a9829..9035cb550cf4a0c8f67977329d0c9a58414f6143 100644 --- a/report/5_Implementation.tex +++ b/report/5_Implementation.tex @@ -9,6 +9,7 @@ \subsection{Functionality} The application, called CompForge, allows a user to create custom forms, which are stored on a serverless database hosted on Google\textquoteright s Firebase. These forms can be shared with partners - other users that are added in a similar fashion to friends or followers on social media. When a form is shared with a partner, that partner is able to complete and return it to the original user, with their answers also being stored in the application\textquoteright s database. + \section{Technologies} A variety of functionality was required to complete the application and this required the employment of a number of different technologies. Requirements included a fast and flexible frontend framework to reduce loading times and adapt quickly to changes from the backend, a realtime database to send those changes to the frontend, and good out-of-the-box security. @@ -79,6 +80,33 @@ \subsubsection{Serverless Architecture} Serverless architecture is the model Firebase uses as its platform. It is not, in fact, serverless as the name suggests. It simply means that the need for server software and hardware management by the developer is erased, because the infrastructure is provided by a host, like Firebase. This allows for improved scalability for hosted applications. -\section{Implementation Details (Do we want this???)} +\section{Progression} + This section describes the progression of the implementation during each sprint. The original plan for these sprints are laid out in chapter 8. Much of the implementation took longer than expected due to the fact it was the first time many of the technologies were being used, resulting in a steep learning curve for myself. + + \subsection{Sprint 1} + The implementation started with the installation and running of create-react-app to kickstart frontend development. From there Material-UI components were used and tweaked alongside custom code to construct the \textquotedblleft Dashboard\textquotedblright\, and \textquotedblleft Create a Form\textquotedblright\ pages. React Router was then used to ensure the page navigation worked correctly. + + \begin{figure}[H] + \center + \includegraphics[height=100mm, width=145mm]{../figures/Dashboard (hardcoded)} + \caption{Dashboard} + \end{figure} + + \subsection{Sprint 2} + A \textquoteleft Compforge\textquoteright\ project was created on Firebase. The Firebase documentation was used to configure the react project to connect to the Firebase project's realtime database. TODO: more here about how that works. + + \begin{figure}[H] + \center + \includegraphics[height=100mm, width=145mm]{../figures/Firebase} + \caption{Firebase} + \end{figure} + + \subsection{Sprint 3} + With the MVP finished, the next step was to set up authentication and user accounts. Firebase Authentication was used for this. For simplicity, I only configured sign ups by email, though it is possible to set up authentication via many other methods in Firebase namely; phone number, Google, Facebook, Twitter, GitHub, Yahoo, Microsoft and Apple accounts. Once authentication was complete, the frontend needed a \textquoteleft Sign up\textquoteright\ and \textquoteleft Sign in\textquoteright\ page. Using a Material-UI template, some configuration of the React code, as well as adjustments to the routing, the ability to sign up, sign in and sign out had been added to the web app. + + \subsection{Sprint 4} + After user accounts had been set up, it was then possible to implement a partner system. This started with the creation of an \textquoteleft Add Partner\textquoteright\ page in React. Partners were added to a list, stored as an entry in a user's record in the database. - The implementation started with the installation and running of create-react-app to kickstart frontend development. From there Material-UI components were used and tweaked alongside custom code to construct the \textquotedblleft Dashboard\textquotedblright\, and \textquotedblleft Create a Form\textquotedblright\ pages. React Router was then used to \ No newline at end of file + \subsection{Sprint 5} + The final requirement was for a user to share created forms with partners. After creating a frontend page for this, and adding it to the routing, the form sharing was done by creating a database record for the form (when the form was originally created) and adding the user as the author and later adding a list of partners to whom it was shared. + \ No newline at end of file diff --git a/report/6_TestingAndSoftwareValidation.tex b/report/6_TestingAndSoftwareValidation.tex index 60b8d941f4173d7d7de34759e3b19afe67a8942e..a3be92e3cf867ea6d858f6ad647a4f74bb623a9c 100644 --- a/report/6_TestingAndSoftwareValidation.tex +++ b/report/6_TestingAndSoftwareValidation.tex @@ -3,23 +3,90 @@ %% ---------------------------------------------------------------- \chapter{TESTING AND SOFTWARE VALIDATION} -\section{Testing} - TODO + Verification and validation are essential parts of any software project. Consequently, multiple different methods for testing the application have been employed to confirm that the application is fully functional and robust, from manual and automated to user and requirements testing. + +\section{Verification} + Verification tests have been carried to make sure that all functionality has been implemented in the project to meet the requirements of the target users. \subsection{Requirements testing} % List of requirements | Expected results | Acutal Outcome | Pass/Fail + \begin{table}[H] + \centering + \begin{tabular}{|c|c|c|c|} + \hline + Requirement & Expectation & Outcome & Result\\ + \hline + \hline + \makecell{Register} & \makecell{Use email address to\\create an account} & \makecell{Users are able to\\use their email\\ address to create\\a persistent account} & \cellcolor{green}\checkmark\\ + \hline + \makecell{Sign in} & \makecell{Use email address and\\password created at sign\\up to sign in} & \makecell{Users are able to\\login} & \cellcolor{green}\checkmark\\ + \hline + \makecell{Create Form} & \makecell{Create a custom cyber\\security compliance form\\which is stored in\\association with the\\user's account} & \makecell{Ability to create a\\compliance-style form\\which is stored and\\associated with the\\user's account} & \cellcolor{green}\checkmark\\ + \hline + \makecell{Share Form} & \makecell{Share a form created\\by the user with\\with a partner} & \makecell{Sharing a form with\\a partner allows them\\to view, fill out\\and return the form} & \cellcolor{green}\checkmark\\ + \hline + \makecell{Add Partner} & \makecell{To search and add another\\user as a partner} & \makecell{Users can add\\other users as partners\\who appear in\\their list of partners\\on the dashboard} & \cellcolor{green}\checkmark\\ + \hline + \makecell{Notifications} & \makecell{Receive notifications when\\another user shares a form\\with the user or when a\\form the user has shared\\is completed by a partner} & \makecell{Unable to implement a\\notification system within\\the remaining time} & \cellcolor{red}\texttimes\\ + \hline + \makecell{Sign out} & \makecell{Sign out of account\\so that account is\\no longer accessible\\without signing back in} & \makecell{On clicking the sign\\out button the user\\is no longer able\\to access their account\\without logging back\\in} & \cellcolor{green}\checkmark\\ + \hline + \hline + \end{tabular} + \caption{Requirements testing} + \end{table} + \subsection{User Testing} % Testing how intuitive the software is to use + Using a simple quantitative evaluation, the usability of the application was tested. Users were told about the functionality of the application. They were then asked to perform specific tasks on the application, without any instruction on how to go about carrying out those tasks. The tasks included all of the core requirements; registering an account, signing in, creating a form, adding a partner (who's account had already been set up and email address provided to the user), sharing their form with the partner and signing out. + + Once every task was completed, they were asked to answer the following questions using a value between 1 and 5, with 1 being the least positive answer and 5 being the most valuable. + + The population of users making up the test group were from a mixture of backgrounds similar to the personas in chapter 4. + + \begin{table}[H] + \centering + \begin{tabular}{|c|c|} + \hline + Question & Average Result\\ + \hline + \hline + \makecell{How easy was it to create an account?} & \makecell{}\\ + \hline + \makecell{How easy was it to sign in?} & \makecell{}\\ + \hline + \makecell{How easy was it to create a form?} & \makecell{}\\ + \hline + \makecell{How easy was it to add a partner?} & \makecell{}\\ + \hline + \makecell{How intuitive was the layout of the dashboard?} & \makecell{}\\ + \hline + \hline + \end{tabular} + \caption{User testing} + \end{table} + +\section{Validation} + To ensure that CompForge met the functional requirements specified in chapter 2, and to establish the absence of bugs, the application was evaluated using an automated test suite. -\section{Software Validation} + \subsection{Manual Testing} + TODO \subsection{Robot Framework} + The testing and validation of the application was done using Robot Framework. Robot Framework is a generic, open source, automation framework for acceptance testing \cite{Robot}, developed with Python. The framework has many libraries that extend its functionality, and one such library is Selenium, which was used extensively to automatically drive the application's user interface. \subsubsection{Integration} + TODO: + How robot was integrated into the project \subsubsection{Testing Writing} + TODO: + The process of planning and implementing tests + Test cases etc - \subsubsection{Results} \ No newline at end of file + \subsubsection{Results} + TODO: + Insert the beautiful HTML results page (and discuss?) \ No newline at end of file diff --git a/report/7_Evaluation.tex b/report/7_Evaluation.tex index 897a18aca741b2b56c993196d3ddb112f314e55b..b9855399dc3980483ced269d6a33a7d68376ef2a 100644 --- a/report/7_Evaluation.tex +++ b/report/7_Evaluation.tex @@ -11,8 +11,7 @@ \subsection{Example 2} - \subsection{Example 3} - + \subsection{User opinions?} \section{Result of Design Decisions}