POV-Ray : Newsgroups : povray.off-topic : Q about Unit Tests Server Time
4 Sep 2024 19:21:20 EDT (-0400)
  Q about Unit Tests (Message 1 to 10 of 12)  
Goto Latest 10 Messages Next 2 Messages >>>
From: Darren New
Subject: Q about Unit Tests
Date: 2 Dec 2009 17:18:50
Message: <4b16e7ca$1@news.povray.org>
OK, so I have a media player.

After initialization, it should have a mode of "stopped" and a speed of 100% 
and a volume of 100% and an empty error code and an elapsed time of zero.

So I write a unit test to create and initialize a player, then check that 
answer.

Now I want to make sure elapsed time moves forward while playing. So I 
create a player and initialize it, tell it to play, wait 12 seconds, and 
make sure I have about 10 seconds of elapsed time in the elapsed time counter.

The question is this: since all tests are supposed to be independent, should 
I test that after initialization I have a speed of 100%, mode of stopped, 
and all that yadda in the first test? Or can I assume that first test 
worked, and just test that switching to play makes the mode go to "playing" 
and the elapsed time counter increment?

What do people who write lots of unit tests suggest?



-- 
Darren New, San Diego CA, USA (PST)
   Human nature dictates that toothpaste tubes spend
   much longer being almost empty than almost full.


Post a reply to this message

From: Stephen
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 06:24:58
Message: <4b18f18a$1@news.povray.org>
Darren New wrote:
> OK, so I have a media player.
> 
> After initialization, it should have a mode of "stopped" and a speed of 
> 100% and a volume of 100% and an empty error code and an elapsed time of 
> zero.
> 
> So I write a unit test to create and initialize a player, then check 
> that answer.
> 
> Now I want to make sure elapsed time moves forward while playing. So I 
> create a player and initialize it, tell it to play, wait 12 seconds, and 
> make sure I have about 10 seconds of elapsed time in the elapsed time 
> counter.
> 
> The question is this: since all tests are supposed to be independent, 
> should I test that after initialization I have a speed of 100%, mode of 
> stopped, and all that yadda in the first test? Or can I assume that 
> first test worked, and just test that switching to play makes the mode 
> go to "playing" and the elapsed time counter increment?
> 
> What do people who write lots of unit tests suggest?
> 
> 
> 
My understanding of unit testing is that they are just used to test one 
aspect of the software, independently. You then go on to write a system 
test which tests the end to end process. That is followed by an 
integration test, testing any links to other parts of the program. 
Finally there is the UAT or User Acceptance Test where you hold your 
breath as the customer tries to break it ;)
Integration testing may not be applicable in your case. I hope this helps.
As an aside it does not always work this way. Last week we were system 
testing at the same time I was doing development. (What a way to run a 
project!) Now were are to start Integration Testing and some of the unit 
tests have not been documented. (I hate project managers who never leave 
their M$ Project and look at the real world)


-- 

Best Regards,
	Stephen


Post a reply to this message

From: Darren New
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 12:11:52
Message: <4b1942d8$1@news.povray.org>
Stephen wrote:
> My understanding of unit testing is that they are just used to test one 
> aspect of the software, independently. 

Sure. But if you have one "aspect" that takes a dozen steps to set up, and 
those steps might fail, do you check each of those previous worked (which 
means you're testing a bunch of stuff, possibly obscuring what you really 
want to test), or do you assume they worked because you already tested them 
(making the tests not independent)?

-- 
Darren New, San Diego CA, USA (PST)
   Human nature dictates that toothpaste tubes spend
   much longer being almost empty than almost full.


Post a reply to this message

From: Darren New
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 12:38:27
Message: <4b194913$1@news.povray.org>
Darren New wrote:
> Sure. But if you have one "aspect" that takes a dozen steps to set up, 

Or, to be more clear, I have dozens of tests for my media player. Each one 
depends on the file it's playing to be present on disk. I have one test that 
says "Yes, the WMV file is here" that runs first. Should I re-do that check 
in ever unit test? Pros/cons?

-- 
Darren New, San Diego CA, USA (PST)
   Human nature dictates that toothpaste tubes spend
   much longer being almost empty than almost full.


Post a reply to this message

From: Stephen
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 13:00:39
Message: <4b194e47@news.povray.org>
Darren New wrote:
> Stephen wrote:
>> My understanding of unit testing is that they are just used to test 
>> one aspect of the software, independently. 
> 
> Sure. But if you have one "aspect" that takes a dozen steps to set up, 
> and those steps might fail, do you check each of those previous worked 
> (which means you're testing a bunch of stuff, possibly obscuring what 
> you really want to test), or do you assume they worked because you 
> already tested them (making the tests not independent)?
> 

Are we having a “two countries separated by a common language” moment 
here or is it me speaking fluent “Stephen”? :-)

What you want is to test the components separately under all the 
conditions that you can think of and when you are confident that they 
work you assume that they will work in the end-to-end test (ideally 
written and tested by someone else). If that fails then you start fault 
finding OK trouble shooting ;)
The quality of your unit tests are paramount in proceeding to the next 
step that is the system test.
For instance in SAP, I’ll write a functional spec for a developer to 
write an upload interface and I’ll also write a spec for a functional 
module to take that data and enter it into tables either directly or via 
a standard SAP transaction (which validates the data, somewhat). After 
the developer unit tests the developments separately I’ll rerun the 
tests using my own data including throwing bad data at it. Then I’ll 
join the developments together and see what the output is for all the 
various condition I can think of. Later someone else (the customer) will 
re-run similar tests with different data as an acceptance test.
You often find that an end-to-end test shows up problems that the unit 
tests don’t.
Again I feel I may be speaking fluent “Stephen” :-)



