0% found this document useful (0 votes)
40 views24 pages

Testing: Steve Loughran HP Laboratories Thursday November 6th, 2006

The document discusses test-driven development and software testing. It covers topics like unit testing frameworks like JUnit, continuous integration, system testing, and challenges of testing distributed systems. It also addresses limitations of testing like tests being hard to write and maintain, as well as political and management resistance to adopting testing practices.

Uploaded by

jaspreetp
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views24 pages

Testing: Steve Loughran HP Laboratories Thursday November 6th, 2006

The document discusses test-driven development and software testing. It covers topics like unit testing frameworks like JUnit, continuous integration, system testing, and challenges of testing distributed systems. It also addresses limitations of testing like tests being hard to write and maintain, as well as political and management resistance to adopting testing practices.

Uploaded by

jaspreetp
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Testing

Steve Loughran
HP Laboratories
Thursday November 6th, 2006
your code doesn't work
i know this because...
my code doesn't work
it's OK to write code
that doesn’t work
just don’t ship it
especially if it matters
how do you get from
"broken" to "shipping"?
test it!
ship and see

prove it works

∃x:
(∀y∈[1..x]:
f(y)>0)

Device Drivers Formal Methods Test-Driven


proofs of correctness

+ shows an algorithm really works


+ good for concurrency
+ and distributed things

- makes assumptions about system


- needs lots of maths/CS skills
(Pi-Calculus, The HOL System)
- regression proofs?
Test Driven Development

any feature without a test


doesn’t exist
JUnit

* unit test framework in Java


-versions for C++, Python, Ruby...
* simple to learn
* good tool support
* somewhat low-level
* extensions for system testing
public class LessSimpleTest extends TestCase {

public LessSimpleTest(String s) {
super(s);
}

public void testAssignment() {


final Date date = new Date();
Event event = new Event(UUID.randomUUID(),
date, "now", "Text");
assertEquals("self equality failed",
event, event);
assertEquals(date, event.getDate());
assertNotNull(date.getID());
}
}
swing GUI
TestRunner
Ant-generated report

scales better; reports published


Continuous Integration
System Testing

* deploy, then:
HttpUnit, XmlUnit, Cactus
* needs automated deployment, database
setup, teardown
* performance testing by comparing
timings w.r.t. old runs
* Simulate entire behaviour of the client
user/application
Distributed System Testing

* Still a research topic

* Set up complex configurations


* Run tests on remote machines
* collect results and log data
* Post-mortem analysis
* Virtualization can help

see http://tinyurl.com/y99tez
limitations of testing

- good tests are hard to write


- distributed tests very hard
- different system configurations are
still a problem
- status of "tester" below "coder"

A good test breaks the application


-–-––––-–--–-----------------------------------------
politics:
resistance to change
developers: ignorance, fear

E.E.E. Educate, Evangelise, Encourage

* gently show benefits


* use testing to track down a bug
* retain test for regression testing
* add tests for new code and old
problems, not existing codebase
* adopt cruise control, reporting
management: ignorance

"too much time spent on testing"

* out of date with modern processes


* belief that testing slows the schedule
(only if you follow the ship-and-see
process)

E.E.E., then D.D.D:


Distract, Dissemble, Defeat
Test Driven Standards?

any standard without a test


doesn’t exist

You might also like