View Presentation

  • View
    5

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Text of View Presentation

  • 1. Testing Testing Testing
    • Joakim Bjrklund
  • Director of IT Services Division
  • Linkpings universitet
  • Sweden

2. Testing testing testing

  • You all know the need for testing, but how do you actually find time to do it? This presentation gives an outline on some of the tools you can use to perform testing of your Java application and save time while weeding out the bugs. The tools discussed include HttpUnit and Canoo.
  • An odyssey of open source tools for testing.

3. Testing testing testing

  • Before we get started:
  • Get a good software testing book!
  • Go a course on testing at the Computer Science department!
  • Follow a software production model
  • Automate all testing!
  • Daily builds! (With testing and test reports)
  • Documentation (JavaDocs and Wiki)

4. Testing testing testing

  • Design patterns
  • Refactoring
  • Reusability
  • Dont gold plate the code!
  • Spend a moment or two on system architecture

5. Testing Testing Testing

  • You all know the need for testing? Or do you?
  • When are you supposed to take the cost for testing? - During developmentor during system maintance?
  • Automated testing take the time to save time!
  • When are your application done?!?

6. Testing Testing Testing

  • Testing is a bit more than:
  • System.out.println(This works!);
  • Debugger expressions
  • Small test scripts

7. Testing theory

  • Testing can be done on several layers of the product being developed.
  • Unit testing domain/application logic
  • Integration testing APIs
  • Functional testing acceptance, top-level
  • Performance testing the need for speed
  • "Regression testing" is the concept of testing that asserts that everything that worked yesterday still works today

8. Automatic Testing

  • In order to decrease the cost, time and hassle during the testing phase, the first thing to consider is automatic testing.
  • If a program feature lacks an automated test, we assume it doesnt work. This seems much safer than the prevailing assumption, that if a developer assures us a program feature works, then it works now and forever.
  • Helps regression testing (or is a prerequisite)

9. Tools - mentioned

  • Testing tools
  • JUnit unit testing
  • Cactus unit/integration
  • Canoo functional testing
  • HTTPunit functional testing
  • JMeter performance testing
  • Other useful tools
  • Ant build tool
  • Bugzilla bug tracking tool

10. Open Source vs Commercial

  • As you noticed all tools in this presentation is Open Source. One of the reasons for this is that the cost for the testing tool should not be an obstacle for the testing process itself.
  • Access to the source code

11. Ant

  • Ant is a build tool that enables you to automate the build process.
  • Ant in java for java
  • Build files in XML i.e. build.xml
  • Every build file contains one project element. A project element contains target elements. Each target consists of a set of task elements.
  • Many of the tools described in this presentation utilize Ant

12. Ant

  • Example of targets:
  • Test run the tests
  • Clean Clean out the output directories
  • Deploy Compile the JARs, WARs etc to a exec system
  • Publish Output the source and binaries to any distribution site
  • All Perform clean, fetch, build, test, docs and deploy

13. JUnit

  • JUnit is a framework for writing unit tests.
  • Test case = a related set of tests, typically every class should have a test case.
  • Test fixture the resources needed to run the test
  • Test suite a collection of related test cases.

14. JUnit

  • Subclass junit.framework.TestCase
  • If you need fixture objects, override the setUp() method.
  • Define a number of tests that return void and whose method name begin with test (testAdd(), testPut() etc)
  • If you need to release resources that where part of the fixture, override the tearDown() method
  • If needed define a suite of tests

15. JUnit 16. JUnit

  • To get xml-output from the test:
  • JUnitreport to generate WebPages of the result

17. Cactus

  • A tool for tests on servlets and other J2EE components.
  • Cactus provides redirectors, which serve as points of entry to the container.
  • The redirectors execute test cases written for Cactus in the container and provide access to container objects (HttpServletRequest, PageContext etc)
  • Cactus integrates with JUnit

18. Example servlet Public class LiUServlet extends javax.servlet.http.HttpServlet { Public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { Response.setContentType(text/html); PrintWriter writer=response.getWriter(); Writer.println(); Writer.println(Linkpings universitet); }} 19. Cactus Private LiUServlet servlet; Public void setUp() throws Exception { servlet = new LiUServlet(); servlet.init(config); } /** Test of doGet method **/ public void testDoGet() throws Exception { servlet.doGet(request, response); } 20. Cactus Public void endDoGet(com.meterware.httpunit.WebResponse response) throws Exception { WebLink link = response.getLinkWith( Linkpings universitet); assertNotNull(link); System.out.println(response.getText()); org.w3c.dom.Node = response.getDOM(); } 21. Canoo

  • Canoo is a web application testing suite.
  • Canoo is not restricted to only testing Java applications
  • Uses other Open Source packages (JUnit, JTidy)
  • Fairly easy to use, can the customer write tests?

22. Canoo

  • As usual a project tag
  • Properties, esp canoo.dir

23. Canoo

  • The following target is needed to call canoo:

24. Canoo

  • Lastly the target for the testing itself
  • Detta target ska innehlla tasken testSpec (med ett eventuellt name):
  • In testSpec you need some config parameters:

25. Canoo

  • A suitable sequence of test steps

26. Canoo

  • Closing tags:

27. HttpUnit

  • HttpUnit provides a Java framework for functional testing.
  • HttpUnit is a solid ground to build your tests on.
  • But it might comes with the price of duplication.

28. HttpUnit

  • WebResponse response = converstion.getResponse( http://codex.liu.se );
  • WebLink link = response.getLinkWith( Linkpings universitet);
  • WebRequest request = link.getRequest();
  • response = conversion.getResponse(request);

29. Performance

  • Performance: Number of simultaneous users, size of web pages returned...
  • the user experience It is the end users experience that are key to the application performance.
  • Locate the bottlenecks as early as possible refactor and re-architect

30. JMeter

  • JMeter a 100% pure java desktop application.
  • Test: HTTP, FTP, RDBMS
  • Extensible write your own test
  • Simulate heavy load (application, server and network)
  • Gives instant visual feedback

31. JMeter

  • You must have a TestPlan
  • A TestPlan consists of one to many ThreadGroups.
  • A thread can be seen as a simulated user
  • A timer is added to a ThreadGroup (Constant, gaussian random, uniform random)
  • Controller
  • Listener

32. Bugzilla

  • http://www.bugzilla.org/
  • A bug-tracking tool, since naturally there will be bugs and there is an actual need to follow progress of the software.
  • Consider adding bugs automatically

33. Bugzilla 34. Links

  • JUnit http:// junit .org
  • Canoo http:// webtest . canoo .com
  • HttpUnit -http:// httpunit . sourceforge .net
  • Bugzilla http://www. bugzilla .org
  • Ant, Cactus, JMeter -http:// jakarta .apache.org

35. Summary

  • Automate the testing!
  • Testing is not rocket science
  • Include testing from the beginning
  • Use the web

36. Testing Testing Testing

  • Q & A
  • Joakim Bjrklund
  • [email_address]