Browse Source

README-en.md edited on August 3, 2016 at 10:55am

Jose R Ortiz Ubarri 8 years ago
parent
commit
bebd5e216e
1 changed files with 21 additions and 21 deletions
  1. 21
    21
      README-en.md

+ 21
- 21
README-en.md View File

@@ -6,9 +6,9 @@
6 6
 
7 7
 [Verano 2016 - Ive - Coralys]
8 8
 
9
-As you have learned in previous labs, getting a program to compile is only a minor part of programming. The compiler will tell you if there are any syntactical errors, but it isn't capable of detecting logical problems in your program. It's very important to test the program's functions to validate that they produce correct results.
9
+As you have learned in previous laboratory experiences, getting a program to compile is only a minor part of programming. The compiler will tell you if there are any syntactical errors, but it isn't capable of detecting logical problems in your program. It's very important to test the program's functions to validate that they produce correct results.
10 10
 
11
-These tests can be performed by hand, this is, running the program multiple times, providing representative inputs and visually checking that the program outputs correct results. A more convenient way is to implement functions in the program whose sole purpose is to validate that other functions are working correctly. In this lab you will be practicing both testing methods.
11
+These tests can be performed by hand; this is, running the program multiple times, providing representative inputs and visually checking that the program outputs correct results. A more convenient way is to implement functions in the program whose sole purpose is to validate that other functions are working correctly. In this laboratory experience, you will be practicing both testing methods.
12 12
 
13 13
 
14 14
 ## Objectives:
@@ -33,7 +33,7 @@ Before you get to the laboratory you should have:
33 33
 
34 34
 ---
35 35
 
36
-## Testing a function
36
+## Testing a Function
37 37
 
38 38
 When we test a function's validity we should test cases that activate the various results the function could return.
39 39
 
@@ -63,9 +63,9 @@ When we test a function's validity we should test cases that activate the variou
63 63
 
64 64
 ---
65 65
 
66
-### The`assert` function:
66
+### The`assert` Function
67 67
 
68
-The `assert(bool expression)` function can be used as a rudimentary tool to validate functions. `assert` has a very powerful, yet simple functionality. If the expression that we place between the `assert` parenthesis is *true*, the function allows the program to continue onto the next instruction. Otherwise, if the expression we place between the parenthesis is *false*, the `assert` function causes the program to terminate and prints an error message on the terminal, that informs the user about the `assert` instruction that failed.
68
+The `assert(bool expression)` function can be used as a rudimentary tool to validate functions. `assert` has a very powerful, yet simple functionality. If the expression that we place between the `assert` parenthesis is *true*, the function allows the program to continue onto the next instruction. Otherwise, if the expression we place between the parenthesis is *false*, the `assert` function causes the program to terminate and print out an error message on the terminal, that informs the user about the `assert` instruction that failed.
69 69
 
70 70
 For example, the following program will run from start to finish without problems since every expression included in the assert's parentheses evaluates to *true*.
71 71
 
@@ -125,7 +125,7 @@ When the program is ran, instead of getting the phrase `"That's all, folks!"` in
125 125
 The program will not execute the remaining instructions after line 8.
126 126
 
127 127
 
128
-#### How to use assert to validate functions?
128
+#### How to Use Assert to Validate Functions?
129 129
 
130 130
 Suppose that you want to automate the validation of the `ageRange`. One way to do it is by implementing and calling a function that calls the `ageRange` function with different arguments and verifies that each returned value is equal to the expected result. If the `ageRange` function returns a value that is not expected, the testing function aborts the program and reports the test that failed. The following illustrates a function to test the `ageRange` function. Observe that it consists of one assert per each of the tests we had listed earlier. 
131 131
 
