The document discusses different types of software tests, including unit tests, functional tests, load tests, soak tests, end-to-end tests, integration tests, and exploratory tests. It also covers how developers, QA teams, and customers are involved in testing as part of the development process. The document uses an example of implementing a feature to allow commenting on tasks to illustrate how to develop a test plan and consider the tradeoffs between testing different quality attributes. It emphasizes that testing should be integrated into the development process and that QA teams are part of the overall development team.
11. Types of tests
• Unit
• Functional
• Load
• Soak
25/10/12 www.agiletour.com
12. Unit tests
• They test units of code in isolation
• Interaction between components
• Describe the behaviour
• Drive the design
• Fast execution
25/10/12 www.agiletour.com
13. Be careful
• Test just public interfaces
• Do not abuse of mocking
25/10/12 www.agiletour.com
14. Adding a new class is not the trigger for a new test.
The trigger is the implementation of a new requirement.
25/10/12 www.agiletour.com
15. Functional tests
• They test the interaction with components
outside the context of our application
• They assure integration
• They might be slow
25/10/12 www.agiletour.com
16. public class When_getting_an_object_from_the_db
{
static int _objectId;
static DbWrapper _sut;
static object _object;
Establish that_there_is_an_object = ()=>
{
_objectId = 100;
ManuallyAddAnObjectInTheDb(_objectId);
}
Because we_get_the_object = ()=> _object = _sut.Get(_objectId);
It should_get_the_object = ()=> _object.ShouldNotBeNull();
}
25/10/12 www.agiletour.com
17. public class When_storing_an_object_in_the_db
{
static int _objectId;
static DbWrapper _sut;
static object _object;
Establish we_have_an_object_to_save = ()=>
{
_objectId = 100;
}
Because we_save_the_object = ()=> _object = _sut.Save(_objectId);
It should_store_the_object = ()=> _sut.Get(_objectId).ShouldNotBeNull();
}
25/10/12 www.agiletour.com
18. Be careful
• Do not mix tests
• Use context builders for data fixture
25/10/12 www.agiletour.com
19. Load tests
• Feedback on performance
• Feedback on volume limit
• Complicated to write
• Slow execution
25/10/12 www.agiletour.com
22. Types of tests
• End to end
• Integration
• Exploratory
25/10/12 www.agiletour.com
23. End to end tests
• They test the whole scope of a feature
• They are acceptance tests
• Understandable from non-techincal persons
• Slow execution
25/10/12 www.agiletour.com
24. They are not (only) interface tests.
25/10/12 www.agiletour.com
25. Integration tests
when the end to end aren't brave enough
• They test pieces of the application
• They test the integration
• Slow execution
25/10/12 www.agiletour.com