Thursday, September 27, 2007

actual code: create vs. sort

Grig and Simon are both still suspicious, so here is an example from the test itself:

This is Selenium RC in a keyword-driven framework where test data is in the wiki. Take a look at the "code" below and I hope you agree that an explicit test for creating a record is not worthwhile.

Any of these could fail in the setup, even though there is no explicit assertion about success:

| clickAndWait | link=Accounts | |
| type | name | 0sort1account%%start_time%% |
| st-submit | | |
| clickAndWait | link=Accounts | |
| type | name | 0sort2account%%start_time%% |
| st-submit | | |
| clickAndWait | link=Accounts | |
| type | name | 0sort3account%%start_time%% |
| st-submit | | |

and even if those didn't trigger a failure, these other assertions about sorting would fail in a really obvious way if any of the three records were missing:

| open | /nlw/control/account | |
| text_like | qr/sort1account.+sort2account.+sort3account/ | |
| clickAndWait | link=Name | |
| text_like | qr/sort3account.+sort2account.+sort1account/ | | |
| clickAndWait | link=Number of Workspaces | |
| text_like | qr/sort1account.+sort2account.+sort3account/ | |
| clickAndWait | link=Number of Workspaces | |
| text_like | qr/sort3account.+sort2account.+sort1account/ | | |
| clickAndWait | link=Number of Users | |
| text_like | qr/sort3account.+sort2account.+sort1account/ | |
| clickAndWait | link=Number of Users | |
| text_like | qr/sort1account.+sort2account.+sort3account/ | |

2 comments:

Grig Gheorghiu said...

OK, you convinced me :-) My initial comment was more in the context of unit tests. But for Selenium tests, I agree with you, explicit checks for the creation of records would be overkill.

BTW -- very cool stuff you're doing with Sel RC!

Grig

Smart Monkey Tester said...

I agree that as an atomic test, it's less than useful. If you create an atomic test for each line item on a test plan, a test suite, particularly an automated one, becomes completely unmanageable. However, as a method or subroutine, it is useful (at least for the record creation, though not necessarily for the validation). That is, creating the record, should be a subroutine, but checking to make sure it is valid should not be. Is it thus compartmentalized in your setup?

- David Whitesell