Hi Scott, I think DSpace Functional Tests would definitely be of interest to the DSpace Community. At a quick glance, this seems like a good starting point for a Functional Testing framework -- though I'd like to get others opinions as well obviously. In my opinion, DSpace needs more automated testing (Unit Tests, Functional Tests, etc) in general.
Would you be willing to add an entry for this in Jira? That way we can have it as a reminder of the code, and get some more eyes on it? Alternatively (if TDL was willing), we could even start to move the code into the SVN Sandbox (or SVN Modules, if we could separate all/most of it into its own Maven module or set of modules.): http://scm.dspace.org/svn/repo/sandbox/ http://scm.dspace.org/svn/repo/modules/ Perhaps others could even help write some various functional tests for other interfaces (JSPUI, OAI-PMH) if we could get this code into an area where others could start to play with it. Thanks! It looks like very useful work so far -- just a matter of getting others eyes on it, and seeing if others can help build more functional tests. - Tim On 4/4/2010 3:21 PM, Scott Phillips wrote: > DSpace Functional Tests? > > The Texas Digital Library has been focusing on testability for our > projects. Since DSpace is related too or part of most of our projects > we’ve been looking for a way to increase DSpace’s testability. > Traditionally this would mean adding unit tests and integration tests. > However as DSpace currently stands is hard to break it up into > individual components that can be tested in isolation. You’ll quickly > find that writing tests for DSpace pull in the entire system, plus > databases, and a file system. To address this problem we’ve created a > simple framework for adding both integration tests and functional tests > which improve the reliability of our projects. I’m interested to see if > this is something the greater DSpace community would be interested in? > > The goals of our project were to create a mechanism where we could run > complete functional tests. Functional tests evaluate the entire system > as the end user would use it, so think of it as opening a web browser > and evaluating the output – but completely automated. They test > everything all together. Ideal it would be better to test each component > individual, but this is in practical for DSpace for two reasons 1) > DSpace is highly integrated and nearly impossible to separate from the > database and file systems, 2) Creating unit test for all of DSpace is > very time consuming it is simpler to write a few functional tests that > cover a wide set of features over the whole application. It gets you to > a point where you can reliably verify the software quicker. If you’re > working on unit tests for DSpace please do not let this stand in your way. > > The main concept is to script the install of a test DSpace, with a full > configuration and setup. Then we start DSpace in an embedded webserver > and then run through several scenarios just as a normal user would. This > tests the whole application, using a database, a file system, and a full > build. The ant script where you normally run “ant fresh_install” has a > new target “ant test”. You pass it a few parameters such as what > database to use. The script will then run through a fresh install of > DSpace into a local /test directory, setup some communities and > collections, and import some basic items. Then JUnit-based tests are run > against the embedded webserver using HtmlUnit to simplify verifying the > HTML output. > > Here is how to run it. After compiling using a “mvn package”, cd into > target/dspace-*-build.dir/ directory. Then run “ant test” you may need > to pass it some parameters as listed below. Each parameter has a default > so if you configure you’re database connections the same way then it can > be as simple as running “ant test” without any parameters. > > -Dtest.db.driver="org.postgresql.Driver" > -Dtest.db.url="jdbc:postgresql://localhost:5432/dspacetest" > -Dtest.db.username="dspacetest" > -Dtest.db.password="dspacetest" > -Dtest.dspace.dir=”./test/" > -Dtest.config=”./test/config/dspace.cfg" > > We’ve used this approach rather successfully for two of our DSpace-based > projects here at TDL: an ETD submission system called vireo, and a > learning object repository. These projects haven’t moved to 1.6 yet, but > I do have a patch available for DSpace 1.5.2. Most of the test cases > we’ve created so far are specific to the project we’re working on. > However the patch includes 4 manakin tests, which are really just an > example of how tests work within this framework. > > Download the patch: > http://scott.phillips.name/wp-content/uploads/2010/04/DSpace-1.5.2-FunctionalTest.patch.txt > > The question is, is this something that the DSpace community would like? > > Scott-- > > > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > > > > _______________________________________________ > Dspace-devel mailing list > Dspace-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/dspace-devel ------------------------------------------------------------------------------ Download Intel® Parallel Studio Eval Try the new software tools for yourself. Speed compiling, find bugs proactively, and fine-tune applications for parallel performance. See why Intel Parallel Studio got high marks during beta. http://p.sf.net/sfu/intel-sw-dev _______________________________________________ Dspace-devel mailing list Dspace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dspace-devel