systematic testing murray crease scott logic · systematic testing murray crease scott logic...
TRANSCRIPT
![Page 1: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/1.jpg)
Systematic Testing
Murray CreaseScott Logic
![Page 2: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/2.jpg)
>About Scott Logic
>What is Testing?
>Unit Testing
>Integration Testing
>System Testing
>User Acceptance Testing
>Performance Testing
>Usability Testing
Introduction
![Page 3: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/3.jpg)
Scott Logic
>Bespoke Software Development• Clients across the world
• Work primarily out of Scott Logic offices
>Range of Services• Development
• UX
• Project Management
• Testing
>All about the technology• A software house not an IT department
• Smart people, varied technologies
![Page 4: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/4.jpg)
Scott Logic in Edinburgh
>Central location• Castle view (ish)!
>38 staff• 31 Developers
• 4 UX
• 3 Management & Admin
>Range of Technologies• Java, C# .NET, JavaScript/HTML5
>Range of Social Activities• Squash, Badminton, Running
• Xbox, board games, pub quiz
• Karting, Go Ape, white water rafting.
![Page 5: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/5.jpg)
What Is Testing?
>It involves the execution of a software component or system to evaluate one or more properties of interest. In general, these properties indicate the extent to which the component or system under test:
• meets the requirements that guided its design and development,
• responds correctly to all kinds of inputs,
• performs its functions within an acceptable time,
• is sufficiently usable,
• can be installed and run in its intended environments, and
• achieves the general result its stakeholders desire.
http://en.wikipedia.org/wiki/Software_testing
![Page 6: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/6.jpg)
Meets Requirements
>Users / Business Owners know what they want and can enumerate
>Testers check software meets these requirements
>List of requirements -> list of tests -> list of passed/failed
>Users rarely know what they want• And even more rarely are able to enumerate
![Page 7: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/7.jpg)
Can Be Installed and Run
>Makes sense … need to build it first
![Page 8: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/8.jpg)
Responds Correctly To Inputs
>Know what the possible inputs are• Test them all
>Could be a large number of inputs
>In arbitrary combinations
>Almost an infinite set
![Page 9: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/9.jpg)
Runs in An Acceptable Time
>Where acceptable = ???
>For what inputs?
>Scalability
![Page 10: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/10.jpg)
Sufficiently Usable & Desired Functionality
>Hmmmm??
![Page 11: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/11.jpg)
Why is Testing Actually Good?
>Money• Software bugs cost global economy $312 Billion annually (CU)
> ~10% UK GDP
>Functionality• Software needs to perform
>Reputation• Buggy software impacts reputation
![Page 12: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/12.jpg)
When Should Software Be Tested?
>Earlier is better• Avoid building on top of bugs
>Earlier Detection is Cheaper (Boehm)• Resolving bug after delivery 100x more expensive than before
> 5x for simple systems
> Good design mitigates this cost
>Cost of correcting bugs during coding is (Type Mock)• 10% the cost of correcting bugs during QA which is
• 50% the cost of correcting bugs after release
![Page 13: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/13.jpg)
Aside – Agile not Waterfall
>Waterfall• Build system then test it
• Whole system could be built on false premise
• Users no visibility until completion
>Agile• Testing built in from start
• Short iterations of coding AND testing
• Users have early & frequent visibility of solution
![Page 14: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/14.jpg)
Creating ‘Test’ Environments
>Typical enterprise setup has three different environments:• Development
• Beta/Stage/UAT
• Production
>All environments should be the same• Resources/Dependencies
• Only differences in configuration (e.g. DB connection strings)
• Promotions should be reproducable
>All changes progress through environments in order• Dev -> Beta -> Production
>Data can be copied in reverse direction• Typically Production -> Beta
![Page 15: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/15.jpg)
Development Environment
>Volatile• Developers continuously changing
• Can be updated automatically via build server
>Latest changes• Partial functionality
• Shouldn’t be (but maybe) broken
>This is different from the developer machines• A 4th, personal environment
![Page 16: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/16.jpg)
Beta Environment
>Typically has release candidates• System Testing
>Managed promotions• Usually by developers
• Dry run of production release
>Occasionally a separate environment for User Testing
>Code / DB changes promoted from Dev
>Data can be copied from Production• Issues around changes in DB promoted from Dev
![Page 17: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/17.jpg)
Production Environment
>The live system
>Managed releases• Little/no developer involvement
• Rollback
• Typically outside working hours
![Page 18: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/18.jpg)
Levels of Testing
>Unit Testing
>Integration Testing
>System Testing
>Acceptance Testing
![Page 19: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/19.jpg)
Unit Testing
>Written by developers on units of code• Considers correctness only of isolated code
>Drives design of code• Decoupling
• Modularity
>Automated
>Tools & Frameworks
![Page 20: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/20.jpg)
Unit Testing – Code Design
public List<Person> getPeople(String surnamePrefix)
{
Connection connection = new DatabaseConnection("MyDatabase");
connection.execute("select * from People where surname.Like('%' + surnamePrefix);
List<Person> people = new ArrayList<Person>();
for(String[] components : connection.GetResults())
{
Person person = new Person();
person.firstName = components[0];
...
people.Add(person);
}
return people;
}
![Page 21: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/21.jpg)
Unit Testing – Code Design
public List<Person> getPeople(String surnamePrefix)
{
Connection connection = new DatabaseConnection("MyDatabase");
connection.execute("select * from People where surname.Like('%' + surnamePrefix);
List<Person> people = new ArrayList<Person>();
for(String[] components : connection.GetResults())
{
Person person = new Person();
person.firstName = components[0];
...
people.Add(person);
}
return people;
}
![Page 22: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/22.jpg)
Unit Testing – Code Design
public List<Person> getPeople(String surnamePrefix)
{
DatabaseWrapper db = GetDatabaseWrapper();
PersonFactory factory = GetPersonFactory();
List<Person> people = new ArrayList<Person>();
for(String[] components : db.getPeople(surnamePrefix))
{
people.Add(factory.CreatePerson(components);
}
return people;
}
![Page 23: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/23.jpg)
Unit Testing – Code Design
public List<Person> getPeople(String surnamePrefix)
{
DatabaseWrapper db = GetDatabaseWrapper();
PersonFactory factory = GetPersonFactory();
List<Person> people = new ArrayList<Person>();
for(String[] components : db.getPeople(surnamePrefix))
{
people.Add(factory.CreatePerson(components);
}
return people;
}
Tightly coupled
![Page 24: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/24.jpg)
Unit Testing – Isolating Code
To Test Method A => i * j * k tests
Method A
i Paths
Method B
j Paths
Method C
k Paths
Relies on
![Page 25: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/25.jpg)
Unit Testing – Code Design
public List<Person> getPeople(String surnamePrefix, DatabaseWrapper db,
PersonFactory factory)
{
List<Person> people = new ArrayList<Person>();
for(String[] components : db.getPeople(surnamePrefix))
{
people.Add(factory.CreatePerson(components);
}
return people;
}
Interfaces
![Page 26: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/26.jpg)
Unit Testing – Isolating Code
To Test Method A => i + j + k tests
Method A
i Paths
Method B
j Paths
Method C
k Paths
Uses
![Page 27: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/27.jpg)
Unit Testing – Code Design
private DatabaseWrapper db
private PersonFactory factory
public List<Person> getPeople(String surnamePrefix)
{
List<Person> people = new ArrayList<Person>();
for(String[] components : db.getPeople(surnamePrefix))
{
people.Add(factory.CreatePerson(components);
}
return people;
}
Injected
![Page 28: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/28.jpg)
Dependency Injection
>Separates creation of dependencies from behaviour• Classes specify dependencies required
• Framework instantiates & injects services
>Classes have no knowledge of service implementation
>Services can be changed via configuration• Theoretically
>E.g. Spring in Java
![Page 29: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/29.jpg)
Unit Tests – Writing the Tests
>Arrange• Set up the context for the tests
>Act• Call the method being tested
>Assert• Check the result of the test
![Page 30: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/30.jpg)
Unit Tests - Arrange
>Instantiate class
>Set context• Inject dependencies
• State of test class
• Behaviour of dependencies
![Page 31: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/31.jpg)
Unit Testing - Mocking
>Behaviour of Dependencies• E.g. Database returns empty list
>Could create/populate DB table• Slow & complicated
>Mock object• Dummy object that implements interface
• Can specify behaviour
• Can verify interaction with mock
>E.g Mockito
![Page 32: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/32.jpg)
Unit Tests - Act
>Test context should be in place
>Call the method to be tested and capture response
![Page 33: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/33.jpg)
Unit Tests - Assert
>Check state of context after test matches expectations• Value returned by method being tested
• Class containing method being tested
• Dependencies interacted with (called / not called)
![Page 34: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/34.jpg)
Unit Testing – Writing The Tests
@Before
public void testSetup()
{
underTest = new PeopleManager();
db = mock(DatabaseWrapper.class);
factory = mock(PersonFactory.class);
}
@Test
public void testGetPeople_DatabaseReturnsEmptyList_ReturnsEmptyList()
{
when(db.getPeople("Smith")).thenReturn(new ArrayList<Person>());
List<People> people = underTest.getPeople("Smith", db, factory);
verify(db, times(1)).getPeople("Smith");
verify(factory, never()).createPerson(Any);
assertThat(people.size(), 0);
}
![Page 35: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/35.jpg)
Unit Testing – Gotcha’s
>Code coverage trap
>No point – code always changing
>Unit tested – don’t need to run app
>Need to run tests• Run before checking in
• Run as part of build … broken tests break build
![Page 36: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/36.jpg)
Integration Testing
>Typically performed by developers• On local machine
• Good developers test their own code
>Test interaction between components in system• Or a subset of components
>Scale up from unit tests• Modules not units
• ‘Simulate’ dependencies
![Page 37: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/37.jpg)
Smoke Tests
>Check application runs in new environment• As fundamental as making sure it starts
• Check new features are present as expected
>Typically performed by test team• Run series of scripted tests to cover functionality
>Can be automated• Based on standard scripts
• Augmented as new functionality added
![Page 38: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/38.jpg)
System Testing
>Test a system from end to end• Expensive and time consuming (i * j * k * l * ….)
• Should be scripted (vs. requirements)
> i.e. reproducable
>Regression testing for specific changes
>Typically a specific test team• Specialised skills
![Page 39: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/39.jpg)
Interacting With Testers
>They are on your side• Hard to believe sometimes … but should be
>Get them on board with changes• Communicate how functionality works
• Highlight shortcomings / work-arounds
>Let them help• Don’t be defensive
• They will often (typically) no more about the system
![Page 40: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/40.jpg)
Interacting With Developers
>Don’t play the blame game• Build constructive relationships
>Provide details• “It’s broken” doesn’t help
>Listen to the Developers• They know how the system is built
![Page 41: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/41.jpg)
(User) Acceptance Testing
>System Test Complete• i.e. testers and developers happy
>Users test application• Should not be the first time seen functionality!
• Verify behaviour as expected
• Should be scripted
>Less likely to find bugs• Functionality issues
![Page 42: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/42.jpg)
Performance Testing
>Load testing/Stress Testing/Scalability Testing• How system performs under different loads
>Real-time testing• Ensure time constraints are met
![Page 43: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/43.jpg)
Usability Testing
>Test ease of use of application• Specialist expertise
• Many forms
> Ask people / timings / error tracking
>C.f. User Experience Design• Consider ease of use at start
>Accessibility Testing• E.g compliance with disability standards
![Page 44: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/44.jpg)
Testing as a Career
>Detail oriented, methodical
>Need to understand domain• Often better than developer!
A good developer tests their code
![Page 45: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/45.jpg)
Testing – Case Study
>Complex system• Many components
• Fixed API – messages stored as text
>Extreme Programming• Pair-programming, Test Driven Development
• Continuous Integration
>Continuous running of integration tests• Design enabled this
• Production release < 10 minutes
![Page 46: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/46.jpg)
Scott Logic
>We are looking for graduate applications
>Also looking for interns• Need to have completed penultimate year when doing internship
>Blogs• More on a range of technical subjects
http://www.scottlogic.com
![Page 47: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/47.jpg)
References
> Cambridge University -http://markets.financialcontent.com/stocks/news/read/23147130/Cambridge_University_Study_States_Software_Bugs_Cost_Economy_$312_Billion_Per_Year
> Boehm - http://www.cs.umd.edu/projects/SoftEng/ESEG/papers/82.78.pdf
> Type Mock - http://www.codeguru.com/blog/category/programming/the-cost-of-bugs.html
![Page 48: Systematic Testing Murray Crease Scott Logic · Systematic Testing Murray Crease Scott Logic >About Scott Logic >What is Testing? >Unit Testing >Integration Testing >System Testing](https://reader034.vdocuments.net/reader034/viewer/2022050604/5fabeaae049a5f13731fb4af/html5/thumbnails/48.jpg)