SmokeTesting
What is Smoke Testing?
"Smoke testing" is the process of running automated user-interface-based tests.
- 1 How does one perform Smoke Tests?
- 1.1 Selenium
- 1.1.1 Examples
- 1.1.2 Pros
- 1.1.3 Interesting points
- 1.1.4 Cons
- 1.1 Selenium
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 (
spikes/testscripts/Selenium/SeedData/SeedData.htmlin source control). 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: "//acontains(text(),'Add-n 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