Tests/Activity/TurtleArt

From OLPC
< Tests
Revision as of 01:31, 17 March 2012 by Pancake Batter (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

This Turtle Art page is an amalgamation of test of the Turtle Art feature tests. Most of the tests date from 2009.

Turtle Art Tests

Test case: Short name::TurtleArt Activity
How to report results

Stream ,|x|Build stream::x}}
Category Test category::Activity Sub-category Test subcategory::TurtleArt
Component System component::Turtle Art
Feature System feature::http://wiki.laptop.org/go/Turtleart
Objective Test objective::basic functional testing
Tools Test tools::n/a
Setup Test setup::n/a
Procedure [[Test procedure::# Activity installs from download (if not part of default installation) from website or USB key
  1. Activity starts up
  2. You can re-name the activity
  3. User specific data can be created
    1. drag a print brick onto the field (under the numbers tab)
    2. drag a volume brick onto the field (under the sensors tab)
    3. attach the volume brick to the print brick
    4. click on the print brick
  4. You can force a save
  5. Activity closes properly from inside the activity
  6. You can resume the activity from the Journal
  7. You see the user specific data after resume
  8. You can close the activity from the Sugar frame]]
Expected Results
and Pass Criteria
[[Pass criteria::The first time you run Turtle Art, it takes about 30 seconds to load. You'll see a mostly blank screen after the initial flashing of the icon. Subsequently, the loading time is ~5 seconds (on an OLPC-XO-1 laptop).

When you click on the print brick as per the procedures above, you should see the mic light flash on (on an OLPC-XO-1 laptop) and the current volume displayed in the lower-left corner of the screen.]]

Comments More notes::
Release Stream Build Pass/Fail Trac Ticket(s) Comment(s) Date of Test
Software release::Candidate Build stream::8.2 Build number::763 PassFail::Pass ,|x| #x}} Comments::turtleart-26 Created::2009/01/04



Turtle Art Boolean Logic Tests 2

Test case: Short name::Boolean Logic 2
How to report results

Stream ,|x|Build stream::x}}
Category Test category::Activity Sub-category Test subcategory::TurtleArt
Component System component::TurtleArt
Feature System feature::http://wiki.laptop.org/go/Turtleart
Objective Test objective::Tests AND, OR and NOT blocks.
Tools Test tools::None
Setup [[Test setup::--
  1. Open the TurtleArt activity.
  2. Drag an 'if' block onto the field.
  3. Drag a spacer to the 'then' area of the 'if' block.
  4. Drag a 'forward' block to the bottom of the spacer.
  5. Drag a 'back' block into the 'else' area of the 'if' block.]]
Procedure [[Test procedure::Test Procedure (repeat for all test values below):

For a 'true' block, place an 'Equals' block on the field with the numbers '100' and '100'. For a 'false' block, place an 'Equals' block on the field with the numbers '100' and '1'.

  1. Place the first truth value on the field, into the criteria area of the 'IF' statement.
  2. Place the 'AND' or 'OR' block-under-test on the field attached to the right of the first truth value.
  3. If the 'NOT' operator is specified by the test, add this immediately into the right side of the logic operator block.
  4. Place the second truth value on the field, into the last block added.
  5. Run the sequence.
  6. The turtle should move either up or down. Make sure the direction of movement matches the expected direction.

Test Values:

#Left Truth ValueRight Truth ValueExpected Movement Direction
[AND]
1.FalseNOT Truedown
2.TrueFalsedown
3.FalseNOT falsedown
4.TrueTrueup
[OR]
5.FalseNOT Truedown
6.TrueFalseup
7.FalseNOT falseup
8.TrueTrueup
]]
Expected Results
and Pass Criteria
Pass criteria::The direction of movement by the turtle matches each direction specified in the test values table.
Comments [[More notes::Rationale:
  • Since these functions take two boolean inputs, it is feasable to test all possible combinations.
  • A pairwise approach is used to test the 'NOT' operator at the same time: All inputs to 'NOT' are tested while testing the outer logic operators without duplication.]]
Release Stream Build Pass/Fail Trac Ticket(s) Comment(s) Date of Test
Software release::8.2.0 (767) Build stream:: Build number::45 PassFail::Pass ,|x| #x}} Comments::All logic operators work as expected. Created::2009/03/29



Turtle Art Arithmetic Tests

Test case: Short name::Arithmetic
How to report results

