17. Micro (unit) test
Story test
Exploratory test
End-to-end test
Smoke test
Performance test
Security test
Regression test
18. Tests beyond TDD
• What tests does your team perform?
• Are they automated?
• Who writes, runs, maintains them?
• When are they written, run, maintained?
• What are your good and bad experiences?
19. One Approach
• Micro tests + exploratory tests
• Add regression tests as required
• All automation in one framework
22. to reliably test manage a system, we
must be able to…
• determine what the system is doing.
• detect when it has stopped doing it.
• detect when the system has failed.
• explain why has it failed.
• restore to a known good state.
http://www.natpryce.com/articles/000780.html
25. Caveat: User story ≠ story test
• may change existing story tests
• may not be automated
• don’t force-fit into story test language
26. No single work group at any work step
should remove user stories to a
medium that, while more expedient to
their work, causes user stories to
become less accessible by others with
different skills and responsibilities.
http://blog.scottbellware.com/2010/10/user-stories-belong-to-everyone.html
35. Scenario: User creates some sites and circuits, check connected sites list
Given a "site" exists with {"name"=>"Somewhere1", "identifier" => "TER1", "provider"=>"TER1 Provider"}
And a "site" exists with {"name"=>"Somewhere2", "identifier" => "TER2", "provider"=>"Some Provider"}
And a "site" exists with {"name"=>"Somewhere3", "identifier" => "TER3", "provider"=>"TER3 Provider"}
And a "circuit" exists with {"provider_name"=>"Another provider", "redacted_circuit_id"=>"ABC1",
"provider_circuit_id"=>"C1", "circuit_type"=>CircuitType.find_by_name("Peering"),
"service_type"=>CircuitServiceType.find_by_name("Dark Fiber"),
:capacity => CircuitCapacity.find_by_name("1 Gbps"),
"physical_wire_type"=>PhysicalWireType.find_by_name("Multi Mode Fiber"),
"status"=> CircuitStatus.find_by_name("Cancelled"), "a_end"=>Site.find_by_identifier("TER1"),
"b_end"=>Site.find_by_identifier("TER2")}
And a "circuit" exists with {"provider_name"=>"Switch and Data",
"redacted_circuit_id"=>"ABC2", "provider_circuit_id"=>"C2",
"circuit_type"=>CircuitType.find_by_name("Backbone"),
"service_type"=>CircuitServiceType.find_by_name("Dark Fiber"),
:capacity => CircuitCapacity.find_by_name("1 Gbps"),
"physical_wire_type"=>PhysicalWireType.find_by_name("Multi Mode Fiber"),
"status"=> CircuitStatus.find_by_name("Cancelled"),
"a_end"=>Site.find_by_identifier("TER1"), "b_end"=>Site.find_by_identifier("TER3")}
When I am on the "connected_sites" page for site "TER1"
Then the "connected-sites-list" should look like
| Site ID | Site Name | Site Provider | Provider Circuit ID | Provider Name | Circuit Status |
| TER2 | Somewhere2 | Some Provider | C1 | Another provider | Cancelled |
| TER3 | Somewhere3 | TER3 Provider | C2 | Switch and Data | Cancelled |
When I am on the "connected_sites" page for site "TER2" Then the "connected-sites-list" should look like
| Site ID | Site Name | Site Provider | Provider Circuit ID | Provider Name | Circuit Status |
| TER1 | Somewhere1 | TER1 Provider | C1 | Another provider | Cancelled |
When I am on the "connected_sites" page for site "TER3"
Then the "connected-sites-list" should look like
| Site ID | Site Name | Site Provider | Provider Circuit ID | Provider Name | Circuit Status |
| TER1 | Somewhere1 | TER1 Provider | C2 | Switch and Data | Cancelled |
36. Enabling fixture-free tests
• create object
• execute method
• check result
• system under test
• save and load objects
• encapsulation, reuse
37. Demo
• State test
• Function test
• Integration test
• Other features
• Domain adapter
• Parse methods
• Factories