[Kmymoney-devel] Improving the test suite for MyMoneyFile

Cristian OneČ› onet.cristian at gmail.com
Tue Feb 17 18:18:23 UTC 2015


To verify signal emission in a test case use QSignalSpy [1] (it's
pretty well documented).

I'm on the run now but I'll follow up with a specific example and
ideas about the balance cache later.

Regards,
Cristian

[1] http://doc.qt.io/qt-5/QSignalSpy.html

2015-02-17 19:24 GMT+02:00 victor <pedretti_86 at hotmail.com>:
> Thanks for your answer Cristian. I understand what you mean, but I have no
> idea about how to check that those signals are emitted since I have never
> worked with this mechanism. Could you please show me a specific example?
>
> Your answer refers to m_valueChangedSet and m_balanceChangedSet. Any ideas
> about the faults involving "m_balanceCache"?
>
>> Date: Tue, 17 Feb 2015 16:23:42 +0200
>> Subject: Re: [Kmymoney-devel] Improving the test suite for MyMoneyFile
>> From: onet.cristian at gmail.com
>> To: pedretti_86 at hotmail.com
>> CC: kmymoney-devel at kde.org
>
>>
>> Hi,
>>
>> Since those two members are used to implement the emit of the
>> 'balanceChanged()' and 'valueChanged()' signals after committing
>> changes you could write a test case that asserts that those signals
>> are emitted properly.
>>
>> For example:
>> After adding a transaction 'balanceChanged()' should be emitted.
>> After adding a price 'valueChanged()' should be emitted.
>>
>> Regards,
>> Cristian
>>
>> 2015-02-17 16:13 GMT+02:00 victor <pedretti_86 at hotmail.com>:
>> > Hello,
>> >
>> > I am trying to improve some of the test files of KMyMoney for my
>> > research
>> > studies. This is a really complex task when you are not involved in
>> > programming this application, so I need your help to achieve it.
>> >
>> > All the same, I'm only focusing on some specific parts. What I'm doing
>> > is to
>> > introduce several concrete faults into the code and then observe if the
>> > fault is detected by the test suite (this would be the expected of an
>> > adequate test suite, but we all now that this is quite difficult
>> > sometimes).
>> > In this sense, I have been doing this in "mymoneyfile.cpp" and testing
>> > it
>> > with its corresponding file test "mymoneyfiletest.cpp". The faults
>> > introduced are faults which are common when programming because we
>> > sometimes
>> > mix the name of variables of the same type, or do not call the
>> > appropriate
>> > method because of "copy and paste",...
>> >
>> > Here I show two of these faults that the test suite is not able to
>> > detect
>> > (the result is the same in the original program and with the inserted
>> > fault):
>> >
>> > 1) The first is in the method "void
>> > MyMoneyFile::commitTransaction(void)",
>> > where I change:
>> >
>> > d->m_balanceChangedSet.remove((*it).id());
>> >
>> > by:
>> >
>> > d->m_valueChangedSet.remove((*it).id());
>> >
>> > Exactly the same happens in the method "void
>> > MyMoneyFile::rollbackTransaction(void)" if, for instance, I change
>> > "d->m_valueChangedSet.clear();" by "d->m_balanceChangedSet.clear();".
>> > These
>> > changes seem to be meaningful changes, but they are not detected by the
>> > test
>> > suite at the moment.
>> >
>> > 2) The other situation that I want to report is in method "void
>> > notify(void)" belonging to "MyMoneyFile::Private". If I change,
>> >
>> > m_balanceCache.clear(i.first, i.second);
>> >
>> > by:
>> >
>> > m_balanceCache.clear(i.first);
>> >
>> > or:
>> >
>> > m_balanceCache.clear();
>> >
>> > How could I detect that I are not calling the method "clear" in a
>> > correct
>> > way?
>> >
>> > I am aware that this is quite specific and may be difficult to create
>> > test
>> > cases for these situations, but I think that this is a very good chance
>> > to
>> > improve the test suite of MyMoneyFile (a very important module in the
>> > application).
>> >
>> > Does somebody know how to reveal the aforementioned faults modifying
>> > existing test cases or designing a new one?
>> >
>> > Thanks in advance.
>> >
>> > _______________________________________________
>> > KMyMoney-devel mailing list
>> > KMyMoney-devel at kde.org
>> > https://mail.kde.org/mailman/listinfo/kmymoney-devel
>> >


More information about the KMyMoney-devel mailing list