[Owncloud] Automating what Frank means when he says "Please give it a really good hard test." Help build the test suite!
Thomas Müller
thomas.mueller at tmit.eu
Thu Sep 20 22:50:18 UTC 2012
Jörn - thanks a lot for your work - this is the way to go!
I'm really looking forward to see all your scenarios arriving!
If anybody has question feel free to ping me on IRC - I'm happy to help!
Take care,
Tom aka DeepDiver
Am Freitag, dem 21.09.2012 um 0:34 schrieb Jörn Friedrich Dreyer:
> TLDR: Describe a feature with scenarios in gherkin[1]! Do it! Do it now!
>
> Have you, too, asked yourself what Frank actually means when he says
> "Please give it a really good hard test."? I always imagine a dark
> cellar, chained to a desk, where I have to sit late into the night to
> click through every possible action ownCloud offers. What else would a
> good hard test be?
>
> But I don't want to ruin my evenings like this. I prefer sitting in my
> garden, sipping a cold beer (you are hereby invited to join me, should
> you visit Hannover). There must be a better solution! I mean, we are
> software developers ... we automate things! So, Tom (DeepDiver) and I
> started working on setting up an automated test suite that emulates a
> user sitting in front of a browser, doing all the "really good hard
> test"ing. Now we need to tell it what to do!
>
> As an example I just committed some Gherkin scenarios for the core files
> app[1]. The nice thing about them is: they are readable by your mom!
> Take for example, this excerpt:
>
> <gherkin>
> Feature: files
> In order to organize my files
> As a mom
> I want to have basic file management
>
> Background
> Given I am logged in
> # these are the files hosted on demo.owncloud.org
> And I am in the files app
>
> Scenario: create files and folders
> When I click on the new button
> And I click on the new <type> action
> And I enter <filename>
> Then I should see <filename>
> And <filename> should have mimetype <mimetype>
> And <filename> should have size <size>
>
> Examples:
> | type | mimetype | filename | size |
> | file | text/plain | simplefile.txt | 0 |
> | file | text/plain | äöü ß ÄÖÜ € @.txt | 0 |
> | file | text/x-c | test.cc | 0 |
> | file | text/x-php | test.php | 0 |
> | folder | httpd/unix-directory | Testfolder | 0 |
> | folder | httpd/unix-directory | Testfolder with spaces | 0 |
> </gherkin>
>
> Not that hard to understand, is it?
>
> Until now, this is basically a checklist, a tester could use to do
> Franks bidding. Now, as I said earlier, I tend to find this kind of
> tedious task ... very boring. Enter cucumber[2]: with a little glue
> code, these gherkin scenarios can be executed as unit tests! The clue
> code translates "I click on the new button" into code that cucumber uses
> to execute actions in a browser and check results.
>
> At this point I admit that I sometimes forget to execute the test suite
> before commiting. Enter our continuous integration server[3] (thx again
> tom for your awesome work there, too!):
> Jenkins will monitor the commits and execute the cucumber test suite
> after each checkin. He currently posts the result of the simpletest test
> suite into the IRC dev channel allowing you to blame me whenever I break
> a feature our users expect ;)
>
> In the end, this process will enable us to automate large parts of QA by
> testing each commit against every feature with combination of sqlite,
> mysql, Postgresql, Oracle, Firefox and Chrome/Chromium. We will always
> be able to say "Feature A works, which means that you can do scenario X,
> Y and Z". I cannot stress enough how awwwesome ... err ... sweeeeeeet
> this is!
>
> Sure,there is still a ton of work left to do, and as we all know the
> first steps are always the hardest. Fortunately, even your mom, dad,
> sister, brother or significant other can help us with the first step -
> writing textual scenarios for features:
>
> 1. Go to http://demo.owncloud.org
> 2. Pick an app from the navigation bar
> 3. Keep the gherkin syntax page open for reference
> https://github.com/cucumber/cucumber/wiki/Gherkin
> 4. Learn from feature examples
> https://github.com/aslakhellesoy/cucumber-rails-test/tree/master/features (all
> the *.feature files)
> 5. Start with a general Feature description:
>
> Feature: [the app name is enough for now]
> In order to [goal]
> [stakeholder]
> wants [behavior]
>
> 6. Flesh out some scenarios with Given-When-Then:
> https://github.com/cucumber/cucumber/wiki/Given-When-Then
>
> Scenario: browsing the gallery
> Given I am logged in
> And I have uploaded the demo files
> When I go to the gallery
> Then I want to see a thumbnail of <image>
>
> Examples:
> | image |
> | Demo Image - ccc.jpg |
> | Demo Image - Laser Towards Milky Ways Centre.jpg |
> | Demo Image - Northern Lights.jpg |
>
> 7. Send the .feature as a response to this message or directly to me.
>
> I'll take care of aggregating the first round of scenarios into
> features. We'll then create a public repository on github and start
> writing the glue code (Step Definitions[4]). But thats another topic for
> the future.
>
> Now, go ahead, write a few feature scenarios, and ask your neighbor to
> do it, too! It'll save you lots of hours of silly clicking in the night!
> And it will bring world peace!
>
> so long
>
> Jörn
>
> [1]
> https://gitorious.org/owncloud-acceptance-test-suite/owncloud-acceptance-test-suite
> [2] http://cukes.info/
> [3] http://ci.tmit.eu/
> [4] https://github.com/cucumber/cucumber/wiki/Step-Definitions
>
> --
> Jörn Friedrich Dreyer (jfd at owncloud.com)
> Software Developer
> ownCloud GmbH
>
> Your Data, Your Cloud, Your Way!
>
> ownCloud GmbH, GF: Markus Rex, Holger Dyroff
> Schloßäckerstrasse 26a, 90443 Nürnberg, HRB 28050 (AG Nürnberg)
> _______________________________________________
> Owncloud mailing list
> Owncloud at kde.org
> https://mail.kde.org/mailman/listinfo/owncloud
More information about the Owncloud
mailing list