[Owncloud] Automating what Frank means when he says "Please give it a really good hard test." Help build the test suite!
Frank Karlitschek
frank at owncloud.org
Fri Sep 21 05:28:29 UTC 2012
Indeed.
Very cool and thanks a lot :-)
Frank
On 21.09.2012, at 00:50, Thomas Müller <thomas.mueller at tmit.eu> wrote:
>
> 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
> _______________________________________________
> Owncloud mailing list
> Owncloud at kde.org
> https://mail.kde.org/mailman/listinfo/owncloud
More information about the Owncloud
mailing list