Difference between revisions of "Software Testing"
Jump to navigation
Jump to search
(→Tools) |
(→Tools) |
||
Line 100: | Line 100: | ||
#* JBossWS/JBossIDE 2.0.0+ | #* JBossWS/JBossIDE 2.0.0+ | ||
# [http://www.pushtotest.com/ PushToTest TestMaker] is complete test automation platform that delivers unit testing, integration testing, functional testing, load testing, regression testing, and business service monitoring | # [http://www.pushtotest.com/ PushToTest TestMaker] is complete test automation platform that delivers unit testing, integration testing, functional testing, load testing, regression testing, and business service monitoring | ||
#* Application Testing – Avoid Downtime, Qualify Patches, Updates, Hardware Changes | |||
#* Integration Testing – Surface Performance Issues When Services Call Services | |||
#* Regression Testing – Surface Functionality Issues Before Customers Do | |||
#* Tool & Library Testing – Optimize Performance at the Object Level | |||
#* XML Optimization – Improve performance and scalability – AJAX, SOAP, REST | |||
#* Performance Testing – Better forecast CPU, Network, Memory needs to meet SLAs | |||
# [http://seleniumhq.org/ Selenium] - software testing framework for Web UI testing | # [http://seleniumhq.org/ Selenium] - software testing framework for Web UI testing | ||
Revision as of 12:01, 9 July 2010
Please Note: Work in Progress
This page will describe the testing approach for the services and solutions developed at the MPDL.
Module Tests[edit]
- Interface Tests should check all methods in the modules interface. [required]
- Class Name convention:
- src/test/java/<name_of_module_interface>InterfaceTest.java
- example: src/test/java/CitationStyleHandlerInterfaceTest.java
- The class should be explicitely declared in the module pom.xml
- ...
- <plugin>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <skip>false</skip>
- <includes>
- <include>**/CitationStyleHandlerInterfaceTest.java</include>
- <!-- possible other test classes -->
- <include>**/TestCitationStylesSubstantial.java</include>
- </includes>
- </configuration>
- </plugin>
- ...
- The existence of the required Interface test class can be checked later by parsing of pom.xml (e.g with command line utility)
- All other JUnit tests for a module should be presented in a separate test class. [optional]
Open Questions[edit]
- How to define scope of parameter values of tested interfaces ? (e.g. dataacquistion, test all fetching formats for all sources? is one exemplary source enough?)
- Test exception handling on the different types of errors (e.g. for levels: fatal, errors, warnings) ?
Integration Tests[edit]
Integration tests need to be implemented only for services which have dependencies to other services. A new service will be introduced were the integration tests for our modules are implemented (Integration Test Service) Integration Tests should be performed for:
- HTTP interfaces (REST, unapi, other)
- Different tools already exist which we can use (as mvn dependency or java code generator).
- Example in python
- Tests should be generic, therefore we could introduce a httpInterface.xml which provides the links for the interfaces to test (not static in source code). Thus testing a new interface should only demand entering the url in this httpInterface.xml
- EJB interfaces
Test Process[edit]
- Check if the service can communicate to the required others (e.g. response code 200, AssertNotNull) [required]
- Check if the outcome of a method is the specified, desired one (e.g. valid escidoc xml). [optional]
- Test input should be valid and invalid parameters
Open Questions[edit]
System Tests[edit]
- Automated functional tests on solution level
- According to functionalities desc in CoLab? To be defined together with SVM.
- Manual functional tests by SVM group
- Automated gui tests on solution level (Selenium Tests)
- According to test scenarios in JIRA, like for PubMan
- Manual gui/ browser tests by GUI group
Open Questions[edit]
Bug Testing[edit]
Critical (regularly occurring) bugs should be identified together with SVM and checked with a appropriate test (Selenium or JUnit), on hand of its nature.
- Check 'old' bugs for test candidates
- Specify criteria for new bugs becoming test candidates
Open Questions[edit]
Test Resources[edit]
- Common Test Resources
- Should be created together with SVM (item with full md, previously critical items etc.)
- Should be stored in one place (which one?)
- Specific Test Resources
- To be defined individually by each module and saved in
src/test/resources
- To be defined individually by each module and saved in
Schedule[edit]
- Identify existing tests
- Create appropriate, generic test resources
- Enhance module tests according to specification
- Implement integration tests according to specification
- Check and specify what system tests are necessary for which solution
- Identify and implement bug tests
Test Process on example of DAAS[edit]
According to the current specification on this page a full testing process of the Dataacquistion Service should look like follows:
- Module test of all interface methods (e.g. doFetch("arxiv", "arxiv:123", "oai_dc"), explainSources()) with validation of outcome.
- Integration Test
- unapi e.g. http get: http://localhost:8080/dataacquisition/download/unapi?id=bmc:1472-6890-9-1&format=AJP_application/odt
- ejb e.g. doFetch("arxiv", "arxiv:123", "apa") (here DAAS needs to talk to transformation service)
- System test, e.g. selenium test of a user logging in, go to import page choose a source enter an identifier and save the item.
Tools[edit]
- RESTClient - easy Java-based REST testing tool
- soapUI - the leading tool for SOAP and REST testing, which comes with plug-ins for the following tools/IDE’s:
- Maven 1.X/2.X
- NetBeans 5.5/6.0
- IntelliJ IDEA 6+
- Eclipse 3.2+
- JBossWS/JBossIDE 2.0.0+
- PushToTest TestMaker is complete test automation platform that delivers unit testing, integration testing, functional testing, load testing, regression testing, and business service monitoring
- Application Testing – Avoid Downtime, Qualify Patches, Updates, Hardware Changes
- Integration Testing – Surface Performance Issues When Services Call Services
- Regression Testing – Surface Functionality Issues Before Customers Do
- Tool & Library Testing – Optimize Performance at the Object Level
- XML Optimization – Improve performance and scalability – AJAX, SOAP, REST
- Performance Testing – Better forecast CPU, Network, Memory needs to meet SLAs
- Selenium - software testing framework for Web UI testing