@@ -42,6 +42,7 @@ October 22 & 1.0 & Adding sections 1,2, and 7\\
October 24 & 1.1 & Adding functional req tests\\
October 25 & 1.2 & Adding non functional req tests.\\
October 30 & 1.3 & Adding Unit tests, and automated functional tests\\
November 30 & 1.4 & Final edits for revision 1\\
\bottomrule
\end{tabularx}
\end{table}
...
...
@@ -54,9 +55,9 @@ This document describes the test plan for the Gifitti application developed for
\section{General Information}
\subsection{Purpose}
The purpose of the testing plan is to establish a set of tests that will test the product in its entirety to ensure that it fulfills the intended purpose. This would be accomplished through verifying if Gifitti satisfies the different functional and non-functional requirements that were assigned to it. Having test plans for any product is essential to be able to understand how well the product is satisfying the client’s needs and if there is room for improvement.
The purpose of this testing plan is to establish a set of tests that will test the product in its entirety to ensure that it fulfills the intended purpose. This will be accomplished by verifying that Gifitti satisfies the different functional and non-functional requirements that were assigned to it. Having test plans for any product is essential to be able to understand how well the product is satisfying the client’s needs and if there is room for improvement.
\subsection{Scope}
This testing plan is utilizing different testing methods, automated and user created, and various techniques, black box and white box testing, to establish if the project has any need for improvement. Two different products will be analyzed through these tests, the Proof of Concept and the first iteration of the final product. Proof of Concept will be tested to ensure that a basic representation of the product was demonstrated while the requirements should be tested when the first iteration of the final product is completed.
This testing plan will utilize different testing methods such as automated and user created as well as various techniques such as black box and white box testing, to establish if the project has any need for improvement. Two different products will be analyzed through these tests, the Proof of Concept and the first iteration of the final product. The Proof of Concept will be tested to ensure that a basic representation of the product will be demonstrated. The first iteration of the final product will be tested to verify the requirements.
\subsection{Acronyms, Abbreviations, and Symbols}
...
...
@@ -88,11 +89,11 @@ GIF & A lossless format for image files that supports both animated and static i
Sprite Sheet &A series of images (usually animation frames) combined into a larger image (or images).\\
Dialog Class & Specifies the base class used for displaying dialog boxes on the screen.\\
File Path & A path, the general form of the name of a file or directory, specifies a unique location in a file system. \\
Bitmap &a representation in which each item corresponds to one or more bits of information, especially the information used to control the display of a computer screen.\\
Frame & One of the many still images which compose the complete moving picture.\\
Bitmap &A representation in which each item corresponds to one or more bits of information, especially the information used to control the display of a computer screen.\\
Frame & One of the many still images which compose a complete moving picture.\\
Pixel & A minute area of illumination on a display screen, one of many from which an image is composed.\\
TIFF & A common format for exchanging raster graphics (bitmap) images between application programs, including those used for scanner images.\\
JPEG & A commonly used method of lossy compression for digital images, particularly for those images produced by digital photography.\\
JPEG & A commonly used method of lossless compression for digital images, particularly for those images produced by digital photography.\\
PNG & A raster graphics file format that supports lossless data compression. \\
\bottomrule
\end{tabularx}
...
...
@@ -100,27 +101,26 @@ PNG & A raster graphics file format that supports lossless data compression. \\
\end{table}
\subsection{Overview of Document}
The testing plan is broken up into distinct parts. Under the heading Plan, the basic information will be given on the product and the tests. System Test Description will contain the specific tests for the functional requirements stated for the product. These tests will broke down into what type of tests they are and the results they achieve depending on their specific input. Testing for non-functional requirements will follow the same format where input will be given and the output will be measured for all of the provided non-functional requirements. Under tests for proof of concept, the same format will be utilized as the functional testing but it will not be testing
the requirements for the project but for the goals of the proof of concept. Furthermore there will be tests to compare Gifitti to the
This testing plan is broken up into distinct parts. Under the heading Plan, the basic information will be given on the product and the tests. System Test Description will contain the specific tests for the functional requirements stated for the product. These tests will broke down into what type of tests they are and the results they achieve depending on their specific input. Testing for non-functional requirements will follow the same format where input will be given and the output will be measured for all of the provided non-functional requirements. Under tests for proof of concept, the same format will be utilized as the functional testing but it will not be testing
the requirements for the project, but for the goals of the proof of concept. Furthermore there will be tests to compare Gifitti to the
original product it was based on and unit testing plans to ensure correct output is achieved through proper internal functions.
\section{Plan}
\subsection{Software Description}
Gifitti is a software product that allows the common user to be able to manipulate for their entertainment or commercial needs.
Gifitti is a software product that allows the common user to be able to manipulate GIFS for their entertainment or commercial needs.
With an intuitive design, it allows a person who has never done any kind of graphical editing to be able to manipulate a GIF to achieve
the person's particular design. This product can also serve a commercial purpose in allowing the creation of sprite spreadsheets and
a quick production of GIFs.
the person's particular design. This product can also serve a commercial purpose in allowing the quick production of GIFs.
\subsection{Test Team}
The team to implement the test plan for the project will be Pavle Arezina, Riley McGee, Nicolai Kozel.
\subsection{Automated Testing Approach}
This test plan will utilize automated testing for verification that the GIF manipulation functionality changes the GIF properly. Such that the exported GIF image will match what is created by the user of our product.
This test plan will utilize automated testing for verification that the GIF manipulation functionality changes the GIF properly. That is to say that the exported GIF image will match what is created by the user of our product.
\subsection{Testing Tools}
The only tool to be utilized to test this product will be the Microsoft Unit Test Framework that is native with Visual Studio.
\subsection{Testing Schedule}
See Gantt Chart\href{https://gitlab.cas.mcmaster.ca/kozeln/Gifitti/tree/master/ProjectSchedule}{ here.}
The testing schedule is listed on the Gantt Chart which can be found\href{https://gitlab.cas.mcmaster.ca/kozeln/Gifitti/tree/master/ProjectSchedule}{ here.}
\section{System Test Description}
...
...
@@ -191,7 +191,7 @@ How test will be performed:
\item{Launch the program}
\item{Select Open}
\item{Try and select a file that is not a GIF or specify a file path to a known file}
\item{Verify program remains open, and no image is loaded}
\item{Verify program remains open, no image is loaded, and an error message is displayed to the user}
\\
\end{enumerate}
%
...
...
@@ -257,31 +257,9 @@ How test will be performed:
%End of save Requirement
\end{enumerate}
\subsubsection{Save GIF as Sprite Spreadsheet}
\paragraph{The user is able to save a GIF as a sprite spreadsheet in a specified location}
\begin{enumerate}
\item{Save Sprite Spreadsheet to a Known Location-id1\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF Loaded.\\
Input: File path, GIF file.\\
Output: GIF file saved as a Sprite Spreadsheet to specified location.\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Open a GIF}
\item{Choose to export the image as a sprite spreadsheet}
\item{Verify that the GIF is a single image representation of the GIF frames}
\\
\end{enumerate}
%
%End of Sprite Spreadsheet Requirement
\end{enumerate}
\subsubsection{GIF Start, Stop, Modify Length}
\paragraph{The user is able to start (play), start and stop GIFs, testing of GIF shortening and playback speed occurs here as well}
\paragraph{The user is able to start and stop GIFs as well as shorten the GIF and change the playback speed.}
\begin{enumerate}
\item{Play Stop GIF-id1\\}
...
...
@@ -416,185 +394,7 @@ How test will be performed:
%End of Help Requirement
\end{enumerate}
\subsubsection{GIF Reset}
\paragraph{Verifies and validates GIF can be reset to loaded state}
\begin{enumerate}
\item{Modify Attributes-id1\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF loaded\\
Input: GIF\\
Output: Inputted GIF\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a GIF}
\item{Modify GIF attributes such as frame length, coloration etc}
\item{Select reset}
\item{Verify GIF in is the same as current GIF that is shown to the user}
\\
\end{enumerate}
\item{Modify Via Adding a Frame-id2\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF loaded\\
Input: GIF, inputted frame\\
Output: Inputted GIF\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a GIF}
\item{Modify GIF by adding a frame}
\item{Select reset}
\item{Verify GIF loaded has added frame removed}
\\
\end{enumerate}
\item{Modify Via Frame Subset Selected-id3\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF loaded\\
Input: GIF\\
Output: Inputted GIF\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a GIF}
\item{Modify GIF by sub-setting what frames are used}
\item{Select reset}
\item{Verify GIF loaded returns to full GIF state}
\\
\end{enumerate}
\item{Automated Modify Via Adding a Frame-id4\\}
Type: Automated Functional.\\
Initial State: Image reading module driver \\
Input: GIF; BMP image;\\
Output: Inputted GIF \\
How test will be performed:
\begin{enumerate}
\item{Test will load GIF from a known location}
\item{Test will load the frame being added from a known location}
\item{The frame will be added to a specific spot of the GIF}
\item{The GIF will then be reset}
\item{The stored GIF is to be frame by frame compared to the original GIF}
\item{Each frame is to be cast to a bitmap then compared in a pixel-by-pixel manner}
\item{Pass if 100 percent of all pixels match}
\end{enumerate}
%
%End of Reset Requirement
\end{enumerate}
\subsubsection{Frame Addition}
\paragraph{Verifies frame addition}
\begin{enumerate}
\item{Add GIFs-id1\\}
Type: Manual Functional.\\
Initial State: Program loaded\\
Input: GIF x 2\\
Output: Concatenated GIFs\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a Gif}
\item{Select a frame and import a gif}
\item{Gif should subset from frame to end of the imported gif}
\item{Verify the concatenation holds on export}
\\
\end{enumerate}
\item{Add PNGs-id2\\}
Type: Manual Functional.\\
Initial State: Program loaded\\
Input: GIF; PNG image\\
Output: GIF with PNG input added as a frame\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a Gif}
\item{Select a frame and import a PNG}
\item{Verify PNG is added after current frame in GIF}
\item{Verify the new GIF is exported the same way}
\end{enumerate}
\item{JPEG frames to GIF-id3\\}
This test is identical to id2 with PNG replaced with JPEG
\item{TIFF frames to GIF-id4\\}
This test is identical to id2 with PNG replaced with TIFF
\item{BMP frames to GIF-id5\\}
This test is identical to id2 with PNG replaced with BMP
\item{Automated Testing of BMP Frames to GIF-id6}
Type: Automated Functional.\\
Initial State: Image reading module driver \\
Input: GIF; BMP image; Expected output GIF\\
Output: GIF with BMP input added as a frame \\
How test will be performed:
\begin{enumerate}
\item{Test will load GIF from a known location}
\item{Test will load the frame being added from a known location}
\item{The frame will be added to a specific spot of the GIF}
\item{The new GIF is to be compared to expected through breaking each down into frames}
\item{Cast each frame and pixel-by-pixel compare the output to the expected}
\item{Pass if 100 percent of all pixels match}
\end{enumerate}
%
%End of Frame Addition Requirement
\end{enumerate}
\subsubsection{Frame Drawing}
\paragraph{Verifies and validates ability to draw on frames}
\begin{enumerate}
\item{Single Frame Drawing-id1\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF loaded\\
Input: GIF\\
Output: Inputted Gif with image overlay on a frame\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a GIF}
\item{Make an obvious edit to a frame via drawing}
\item{Export the GIF and verify obvious change remains}
\\
\end{enumerate}
\item{Multi Frame Drawing-id1\\}
Type: Manual Functional.\\
Initial State: Program loaded; GIF loaded\\
Input: GIF\\
Output: Inputted Gif with image overlay many frames\\
How test will be performed:
\begin{enumerate}
\item{Launch the program}
\item{Load a GIF}
\item{Make an obvious edit to a frame via drawing}
\item{Make the edit extend over a set of frames}
\item{Export the GIF and verify obvious change remains on all selected frames}
\\
\end{enumerate}
%
%End of Frame Drawing Requirement
\end{enumerate}
\subsection{Tests for Non-functional Requirements}
...
...
@@ -661,7 +461,7 @@ Input: GIF.
Output: NA
How test will be performed: Load a GIF into the program. The time to load the GIF and start playback should be less than MAX\_UI\_LOAD.
How test will be performed: Load a GIF into the program. The time to load the GIF and start playback should be less than MAX\_UI\_LOAD. MAX\_UI\_LOAD is derived from the original system, GIF Viewer, so make sure this test is perfromed on the same system as the benchmark MAX\_UI\_LOAD is acquired from.