Stream ,|x|Build stream::x}}
Category Test category::Activity Sub-category Test subcategory::TurtleArt
Component System component::TurtleArt
Feature System feature::http://wiki.laptop.org/go/Turtleart
Objective Test objective::Tests basic arithmetic operations
Tools Test tools::None
Setup [[Test setup::--
  1. Open the TurtleArt activity.
  2. Drag a 'forward' block onto the field and remove it's value by dragging it onto the toolbox.
  3. Connect another 'forward' block immediately below the first 'forward' block. Leave its value as 100.
  4. Connect a 'print' block immediately below the last 'forward' block.
  5. Place a 'ycor' value in the print block.]]
Procedure [[Test procedure::Test Procedure (repeat for all test values below):
  1. Click the 'clean' button at the top of the screen.
  2. Connect the math function under test to the input of the first 'forward' statement.
  3. Change the default values to the values specified by the test.
  4. Run the sequence.
  5. Make sure the value printed to the output matches the expected value.
  6. In all cases, the turtle must have moved upwards, be at the upmost position of the drawn line and facing upwards.

Test Values:

#Top ValueBottom ValueExpected Result
[Addition]
1.23.212.3135.5
2.-32.42.870.4
3.5.6-9.895.8
4.-07-291.0
5.0.03.5103.5
6.4.60.0104.6
7.0.00.0100.0
[Subtraction]
8.23.212.3 110.9
9.-32.42.8 64.8
10.5.6-9.8115.4
11.-07-295.0
12.0.03.596.5
13.4.60.0104.6
14.0.00.0100.0
[Multiplication]
15.2.22104.4
16.-2.4392.8
17.5-9.851.0
18.-07-2114.0
19.0.03.5100.0
20.-4.60.0100.0
21.0.00.0100.0
[Division]
22.2.22101.1
23.-2.4399.2
24.5-9.899.4
25.-07-2103.5
26.0.03.5100.0
27.-4.60.0Error message
28.0.00.0Error message
[Modulo Values]
29.188102.0
30.-2.43100.6
31.5-9.895.2
32.-07-299.0
33.0.03.5100.0
34.-4.60.0Error message
35.0.00.0Error message
[Square Root Values]
36.-1 Error message
37.0 100.0
38.1 101.0
39.4 102.0
40.7 102.6
]]
Expected Results
and Pass Criteria
Pass criteria::All outputs from the 'print' command match the expected values listed in the table.
Comments [[More notes::Assumptions:
  • All outputs are truncated to 1 decimal place.
  • Mathematically invalid operations should show a #syntaxerror
  • Arithmetic overflow is not likely to be a problem for the range of values required, hence is not tested.

Rationale

  • Moving the turtle and then checking its Y co-ordinate is used rather than directly checking the output from the math function is done because the print function itself seems to catch errors and write '0' regardless, whereas moving the turtle reveals these errors. Furthermore, moving the turtle again after the test indicates that the program is left in a working state.
  • Equivalence partitioning is used since the math functions take at most 2 inputs, and the number tests required to provide sufficient coverage is optimal.
  • Addition, Subtraction, Multiplication, Division & Modulo: Values are chosen from the partition class {Negative Real Number, 0.0, Positive Real Number}
  • Square Root: Values tested include {-1 (invalid), 0, 1, 4 (integer result), 7 (irrational result)}. These values were selected using Boundary Analysis.]]
Release Stream Build Pass/Fail Trac Ticket(s) Comment(s) Date of Test
Software release::8.2.0 (767) Build stream:: Build number::45 PassFail::Fail ,|x| #x}} [[Comments::Failures:
  • The test cases 27 and 28 (division by zero) silently returns zero as the result, however should raise a #syntaxerror to let the user know that this error has occurred.
  • The test case 31 (square root of -1) does not show a #syntaxerror. Further investigation found that this operation returns NaN, which causes the turtle to move forwards by NaN in this test setup. The result of this is that the turtle appears to jump to (0, 0) and won’t move again until the ‘clear’ instruction is executed.]]
Created::2009/03/29



Turtle Art Movement Tests

Test case: Short name::Movement
How to report results

