Changes for page Testing
Last modified by Pascal Robert on 2012/01/03 10:53
From version 32.1
edited by Ray Kiddy
on 2009/07/29 15:59
on 2009/07/29 15:59
Change comment:
There is no comment for this version
To version 33.1
edited by Greg.Brown
on 2009/09/26 11:59
on 2009/09/26 11:59
Change comment:
move links for junit documents, differentiating between user and fwk testing
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. kiddyr1 +XWiki.gbrown - Content
-
... ... @@ -1,29 +1,32 @@ 1 -I have checked in changes to the ant build files. The result of these is: 1 +* [[||anchor="Approaches to Testing"]] 2 +* [[||anchor="Tools"]] 3 +* [[||anchor="Document Review"]] 2 2 3 - 1)If you doabuild asyou usedtodo a build, thereshould beno change.5 +== Approaches to Testing == 4 4 5 - 2)There are two targetsat the top-level:7 +There are different kinds of tests and different approaches to testing. No one technology or approach will work for everyone. These are some of the relevant technologies and issues in testing WebObjects and WOnder applications and frameworks. 6 6 7 - test-all-doesaclean andthen build of frameworks,applications,and examples withDinclude.tests=true.9 +"Framework testing" is testing that is oriented to testing the WebObjects frameworks or the WOnder frameworks themselves. "Application testing" is testing of an application or applications that are built using WebObjects or WOnder frameworks. There is obviously some overlap here. If one has an application, but with Wonder, one is obviously using and therefore implicitly testing both the WebObjects and WOnder frameworks. "Framework testing" is explicitly testing just the framework functionality in as general a way as possible. There are tests which seem to straddle these two. But one can look at the intent. For example, two of the applications in Project WOnder are the "AjaxExample" and "BugTracker." The AjaxExample application is just a list of pages showing things that can be done. Nobody would construct an app like this for real work. On the other hand, the BugTracker app was created to be used by real people for tracking real bugs. It also demonstrates and provides a test for advanced features in WebObjects and WOnder. An application like AjaxExample can be easily changed so that it is easy to test. BugTracker cannot be so easily changed. On the other hand, BugTracker is more like a real-world application and so we care about it a bit more than a demonstration project. It may end up being less convenient to test BugTracker, but it may be more important to test it. 8 8 9 - test-run-calls a junit test on selected projects11 +There may also be a distinction between API tests, functional tests and perforance tests. In functional testing, one looks at some interface to an application and tests it to see if it does what it does. For example, if one launches the BugTracker app and clicks things and checks what they do, that is functional testing. If one looks at the API of a class, such as the er.extensions.foundation.ERXThreadStorage class, and determines what methods can be called on it and calls them, that is API testing. One can usually do API testing from a command-line interface and junit is probably the tool of choice for this. Functional testing is not so simple. One can manually exercise an app, which may be called the "clicks and eyeballs" approach. This works well, but does not scale. It becomes dull, people miss things, and we do not have robots to do it for us. One can use a test runner to interact with a running WebObjects/WOnder application. Performance testing often looks like functional testing, but the focus is different. It is not on seeing if things work, but how fast they work. In performance testing, one may have to use measurement tools which are not resistant to errors. In other words, performance testing may only work when everything else has been tested. One can do performance and functional testing at the same time, but perhaps one should not. 10 10 11 - 3)If the "test-all" target is invoked, then, in addition to any test sources being built in the other projects,the Wonder/Tests/ERXTest project is built. Is anyone involved in that project? If not, no harm, no foul.13 +== Tools == 12 12 13 - 4)IaddedalittlestubofatesttoERExtensions.Itdoes nothingright now.15 +Here are some relevant tools. It may be useful to search for their names in this wiki. 14 14 15 -5) I added a top-level target for "build" in Wonder/build.xml, just because it should be there. 17 +* Junit - for testing of [[user applications>>WO:Testing-JUnit and TestNG]] and for [[WOnder framework testing>>Project WOnder Frameworks JUnit Testing]] 18 +* [[Selenium]] for both user and WOnder framework testing 19 +* [[WOUnitTest]] for functional testing (Is WOUnitTest current and being maintained? rrk) 20 +* [[JMeter]] for performance testing 16 16 17 - Variousthings are needed to enable testing in a project:22 +Questions still to be answered include the different approaches one must take to different kinds of applications. For example, testing a "regular" WOnder app may be different than testing a "DirectToWeb" app, which is also different than testing a Java Client or a "Web Services" application. Different application types make some things easier and some things harder. One may need different approaches or different tools. Also, one may be deploying an app as a regular java application, or as a servlet in a J2EE container (e.g. Tomcat) or the application may be managed in some other way. How an application is deployed may change how it needs to be tested. 18 18 19 - 1)There must be a "Tests" directory in the top level of the project. So chill has spoken and thus it shall bedone. Putjunit test java sourcesunder that.24 +== Document Review == 20 20 21 - 2)Theremust beaparameterwhichdefinesthemainestclass. This couldbea TestSuite,whichwouldtheninvokelthetests in the project. For example, the "ERChronic.all" targetintheBuild/build/build.xml file now includestheine:26 +There are many documents relevant to testing that should be evaluated for veracity, usefulness and relevance: 22 22 23 - <param name="test.className" value="er.chronic.ChronicTestSuite" /> 24 - 25 -If there is no Tests directory in a project or if there are no sources in the Tests directory, then a build for testing does nothing more than a normal build. 26 - 27 -If there is no test.className property set in a project's target, then a build for testing does nothing more than a normal build. 28 - 29 -If there is no test.className property or there are no test classes in the jar files in the build root, then no tests from that project will be run. An example of a "test-run" appears below. 28 +* [[Web Services-Testing Services with Terminal>>WO:Web Services-Testing Services with Terminal]] 29 +* [[Web Applications-Development-Testing and JUnit>>WO:Web Applications-Development-Testing and JUnit]] 30 +* [[Testing-Load Testing WO Apps with JMeter>>WO:Testing-Load Testing WO Apps with JMeter]] 31 +* [[Testing-WOUnitTest>>WO:Testing-WOUnitTest]] 32 +* [[Web Applications-Development-Testing and JUnit>>WO:Web Applications-Development-Testing and JUnit]]