-
Notifications
You must be signed in to change notification settings - Fork 2
/
TestPlan.tex
693 lines (422 loc) · 21.7 KB
/
TestPlan.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
\documentclass[12pt, titlepage]{article}
\usepackage{amsmath, mathtools}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{hyperref}
\usepackage{xr}
\externaldocument{../SRS/SRS}
\hypersetup{
colorlinks,
citecolor=black,
filecolor=black,
linkcolor=red,
urlcolor=blue
}
\usepackage[round]{natbib}
\newcommand{\rref}[1]{R\ref{#1}}
\newcommand{\ddref}[1]{DD\ref{#1}}
\input{../Comments}
\begin{document}
\title{Test Plan for Breaking Effect (BE)}
\author{Marshall Xiaoye Ma}
\date{\today}
\maketitle
\pagenumbering{roman}
\section{Revision History}
\begin{tabularx}{\textwidth}{p{3cm}p{2cm}X}
\toprule {\bf Date} & {\bf Version} & {\bf Notes}\\
\midrule
2017-10-21 & 1.0 & New Document\\
\bottomrule
\end{tabularx}
~\newpage
\section{Symbols, Abbreviations and Acronyms}
\renewcommand{\arraystretch}{1.2}
%\begin{table}[ht]
\noindent \begin{tabular}{l l l}
\toprule
\textbf{symbol} & \textbf{unit} & \textbf{description}\\
\midrule
$S$ & unit of length & displacement
\\
$t$ & $s$ & the time in seconds since the start of the game
\\
$v_{0}$ & $m/s$ & initial speed
\\
$a$ & $m/s^2$ & acceleration
\\
$g$ & $m/s^2$ & gravity acceleration
\\
$\Delta E_{k}$ & J & variation of kinetic energy
\\
$\Delta E_{p}$ & J & variation of potential energy
\\
$W_{f}$ & $J$ & work done by kinetic friction
\\
$x_{n}$ & $m$ & x coordinates of gravity center of piece $n$, $n \in N$
\\
$y_{n}$ & $m$ & y coordinates of gravity center of piece $n$
\\
$z_{n}$ & $m$ & z coordinates of gravity center of piece $n$
\\
$\theta_{1}$ & degree & angle between initial speed and horizontal
\\
$\theta_{2}$ & degree & angle between
x axiom and projection on horizontal of initial speed
\\
$S_{x}$ & m & displacement on direction of x axiom
\\
$S_{y}$ & m & displacement on direction of y axiom
\\
$S_{z}$ & m & displacement on direction of z axiom
\\
$\mu_k$ & & coefficient of friction
\\
\bottomrule
\end{tabular}
\renewcommand{\arraystretch}{1.2}
\begin{tabular}{l l}
\toprule
\textbf{symbol} & \textbf{description}\\
\midrule
A & Assumption\\
DD & Data Definition\\
GD & General Definition\\
GS & Goal Statement\\
IM & Instance Model\\
LC & Likely Change\\
PS & Physical System Description\\
R & Requirement\\
SRS & Software Requirements Specification\\
BE & Breaking Effect\\
T & Theoretical Model\\
\bottomrule
\end{tabular}\\
\newpage
\tableofcontents
\listoftables
\listoffigures
\newpage
\pagenumbering{arabic}
\section{General Information}
\subsection{Purpose}
The purpose for this document is to build test plan for project Breaking Effect.Test cases in the document are designed based on SRS of the project and aim to cover both functional and non-functional requirements described in SRS.\\
This document is used as a guide that need to be followed exactly in test stage before release of this project. \\
\subsection{Scope}
This test plan covers verification and validation for the project Breaking Effect to make sure the program is implemented as requirement specifiction, including automated testing, system test and unit test. The project relies on Unity3D as platform and uses function provided by Unity3D for object cutting. So test for object cutting is not included in this test plan. This test plan is designed based on SRS so that it doesn't cover test cases for requirements not in SRS.
\subsection{Overview of Document}
This test plan firstly describes environment and platform for Breaking Effect. Purpose and scope of outlined the document generally in previous sections. Detailed test plan and test cases are covered in following sections including test team, automated testing approach, verification tools and test cases for both functional requirements and non-functional requirements.
\section{Plan}
\subsection{Software Description}
Breaking effect presents how the pieces of an object move after it separates into parts with
suddenness or violence.
This project implements running time breaking effect in codes for 3-D models in unity3D without help from any similar plug-in. Including different shapes 3-D objects breaking based on physics and pieces interacting with the momentum provided by the breaking force. The breaking effect program simulates 3-D objects destruction process in vision by implementing scientific computing functions.
This project concentrates on calculation while
HCI or GUI are not important parts. Applied force is decided in codes in advance as input
and trace of motion is the output after calculation.
\subsection{Test Team}
The team that is responsible for all tests is Xiaoye Ma.
\subsection{Automated Testing Approach}
Most testing work for Breaking Effect does not rely on automated testing. Because the final output is visualization and experience from users. Verification of inputs will be done automatically through help from Unit Test Generator provided by IDE Visual Studio 2017. Test cases are covered in following sections. Verification of correctness and output from intermediate steps will be tested manually.
Automated testing also helps check correctness of C$\#$ codes including bugs and syntax errors detecting.
\subsection{Verification Tools}
The project is implemented by C$\#$ programming language that is supported by platform Unity3D. The program is written through IDE Visual Studio 2017 which supports following tools:
\begin{itemize}
\item Unit Test Generator\\
Unit Test Generator will be used to decrease workload involved in creating new unit tests. It helps the routine test creation tasks. It also provides the ability to generate and configure test project and test class.
\end{itemize}
\begin{itemize}
\item Automatic code checking\\
Visual Studio automatically help check code error when developer is programming to pick out errors including syntax error, grammar error.
\end{itemize}
% \subsection{Testing Schedule}
% See Gantt Chart at the following url ...
\subsection{Non-Testing Based Verification}
Code walkthrough will be done by developer and a peer reviewer to identify any defects. They both review codes and do logic analysis to see if the program satisfies all requirements in SRS. The walkthrough should also find and fix possible bugs and peer reviewer is expected to provide any comment to help developer improve the program.
\section{System Test Description}
Section \ref{Sec_TestInput} focuses on verifying correctness of users inputs that covers \rref{R_Inputs} and \rref{R_VerifyOutput}. Testing cases in this section ensure Breaking Effect can handle both valid inputs and invalid inputs. Corresponding error messages for different situations of invalid inputs including incomplete inputs, inputs in incorrect data types and inputs do not satisfy data constraints.\\
Sections from \ref{Sec_testGravityCenter} focus on verifying outputs from intermediate steps and make sure all modules in program work correctly that cover other functional requirements including \rref{R_InitialSpeed}, \rref{R_Piece}, \rref{R_Calculate}, \rref{R_Output1}, \rref{R_Output2}.
\subsection{Tests for Functional Requirements}
\subsubsection{Getting input from user}
\label{Sec_TestInput}
This test suite is designed to ensure the program can handle both valid and invalid inputs from user.\\
Inputs provided by user include target object, explosion level (also known as initial momentum after explosion) and coefficient of friction on the ground.
\paragraph{Correct input}
\begin{enumerate}
\item{testCorrectInput\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Receive inputs successfully and display all inputs in console.
How test will be performed: Automated unit test
\end{enumerate}
\paragraph{Missing necessary input}
\begin{enumerate}
\item{testNoObject\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $\mu_{k} = 0.05$
Output: Error message - No object is found.
How test will be performed: Automated unit test
\item{testNoMu\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$
Output: Error message - Please input coefficient of friction on the ground.
How test will be performed: Automated unit test
\item{testNoMomentum\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Error message - Please input explosion level.
How test will be performed: Automated unit test
\end{enumerate}
\paragraph{Non-numerical value}
\begin{enumerate}
\item{testNonNumMomentum\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = a$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Error message - Explosion level can only be a number from 1 to 10.
How test will be performed: Automated unit test
\item{testNonNumCoordinate\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,a)$, $\mu_{k} = 0.05$
Output: Error message - Coordinate can only be a number from -1000 to 1000.
How test will be performed: Automated unit test
\item{testNonNumMu\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = a$
Output: Error message - coefficient of friction can only be a number from 0 to 1.
How test will be performed: Automated unit test
\end{enumerate}
\paragraph{Incomplete inputs}
\begin{enumerate}
\item{testMissingAxiom\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,)$, $\mu_{k} = 0.05$
Output: Error message - Please complete input.
How test will be performed: Automated unit test
\end{enumerate}
\paragraph{Inputs out of scope}
\begin{enumerate}
\item{testWrongMomentum\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = -1$ or $E = 11$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Error message - Explosion level can only be a number from 1 to 10.
How test will be performed: Automated unit test
\item{testWrongCoordinate\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,99999)$, $\mu_{k} = 0.05$
Output: Error message - Coordinate can only be a number from -1000 to 1000.
How test will be performed: Automated unit test
\item{testWrongMu\\}
Type: Functional, Dynamic, Automated
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 99$
Output: Error message - coefficient of friction can only be a number from 0 to 1.
How test will be performed: Automated unit test
\end{enumerate}
\subsubsection{Gravity center calculation for each piece}
\label{Sec_testGravityCenter}
This section covers \rref{R_Piece} in SRS that program needs to get gravity center of each piece correctly. Testing for edge cases and error handling will be covered in Section \ref{Sec_UnitTest}. \\
There is an assumption for this section that all tests in \ref{Sec_TestInput} are passed.
\begin{enumerate}
\item{testGravityCenter\\}
Type: Functional, Dynamic, Manual
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: A list of coordinates of all pieces in format $(x_{n},y_{n},z_{n})$ in the console.
How test will be performed: Manually input and check output by developer.
\end{enumerate}
\subsubsection{Initial speed calculation of each piece}
\label{Sec_TestForInitialSpeed}
Test case in this section covers \rref{R_InitialSpeed} in SRS that program calculates initial speed for each piece. Testing for edge cases and error handling will be covered in Section \ref{Sec_UnitTest}.\\
There is an assumption for this section that all tests in \ref{Sec_TestInput} and \ref{Sec_testGravityCenter} are passed.
\begin{enumerate}
\item{testInitialSpeed\\}
Type: Functional, Dynamic, Manual
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: initial speed $v_{0} = 10 * E$
How test will be performed: Manually input and check output by developer.
\end{enumerate}
\subsubsection{Calculation of angle between initial speed and horizontal($\theta _{1}$) as well as the angle between x axiom and projection on horizontal of initial speed($\theta _{2}$)}
\label{Sec_TestForAngle}
This section is designed to determine angle calculation module works correctly to calculate two angles, which covers \rref{R_Calculate} in SRS. Testing for edge cases and error handling will be covered in Section \ref{Sec_UnitTest}.\\
There is an assumption for this section that all tests in \ref{Sec_TestInput}, \ref{Sec_testGravityCenter} and \ref{Sec_TestForInitialSpeed} are passed.
\begin{enumerate}
\item{testAngles\\}
Type: Functional, Dynamic, Manual
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$, $(x_{n},y_{n},z_{n})$ which is output from \ref{Sec_testGravityCenter}
Output: $\theta_{1}=arctan \frac{|z_{n}|}{\sqrt{x_{n}^2+y_{n}^2}}$ and $\theta_{2}=arctan \frac{y_{n}}{x_{n}}$
How test will be performed: Manually input and check output by developer.
\end{enumerate}
\subsubsection{Calculation of displacement for each piece in the air}
\label{Sec_TestMotionAir}
This section covers \rref{R_Output1} that displacement of each piece in the air should be calculated correctly. Testing for edge cases and error handling will be covered in Section \ref{Sec_UnitTest}.\\
There is an assumption for this section that all tests in \ref{Sec_TestInput}, \ref{Sec_testGravityCenter}, \ref{Sec_TestForInitialSpeed} and \ref{Sec_TestForAngle} are passed.
\begin{enumerate}
\item{testMotionAir\\}
Type: Functional, Dynamic, Manual
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$, time t, and $\theta_{1}$, $\theta_{2}$, $v_{0}$ that are result from \ref{Sec_TestForAngle}, \ref{Sec_TestForInitialSpeed}
Output: $S_{x}=v_{0}\cdot cos\theta _{1}\cdot cos\theta _{2}\cdot t$, $S_{y}=v_{0}\cdot cos\theta _{1}\cdot sin\theta _{2}\cdot t$ and $S_{z}=v_{0}\cdot sin\theta _{1}\cdot t-\frac{1}{2}gt^{2}$
How test will be performed: Manually input and check output by developer.
\end{enumerate}
\subsubsection{Calculation of displacement for each piece on the ground}
This section tests the final functional requirement \rref{R_Output2} is satisfied correctly that displacement of each piece on the ground should be calculated correctly. Testing for edge cases and error handling will be covered in Section \ref{Sec_UnitTest}.\\
There is an assumption for this section that all tests in \ref{Sec_TestInput}, \ref{Sec_testGravityCenter}, \ref{Sec_TestForInitialSpeed}, \ref{Sec_TestForAngle} and \ref{Sec_TestMotionAir} passed.
\begin{enumerate}
\item{testMotionGround\\}
Type: Functional, Dynamic, Manual
Initial State: New Session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$, time t and $\theta_{1}$, $\theta_{2}$, $v_{0}$ that are result from \ref{Sec_TestForAngle}, \ref{Sec_TestForInitialSpeed}
Output: $S_{x}=v_{0}\cdot cos\theta _{1}\cdot cos\theta _{2}\cdot t-\frac{1}{2}at^{2}$ and $S_{y}=v_{0}\cdot cos\theta _{1}\cdot sin\theta _{2}\cdot t-\frac{1}{2}at^{2}$
How test will be performed: Manually input and check output by developer.
\end{enumerate}
\subsubsection{Comparison with professional plug-in}
This test case is designed to compare Breaking Effect with existing plug-in in Unity3D. Visualization is the most important point of the project so this section aims to test if Breaking Effect simulates the explosion vividly.
\begin{enumerate}
\item{testCompare\\}
Type: Functional, Dynamic, Manual
Initial State: New session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Motion of each piece.
How test will be performed: Compare output with professional plug-ins.
\end{enumerate}
\subsection{Tests for Nonfunctional Requirements}
\subsubsection{Performance test}
\begin{enumerate}
\item{testPerformance\\}
Type: Nonfunctional,Dynamic, Manual
Initial State: New session
Input/Condition: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output/Result: Motion of each piece.
How test will be performed: Adjust amount of pieces to see the performance that if program can run smoothly in huge amount of pieces.
\end{enumerate}
\subsubsection{Comparison with professional plug-in}
This test case is designed to compare Breaking Effect with existing plug-in in Unity3D. Visualization is the most important point of the project so this section aims to test if Breaking Effect simulates the explosion vividly.
\begin{enumerate}
\item{testCompare\\}
Type: Functional, Dynamic, Manual
Initial State: New session.
Input: $E = 5$, $(X,Y,Z) = (0,0,0)$, $\mu_{k} = 0.05$
Output: Motion of each piece.
How test will be performed: Compare output with professional plug-ins.
\end{enumerate}
\subsection{Traceability Between Test Cases and Requirements}
\begin{table}[h!]
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|}
\hline
& \rref{R_Inputs} & \rref{R_InitialSpeed} & \rref{R_VerifyOutput}& \rref{R_Piece} &\rref{R_Calculate} & \rref{R_Output1}&\rref{R_Output2} \\
\hline
testCorrectInput &X & &X & & & &\\ \hline
testNoObject &X & & & & & &\\ \hline
testNoMu &X & & & & & &\\ \hline
testNoMomentum &X & & & & & &\\ \hline
testNonNumMomentum & & &X & & & &\\ \hline
testNonNumCoordinate & & &X & & & &\\ \hline
testNonNumMu & & &X & & & &\\ \hline
testMissingAxiom & & &X & & & &\\ \hline
testWrongMomentum & & &X & & & &\\ \hline
testWrongCoordinate & & &X & & & &\\ \hline
testWrongMu & & &X & & & &\\ \hline
testGravityCenter & & & &X & & &\\ \hline
testInitialSpeed & &X & & & & &\\ \hline
testAngles & & & & &X & &\\ \hline
testMotionAir & & & & & &X &\\ \hline
testMotionGround & & & & & & &X\\ \hline
\end{tabular}
\caption{Traceability Matrix Showing the Connections Between Items of Different Sections}
\label{Table:trace}
\end{table}
\newpage
% \section{Tests for Proof of Concept}
% \subsection{Area of Testing1}
% \paragraph{Title for Test}
% \begin{enumerate}
% \item{test-id1\\}
% Type: Functional, Dynamic, Manual, Static etc.
% Initial State:
% Input:
% Output:
% How test will be performed:
% \item{test-id2\\}
% Type: Functional, Dynamic, Manual, Static etc.
% Initial State:
% Input:
% Output:
% How test will be performed:
% \end{enumerate}
% \subsection{Area of Testing2}
% ...
\section{Unit Testing Plan}
\label{Sec_UnitTest}
Unit Test Generator provided by Visual Studio 2017 will be used to implement automated unit testing for this project.\\
For each function, a test class will be created through Unit Test Generator. Developer provides inputs, runs automated test to see if it is passed.\\
Inputs will be provided by different target objects, initial locations, initial momentum, coefficient of friction. \\
Unit tests for this project focuses on edge cases checking and error handling. Unit tests for input handling module are covered in \ref{Sec_TestInput}.\\
Unit tests for other modules will be designed after modules designing are finished.
\subsection{Unit test for initial speed calculation}
\begin{enumerate}
\item{unitTest1\\}
Type: Functional, Dynamic, Automated
Initial State: New session.
Input: Edge cases: E=1, E=10.
Error cases: E=nil, E=-1, E=99
Output: Initial speed $v_{0}$
How test will be performed: Automated unit testing.
\end{enumerate}
\subsection{Unit test for gravity center calculation}
\begin{enumerate}
\item{unitTest2\\}
Type: Functional, Dynamic, Automated
Initial State: New session.
Input: location of target object $(X,Y,Z)$ and object cutting function provide by platform.
\an{Object cutting function is input provided by developer that is only used for doing unit testing. So no such input in System test, where need input from user only.}
Output: $(x_{n},y{n},z_{n})$
How test will be performed: Automated unit testing.
\end{enumerate}
\subsection{Unit test for angles calculation}
\begin{enumerate}
\item{unitTest3\\}
Type: Functional, Dynamic, Automated
Initial State: New session.
Input: Edge cases for $(X,Y,Z)$, $(x_{n},y_{n},z_{n})$.
Output: $\theta_{1}$, $\theta_{2}$
How test will be performed: Automated unit testing.
\end{enumerate}
\subsection{Unit test for displacement calculation}
\begin{enumerate}
\item{unitTest4\\}
Type: Functional, Dynamic, Automated
Initial State: New session.
Input: Time $t$, $\theta_{1}$, $\theta_{2}$, $v_{0}$, $\mu_{k}$
Output: $a = \mu_{k}g$, $S$ \an{Acceleration $a$ is a intermediate result that don't need a seperate module.}
How test will be performed: Automated unit testing.
\end{enumerate}
\bibliographystyle{plainnat}
\bibliography{SRS}
\newpage
\section{Appendix}
\subsection{Symbolic Parameters}
The definition of the test cases will call for SYMBOLIC\_CONSTANTS.
Their values are defined in this section for easy maintenance.
\begin{tabular}{l l l}
\toprule
\textbf{symbol} & \textbf{value} & \textbf{description}\\
\midrule
$g$ & $9.8 m/s^{2}$ & gravity acceleration\\
\bottomrule
\end{tabular}\\
\subsection{Usability Survey Questions?}
Usability survey will not be done for this project.
\end{document}