-- 

Best Regards,
	Stephen


Post a reply to this message

From: Stephen
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 13:08:38
Message: <4b195026$1@news.povray.org>
Darren New wrote:
> Darren New wrote:
>> Sure. But if you have one "aspect" that takes a dozen steps to set up, 
> 
> Or, to be more clear, I have dozens of tests for my media player. Each 
> one depends on the file it's playing to be present on disk. I have one 
> test that says "Yes, the WMV file is here" that runs first. Should I 
> re-do that check in ever unit test? Pros/cons?
> 
A good example and unless you can think of any reason for the first test 
to pass then the WMV file not to be there when the next test is run. I 
would say no do not run it during subsequent unit tests. Pros/cons are 
difficult for me to say other than you have to trust some things and you 
will test the end-to-end process in your final test.



-- 

Best Regards,
	Stephen


Post a reply to this message

From: Darren New
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 13:48:38
Message: <4b195986@news.povray.org>
Stephen wrote:


> here or is it me speaking fluent “Stephen”? :-)

I don't know, but I'm talking about the contents of a specific unit test,
 
given that other unit test have already passed or failed.

I know what I want to test. I'm saying that if it takes 15 steps to get t
o 
the 16'th step I want to test, and I already tested the 15 steps in anoth
er 
test, do I need to re-test them in the 16'th step?

If I want to test "media player elapsed-time counter stops incrementing a
nd 
stays at 20 seconds if I pause the media player after 20 seconds of 
playing", do I also need to test "media player constructor works, media 
player starts playing, elapsed time counter increases one second per seco
nd" 
in the "pause" unit test?

Or, in your example, if your first unit test tests that what the develope
r 
gave you in the upload is right, do you have to test that again in the 
second test that submits it to the SAP upload interface?


-- 
Darren New, San Diego CA, USA (PST)
   Human nature dictates that toothpaste tubes spend
   much longer being almost empty than almost full.


Post a reply to this message

From: Stephen
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 14:12:03
Message: <4b195f03@news.povray.org>
Darren New wrote:
> Stephen wrote:
>> Are we having a “two countries separated by a common language” moment 
>> here or is it me speaking fluent “Stephen”? :-)
> 
> I don't know, but I'm talking about the contents of a specific unit 
> test, given that other unit test have already passed or failed.
> 
> I know what I want to test. I'm saying that if it takes 15 steps to get 
> to the 16'th step I want to test, and I already tested the 15 steps in 
> another test, do I need to re-test them in the 16'th step?
> 
> If I want to test "media player elapsed-time counter stops incrementing 
> and stays at 20 seconds if I pause the media player after 20 seconds of 
> playing", do I also need to test "media player constructor works, media 
> player starts playing, elapsed time counter increases one second per 
> second" in the "pause" unit test?
> 
> Or, in your example, if your first unit test tests that what the 
> developer gave you in the upload is right, do you have to test that 
> again in the second test that submits it to the SAP upload interface?
> 
> 
The answer is no, you don’t need to retest previously passed tests, that 
is the whole idea of *unit* tests.
Sorry if I over complicated things.


-- 

Best Regards,
	Stephen


Post a reply to this message

From: Darren New
Subject: Re: Q about Unit Tests
Date: 4 Dec 2009 22:30:12
Message: <4b19d3c4@news.povray.org>
Stephen wrote:
> The answer is no, you don’t need to retest previously passed te
sts, that 
> is the whole idea of *unit* tests.

OK, then unit tests aren't "independent" in that sense. I guess the advic
e 
is to prevent a unit test from relying on stuff left over from a previous
 
unit test, so you could in theory run them in any order *if* they all pas
s.

-- 
Darren New, San Diego CA, USA (PST)
   Human nature dictates that toothpaste tubes spend
   much longer being almost empty than almost full.


Post a reply to this message

From: Stephen
Subject: Re: Q about Unit Tests
Date: 5 Dec 2009 02:32:26
Message: <4b1a0c8a$1@news.povray.org>
Darren New wrote:
> Stephen wrote:
>> The answer is no, you don’t need to retest previously passed tests, 
>> that is the whole idea of *unit* tests.
> 
> OK, then unit tests aren't "independent" in that sense. I guess the 
> advice is to prevent a unit test from relying on stuff left over from a 
> previous unit test, 

That’s right for each unit test you can and generally must prepare the 
data the unit has to test. Sometimes preparing that data is the only way 
you can get the error conditions you want to check for.

> so you could in theory run them in any order *if* 
> they all pass.
> 
You can run them in any order and since they are independent tests they 
do not rely on other tests passing or failing. It is hard to separate 
them in your mind from the system test where the data created in one 
unit test is used as an input in a following test.

-- 

Best Regards,
	Stephen


Post a reply to this message

Goto Latest 10 Messages Next 2 Messages >>>

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.