Merge branch 'master' of github.com:jeena/GGS-report

This commit is contained in:
Jeena Paradies 2011-05-13 00:01:28 +02:00
commit f4ae989ab3

View file

@ -4912,7 +4912,7 @@ The information about which players are seated by each table is used when
Consider a game of chess, each player notifies the table of its actions, Consider a game of chess, each player notifies the table of its actions,
the table then notifies the rest of the participants of these actions after the table then notifies the rest of the participants of these actions after
having had the actions processed by the game VM, where an action could having had the actions processed by the game VM, where an action could
be moving a piece in the game. be moving a playing piece in the game.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -4986,7 +4986,7 @@ reference "sec:Communication-with-the-GDL-VM"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
The code which is run in the VM is uploaded to the GGS before each game. The code which is run in the VM is uploaded to the GGS prior to each game.
Allowing the clients to upload code allows clients to run any game. Allowing the clients to upload code allows clients to run any game.
\end_layout \end_layout
@ -5104,7 +5104,7 @@ Localstorage
\noun default \noun default
. .
To store a value within the database, not only is the table token and the To store a value within the database, not only is the table token and the
name of the namespace required, but an unique key so that the value can name of the namespace required, but a unique key so that the value can
be successfully retrieved or modified later. be successfully retrieved or modified later.
The key is decidable by the game developer. The key is decidable by the game developer.
@ -5171,7 +5171,7 @@ localStorage
. .
The game state is safely stored in a database and retrieved for manipulation The game state is safely stored in a database and retrieved for manipulation
by a call for the world object. by a call for the world object.
Interaction with the players are done by using the Interaction with the players is done by using the
\emph on \emph on
\begin_inset ERT \begin_inset ERT
@ -6088,7 +6088,7 @@ To prevent any data loss, the good state of the worker processes are stored
previous state, if there is any, that state is loaded in to the worker previous state, if there is any, that state is loaded in to the worker
and it proceeds where it left off. and it proceeds where it left off.
If on the other hand no state is available, a special message is delivered If on the other hand no state is available, a special message is delivered
instead, making the worker creates a new state, this is what happens when instead, making the worker create a new state, this is what happens when
the workers are first created. the workers are first created.
\end_layout \end_layout
@ -6220,11 +6220,11 @@ Testing
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
In order to make sure the GGS prototype adheres to the specification set, To make sure the GGS prototype adheres to the specification set, two different
two different approaches to software testing are used. approaches to software testing are used.
For simpler testing the GGS prototype uses unit tests. For simpler testing the GGS prototype uses unit tests.
Modules are tested on a high level, making sure each function in the module Modules are tested on a high level, making sure each function in the module
tested functions according to specification. tested functions has been tested according to specification.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -6251,14 +6251,14 @@ Unit testing
\begin_layout Standard \begin_layout Standard
Unit testing is a way to check if the functionality adheres to the specification Unit testing is a way to check if the functionality adheres to the specification
of the system by manually creating test cases for sections of code. of the system by manually creating test cases for sections of code.
In most cases whole functions. Usually whole functions.
Unit testing is good, not only for revealing software bugs, but also to Unit testing is good, not only for revealing software bugs, but also to
state that a feature is working according to the specification. state that a feature is working according to the specification.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Unit testing is a useful way to create regression tests. Unit testing is an useful way to create regression tests.
Regression tests are used to make sure changes made to the GGS do not introduce Regression tests are used to make sure changes made to the GGS do not introduce
new bugs or break the specification. new bugs or break the specification.
The regression tests are optimally run very often, such as after each change The regression tests are optimally run very often, such as after each change
@ -6268,7 +6268,7 @@ Unit testing is a useful way to create regression tests.
\begin_layout Standard \begin_layout Standard
Erlang provides a module for unit testing called eunit. Erlang provides a module for unit testing called eunit.
Eunit, being a part of OTP, is rich in functionality and well documented, Eunit, being a part of OTP, is rich in functionality and well documented,
it doesn't however allow any means of testing asynchronous behaviours as it does not however allow any means of testing asynchronous behaviors as
opposed to other means of software testing. opposed to other means of software testing.
\end_layout \end_layout
@ -6279,8 +6279,8 @@ Automated test case generation
\begin_layout Standard \begin_layout Standard
The problem of writing software tests manually is that it takes a lot of The problem of writing software tests manually is that it takes a lot of
time. time.
There exists other ways to test software that address this problem by generatin There exists other ways to test software that addresses this problem by
g test cases with certain properties. generating test cases with certain properties.
This allows for testing functions with a lot of different input parameters This allows for testing functions with a lot of different input parameters
without having to implement each specific test itself. without having to implement each specific test itself.
@ -6293,8 +6293,8 @@ By having each test automatically generated, each test can be very complex
By using QuickCheck the GGS can be tested with input which would be extremely By using QuickCheck the GGS can be tested with input which would be extremely
difficult to construct using manual testing methods. difficult to construct using manual testing methods.
Regression tests, such as the unit tests used by the GGS are more useful Regression tests, such as the unit tests used by the GGS are more useful
for ensuring the system does not diverge from a working scenario than for for ensuring that the system does not diverge from a working scenario than
finding new cases where the specification does not hold for finding new cases where the specification does not hold
\begin_inset CommandInset citation \begin_inset CommandInset citation
LatexCommand citet LatexCommand citet
key "Arts:2006:TTS:1159789.1159792" key "Arts:2006:TTS:1159789.1159792"
@ -6318,7 +6318,7 @@ QuickCheck has features to generate very large and complex tests, the results
\emph on \emph on
minimal failing test case minimal failing test case
\emph default \emph default
which contains the smalles failing test sequence. which contains the smallest failing test sequence.
By applying a very large test and gradually simplifying the test to find By applying a very large test and gradually simplifying the test to find
the smallest failing sequence, many bugs which would other wise have been the smallest failing sequence, many bugs which would other wise have been
hard to catch can be caught hard to catch can be caught
@ -6333,7 +6333,7 @@ key "Arts:2006:TTS:1159789.1159792"
\begin_layout Standard \begin_layout Standard
QuickCheck was originally made for the programming language Haskell. QuickCheck was originally made for the programming language Haskell.
There are a lot of reimplementations of QuickCheck in various programming There is a lot of reimplementations of QuickCheck in various programming
languages. languages.
Erlang QuickCheck (EQC) and Triq are two variants of QuickCheck for Erlang. Erlang QuickCheck (EQC) and Triq are two variants of QuickCheck for Erlang.
EQC was chosen for testing the GGS. EQC was chosen for testing the GGS.