Stream ,|x|Build stream::x}}
Category Test category::Activity Sub-category Test subcategory::TurtleArt
Component System component::TurtleArt
Feature System feature::http://wiki.laptop.org/go/Turtleart
Objective Test objective::Tests basic turtle movement
Tools Test tools::None
Setup Test setup::
Procedure [[Test procedure::[NOTE: Each block should be connected immediately below the previous block]
  1. Open the TurtleArt activity.
  2. Drag a 'seth' block onto the field, and set it to -90
  3. Drag a 'forward' block onto the field and set its value to 150.
  4. Drag a 'left' block onto the field and set its value to 270.
  5. Drag a 'back' block onto the field and set its value to 150.
  6. Drag a 'right' block onto the field and set its value to -270.
  7. Drag a 'back' block onto the field and set its value to -150.
  8. Drag a 'left' block onto the field and set its value to 630.
  9. Drag a 'forward' block onto the field and set its value to -150.
  10. Drag a 'right' block onto the field and set its value to 540.
  11. Drag a 'forward' block onto the field and set its value to 10 000 000 000.
  12. Drag a 'back' block onto the field and set its value to 10 000 000 000.
  13. Drag an 'arc' block onto the field and set 'angle' to -180 and 'radius' to 75.
  14. Run the sequence.]]
Expected Results
and Pass Criteria
[[Pass criteria::Confirm that the drawing surface:
  • Shows a perfect square with a semi-circle on top of it.
  • The turtle positioned at the top left corner of the square, facing the bottom of the display.]]
Comments [[More notes::Rationale:
  • The equivalence partitions for the 'forward' and 'back' blocks are {Negative Number, Positive Number, Large Positive Number}
  • The equivalence partitions for the 'left' and 'right' blocks are {Negative Number, Positive Number < 360, Positive Number > 360}
  • It is assumed that the blocks function independently, so a member from each partition is tried once against each block.
  • This test sequence itself follows a simple use case: the user wants to draw a box with a dome on top.]]
Release Stream Build Pass/Fail Trac Ticket(s) Comment(s) Date of Test
Software release::8.2.0 (767) Build stream:: Build number::45 PassFail::Fail ,|x| #x}} [[Comments::Failures
  • The semi-circle portion of the test drawing does not appear as expected.
  • The turtle itself is no longer visible after the test has run.

These results are traced to steps 11 and 12: when the turtle is moved off the screen by a large number and then instructed to come back by the same amount, it doesn't come back. Using the 'print' block to show the x or y co-ordinate will print the expected value and the turtle then returns to that position upon executing the print command. Also, clicking the 'clear' button immediately after running the test sequence does not recenter the turtle at (0, 0) however using the 'setyx' command works as expected.]]

Created::2009/03/29



Turtle Art Boolean Logic 1 Tests

Test case: Short name::Boolean Logic 1
How to report results

Stream ,|x|Build stream::x}}
Category Test category::Activity Sub-category Test subcategory::TurtleArt
Component System component::TurtleArt
Feature System feature::http://wiki.laptop.org/go/Turtleart
Objective Test objective::Tests 'Greater Than', 'Less Than' and 'Equals' functional blocks.
Tools Test tools::None
Setup [[Test setup::--
  1. Open the TurtleArt activity.
  2. Drag an 'if' block onto the field.
  3. Drag a spacer to the 'then' area of the 'if' block.
  4. Drag a 'forward' block to the bottom of the spacer.
  5. Drag a 'back' block into the 'else' area of the 'if' block.]]
Procedure [[Test procedure::Test Procedure (repeat for all test values below):
  1. Click the 'clean' button at the top of the screen.
  2. Drag the specified block-under-test into the 'if' block's condition area.
  3. Drag a 'number' field into the left position of block-under-test and set it to the value specified by the test (Left).
  4. Drag a 'number' field into the right position of block-under-test and set it to the value specified by the test (Right).
  5. Run the sequence.
  6. The turtle should move either up or down. Make sure the direction of movement matches the expected direction.

Test Values:

#LeftRight
[Equal]
1.-999-999
2.234234
3.00
[Left > Right]
4.-34-56
5.0-56
6.23-56
7.230
8.233
[Left < Right]
9.-78-34
10.-780
11.-7811
12.011
13.411
]]
Expected Results
and Pass Criteria
[[Pass criteria::--
Block'Equal' Partition'Left > Right' Partition'Left < Right' Partition
">" down up down
"<" down down up
"=" up down down
]]
Comments [[More notes::Rationale:
  • The inputs are chosen from the equivalence partition { Negative, Zero, Positive }
  • Input combinations were chosen to give a variety of outputs, for each partition. Boundary values are also tested.]]
Release Stream Build Pass/Fail Trac Ticket(s) Comment(s) Date of Test
Software release::8.2.0 (767) Build stream:: Build number::45 PassFail::Pass ,|x| #x}} Comments::All blocks exhibit the expected behavior Created::2009/03/29