Home > Developers > Wiki > SmokeTesting
Views


What is Smoke Testing?

"Smoke testing" is the process of running automated user-interface-based tests.

How does one perform Smoke Tests?

Currently, Selenium is being explored as one means of running smoke tests against Mifos.

Selenium

Examples

  • bug 1572 repro. Set baseURL to http://test.mifos.org:8085/.
  • bug 1635 repro. Set baseURL to http://test.mifos.org:8085/.
  • SeedData. Use a local Mifos instance. Adds all seed data necessary to create a loan, then creates and activates the loan. Database can be completely empty, but this is not required. Features tested:
  • logout
  • login
  • create loan product
  • create branch office
  • create loan officer
  • create center
  • create group
  • approve group
  • create client
  • approve client
  • create loan account

Pros

  • excellent IDE (actually just a Firefox plugin)
  • great documentation
  • many different ways to locate form fields, links, etc.
  • many bits of the rendered UI are easily accessible
  • Selenium API is consistent between IDE and exported Java code
  • exports to JUnit 3 style tests
  • exported JUnit 3 tests are easily converted to JUnit 4
  • repros with known test data on a particular server are easy to record
  • convenient complement to unit tests (not a replacement)

Interesting points

  • easy to see that Mifos has lots of invalid html
  • we should consider consistent use of "id" attributes

Cons

  • Selenium IDE isn't perfect; hand-editing is often required
  • XPath confusion example
  • Selenium IDE might record the following "clickAndWait" command target when clicking on a link: "//a[contains(text(),'Addn Group')]?". This is an XPath expression.
  • easier might be to just change the target to "link=Add Group"
  • even better would be to refer to the id attribute of the link, if present
  • however, it doesn't take long to get used to Selenium API
  • some Firefox plugins may conflict with Selenium IDE
  • "It's All Text!" renames "id" attribute and confuses Selenium IDE
  • SeedData needs slight modification to run on test server
  • "center" is called "kendra", for instance
  • how do you check HTTP status codes?
  • may not be necessary, actually
  • tests can be fragile if not designed well
  • doesn't address data aging
  • loan disbursals/payoffs
  • batch job runs
  • known sets of test data are needed for this
  • Waitr tests already exist for Mifos


Grameen logo