← Back to team overview

elementary-dev-community team mailing list archive

Re: Testing

 

Craig, thanks to make everything more clear.
Unit test is not just having something to compare stuff but we need a great
mocking system. Does anyone have links for that as well?


On Thu, Apr 4, 2013 at 4:00 PM, Craig <weberc2@xxxxxxxxx> wrote:

> *If anyone is interested in starting a Vala Unit Test project under the
> umbrella of the elementary community, I'm sure we could get quite a bit of
> traction from the Vala community at large and I would love to help out. -
> Dane Henson*
> *
> *
> Not only that, but I imagine it would garner quite a lot of professional
> developer attention for elementary, since professional devs seem
> dramatically more exposed to (and interested in) formal testing than
> hobbyist developers.
>
> *I apologize for spamming the mailing list. - Dane Henson*
> Please don't apologize--from the sounds of it, there is quite a bit of
> consensus that this is a subject that needs to be discussed. And I for one
> have found each of your messages profitable.
>
> *Unit testing is boring to write so if we just said "Everybody. Write
> unit tests. All Projects. Now." it would really take on. On companies and
> when developers are paid to work, they can write and put tests everywhere,
> but it's harder for us. - David Gomes*
> *
> *
> David, I used to think that as well; however, once you learn to write
> tests correctly (I'm starting that process myself) it becomes more
> exciting. As Dane mentions later in the thread, when you build the bucket
> around the water (write tests for existing code), it is certainly drudgery;
> however, when you write tests *before* you implement the functionality,
> you
>
>    1. wind up with better code (because code must be written in neat
>    modules to provide your tests access to the inputs/outputs they need)
>    2. get the excitement of writing code and watching your tests
>    pass/fail (and as you learn to write better tests, you get detailed
>    information about exactly what caused the failure)
>    3. can change your code fearlessly, knowing that if anything breaks,
>    you will be notified immediately
>
> The whole process becomes at least a little more exciting, especially if
> you've experienced a huge untested code base and the fear that comes with
> having to make a change or implement a feature lest the whole thing come
> tumbling down on you.
>
> *While if we (developers) use the first approach, which is called TDD is
> much better. We write the test first so we define how our app should behave
> and how our code is structured already (so all the thinking of the code
> structure you do it in the tests)  which is really great. - Goncalo*
> *
> *
> TDD = Test Driven Development (for the uninitiated). I elaborated on this
> process to some extent in my previous paragraph.
>
> We can also do BDD , if there's no framework for this we can probably
> create something, for more infos you can check cucumber for Ruby. *Bdd
> let's you write the tests in PLAIN english, so who does the mockups could
> write the tests as well. that would be great. - Goncalo*
> *
> *
> BDD = Behavior Driven Development. It's either the same thing or very
> closely related to ATDD (Acceptance Test Driven Development). In either
> case, the general idea is that you specify what the entire system *must do
> * (system requirements/acceptance criteria) and then you write tests to
> verify each requirement. This sort of test might look like:
>
> "WHEN the bold button is pressed
>  AND the string 'abcd' is typed,
>  EXPECT the text view to contain the string 'abcd' in bold"
>
> Then, for each line, you write a function that implements either the setup
> (the WHEN/AND portion) or the evaluation (the EXPECT portion) and then the
> framework puts the pieces together and executes the test. The code for the
> test (in pseudocode) might look like this:
> func pressBoldButton () {
>    theApp.boldButton.setPressed (true)
> }
> func type(string input) {
>    theApp.InsertAtCursor (input)
> }
> func verifyContents () {
>    start := 0
>    end := 3
>    contents := theApp.GetFormattedSubStr (start, end)
>    contentsAreBold := contents.isBold()
>    letters := contents.getPlainTextString()
>
>    Testing.Expect (contentsAreBold);
>    Testing.Expect (letters == "abcd")
> }
>
> On Thu, Apr 4, 2013 at 9:11 AM, Dane Henson <dane@xxxxxxxxxxxxxxxx> wrote:
>
>> Here is another practical post I found interesting regarding setting up
>> Unit Tests in Vala with Cmake:
>>
>>
>> http://blog.remysaissy.com/2012/11/setting-up-unit-tests-in-vala-project.html
>>
>> I apologize for spamming the mailing list.
>>
>>
>> On Thu, Apr 4, 2013 at 8:56 AM, Sergey "Shnatsel" Davidoff <
>> sergey@xxxxxxxxxxxxxxxx> wrote:
>>
>>> I strongly recommend anyone interested in automated testing to read
>>> through Martin Pitt's Ubuntu Dev Week session on the topic. He's the one
>>> responsible for most of unit testing in Ubuntu (he's also the author of
>>> Apport which we already use). His IRC nick is "pitti" and the session logs
>>> can be found at
>>> http://irclogs.ubuntu.com/2013/01/31/%23ubuntu-classroom.html
>>>
>>>
>>> --
>>> Sergey "Shnatsel" Davidoff
>>> OS architect @ elementary
>>>
>>
>>
>> --
>> Mailing list: https://launchpad.net/~elementary-dev-community
>> Post to     : elementary-dev-community@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~elementary-dev-community
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
> --
> Mailing list: https://launchpad.net/~elementary-dev-community
> Post to     : elementary-dev-community@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~elementary-dev-community
> More help   : https://help.launchpad.net/ListHelp
>
>

References