[erlang-questions] QuickCheck/PropEr
Edmond Begumisa
ebegumisa@REDACTED
Tue May 24 00:06:27 CEST 2011
On Tue, 24 May 2011 05:24:53 +1000, Edmond Begumisa
<ebegumisa@REDACTED> wrote:
> Thanks John,
>
> This was most helpful and got me over that initial hurdle. I see now
> that property-based testing is more about defining how the system should
> behave and is best used as a design-time aid -- almost like programming
> by contract. Write properties first, code from there. Thinking of it the
> other way had caused me great confusion.
>
> With some head-scratching, I can now (usually) retrospectively come up
> with properties for my libraries and codecs after watching this.
>
> But now I have a different problem! Libraries and codecs were at the
> bottom of my list for things I wanted to do automated tests on coz these
> don't fail much (time constrains mean I can ignore them for now). State
> machines and IPC are at the top. I know -- I'm jumping straight into the
> deep end. But I need to test the complex stuff in my apps rather than
> the simpler stuff!
>
> Knowing that these are features for the commercial version of
> QuickCheck, I'll direct the following silly questions to PropEr users
> instead:
>
> * proper_fsm now makes more sense (reminds me a little of UBF(C)). But
> I'm having trouble with defining properties for my gen_servers.
This wasn't clear. I'm making headway with my gen_fsms thanks to
proper_fsm. It's my gen_servers where I can't pass go.
> From what I can tell, I need to somehow use {set, {var, _}, {call, _}}
> symbolic reps for the callbacks. Something I realised from watching ...
>
> http://www.quviq.com/demos/QuickCheck%20Elevator%20Demo/QuickCheck%20Elevator%20Demo.htm
>
> .. and from "Testing Stateful Code" in PropEr's README. But I can't
> figure out how to actually write the properties with symbolic reps for
> the callbacks. Can anyone offer me an example on how to do this?
>
> * If I want to test a group of modules/processes rather than just one.
> Specifically, a subtree in my supervision tree. How would I go about
> doing this? Using the elevator example: say elevator.erl spawns several
> people processes defined by person.erl. I write properties for both
> modules and test them individually. But if I want to then write
> properties that depend on actual interaction between elevator.erl and
> several person.erl processes, where would I start?
>
> Thanks in advance for any help.
>
> - Edmond -
>
>
>
>
> On Sun, 22 May 2011 20:20:06 +1000, John Hughes <john.hughes@REDACTED>
> wrote:
>
>> Hi Edmond,
>>
>> You're not alone--there is a hurdle to get over, a different way of
>> thinking about testing. My talk at the last Erlang Factory in SF was
>> specifically intended to help people just starting out--the video and
>> slides are on the web at
>> http://www.erlang-factory.com/conference/SFBay2011/speakers/JohnHughes.
>> Be interested to hear if you find it helpful/not helpful.
>>
>> John
>>
>>
>> ----- Original Message ----- From: "Edmond Begumisa"
>> <ebegumisa@REDACTED>
>> To: <erlang-questions@REDACTED>
>> Sent: Sunday, May 22, 2011 12:01 AM
>> Subject: [erlang-questions] QuickCheck
>>
>>
>>> Hello all,
>>>
>>> I'm a QuickCheck noob trying out PropEr. Actually, I'm very
>>> embarrassed to admit that I'm very new to formal testing in general
>>> (I've always done things in the ad-hoc way for longer than I care to
>>> admit). I only confess to this coz I probably wouldn't get away with
>>> lying about it on *this* list when I start asking stupid questions!
>>>
>>> Anyways, I'm having A LOT of trouble getting started. The initial
>>> inertia just isn't there. Even with the available documentation from
>>> both QuviQ and PropEr. I look at my code and don't know where to begin
>>> writing tests for it! A sad state of affairs.
>>>
>>> I think I just need a few good tutorials. Can anyone recommend some
>>> QuickCheck resources to get me going that they've actually
>>> successfully used? Do I need to first start out with more
>>> "traditional" testing tools first before even attempting QuickCheck?
>>>
>>> Thanks in advance for you help.
>>>
>>> - Edmond -
>>>
>>> -- Using Opera's revolutionary e-mail client:
>>> http://www.opera.com/mail/
>>> _______________________________________________
>>> erlang-questions mailing list
>>> erlang-questions@REDACTED
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>>
>>
>
>
--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
More information about the erlang-questions
mailing list