@@ -166,7 +166,7 @@ void test_ageRange() {
166 166
 
167 167
 ## Laboratory Session:
168 168
 
169
-### Exercise 1: Designing tests by hand
169
+### Exercise 1 - Designing Tests by Hand
170 170
 
171 171
 In this exercise you will practice how to design tests to validate functions, using only the function's description and the graphical user interface that is used to interact with the function.
172 172
 
@@ -182,7 +182,7 @@ Suppose that the program has an interface like the following:
182 182
 
183 183
 ![figure4.png](images/figure4.png)
184 184
 
185
-**Figure 4** - Interface for a program that finds the max value out of three integers.
185
+**Figure 4.** Interface for a program that finds the max value out of three integers.
186 186
 
187 187
 ---
188 188
 
@@ -195,7 +195,7 @@ You could determine if the program provides valid results **without analyzing th
195 195
 If one of these three cases does not have the expected result, your friend's program does not work. On the other hand, if the three cases work, then the program has a high probability of being correct.
196 196
 
197 197
 
198
-#### Functions to validate
198
+#### Functions to Validate
199 199
 
200 200
 In this exercise you will be designing tests to validate various versions of the functions that are described below. Each one of the functions has four versions, "Alpha", "Beta", "Gamma" and "Delta".
201 201
 
@@ -205,7 +205,7 @@ In this exercise you will be designing tests to validate various versions of the
205 205
 
206 206
     ![figure5.png](images/figure5.png)
207 207
 
208
-    **Figure 5** - Interface for the `3 Sorts` function.
208
+    **Figure 5.** Interface for the `3 Sorts` function.
209 209
 
210 210
     ---
211 211
 
@@ -216,7 +216,7 @@ In this exercise you will be designing tests to validate various versions of the
216 216
 
217 217
     ![figure6.png](images/figure6.png)
218 218
 
219
-    **Figure 6** - Interface for the `Dice` function.
219
+    **Figure 6.** Interface for the `Dice` function.
220 220
 
221 221
     ---
222 222
 
@@ -227,13 +227,13 @@ In this exercise you will be designing tests to validate various versions of the
227 227
 
228 228
     ![figure7.jpg](images/figure7.jpg)
229 229
 
230
-    **Figure 7** - Ways to win in "Rock, paper, scissors".
230
+    **Figure 7.** Ways to win in the "Rock, paper, scissors" game.
231 231
 
232 232
     ---
233 233
 
234 234
     ![figure8.png](images/figure8.png)
235 235
 
236
-    **Figure 8** - Interface for the `Rock, Paper, Scissors` function.
236
+    **Figure 8.** Interface for the `Rock, Paper, Scissors` function.
237 237
 
238 238
     ---
239 239
 
@@ -248,7 +248,7 @@ In this exercise you will be designing tests to validate various versions of the
248 248
 
249 249
     ![figure9.png](images/figure9.png)
250 250
 
251
-    **Figure 9** - Interface for the `Zulu time` function.
251
+    **Figure 9.** Interface for the `Zulu time` function.
252 252
 
253 253
     ---
254 254
 
@@ -269,14 +269,14 @@ In this exercise you will be designing tests to validate various versions of the
269 269
   | 2       | "deer", "fox", "coyote" | "fox", "deer", "coyote" | ....      | ....       |            |
270 270
   | ....    | ....                      | ....                      | ....      | ....       | ....       |
271 271
   
272
-  **Figure 10** - Table to organize the test results.
272
+  **Figure 10.** Table to organize the test results.
273 273
 
274 274
   ---
275 275
 
276 276
 You can see examples of how to organize your results [here](images/example01.png) and [here](images/example02.png).
277 277
 
278 278
 
279
-### Exercise 2: Doing tests “by hand”
279
+### Exercise 2 - Doing Tests “by Hand”
280 280
 
281 281
 The `testing` project implements several versions of each of the four functions that were described in Exercise 1. Some or all of the implementations could be incorrect. Your task is, using the tests you designed in Exercise 1, to test the versions for each function to determine which of them, if any, are implemented correctly.
282 282
 
@@ -296,7 +296,7 @@ This exercise **DOES NOT require programming**, you should make the tests **with
296 296
 
297 297
     ![figure11.png](images/figure11.png)
298 298
 
299
-    **Figure 11** - Window to select the function that will be tested.
299
+    **Figure 11.** Window to select the function that will be tested.
300 300
 
301 301
     ---
302 302
 
@@ -306,13 +306,13 @@ This exercise **DOES NOT require programming**, you should make the tests **with
306 306
 
307 307
 
308 308
 
309
-### Exercise 3: Using `assert` to make unit tests
309
+### Exercise 3 - Using `assert` to Make Unit Tests
310 310
 
311 311
 Doing tests by hand each time you run a program is a tiresome task. In the previous exercises you did it for a few simple functions. Imagine doing the same for a complex program like a search engine or a word processor!
312 312
 
313 313
 *Unit tests* help programmers validate code and simplify the process of debugging while avoiding having to do these tests by hand in each execution.
314 314
 
315
-#### Instructions:
315
+#### Instructions
316 316
 
317 317
 1. In the `QtCreator` menu, go to `Build` and select `Clean Project "Testing"`. Then go to `File` and select `Close Project "Testing"`.
318 318
 
@@ -330,7 +330,7 @@ Doing tests by hand each time you run a program is a tiresome task. In the previ
330 330
 
331 331
      This is evidence enough to establish that the `fact` function is NOT correctly implemented.
332 332
 
333
-4. Notice that, by failing the previous test, the program did not continue its execution. To test the code you will write, comment the `test_fact()` call in `main`.
333
+4. Notice that, by failing the previous test, the program did not continue its execution. To test the code you will write, comment the `test_fact()` called in `main`.
334 334
 
335 335
 5. Write a unit test called `test_isALetter` for the `isALetter` function. Write various asserts in the unit test to try some data and its expected values (use the `test_fact` function for inspiration). Invoke `test_isALetter` from `main` and execute your program. If the `isALetter` function passes the test you wrote, continue writing asserts and executing the program until one of them fails.
336 336
 
@@ -346,7 +346,7 @@ Doing tests by hand each time you run a program is a tiresome task. In the previ
346 346
 
347 347
 1. Use "Deliverable 1" in Moodle to turn in the table with the tests you designed in Exercise 1 and that you completed in Exercise 2, with the results from the function tests.
348 348
 
349
-2. Use "Deliverable 2" in Moodle to turn in the `main.cpp` file that contains the `test_isALetter`, `test_isValidTime`, `test_gcd` functions and their calls. Remember to use good programming techniques by including the name of the programmers involved and documenting your program.
349
+2. Use "Deliverable 2" in Moodle to turn in the `main.cpp` file that contains the `test_isALetter`, `test_isValidTime`, `test_gcd` functions and their calls. Remember to use good programming techniques, include the name of the programmers involved, and document your program.
350 350
 
351 351
 ---
352 352