My Unit Testing e-book is published!
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogNice work, Mark. :thumbsup::thumbsup::thumbsup::thumbsup::thumbsup: If I may... In my years with Apple's Integration Quality (IQ) Department, Unit (or "Component") Matrix Testing (UMT) was pivitol. IQ ensured all Apple Products were ready for Golden Master / ship status. Of dismay, some products at the time shipped sub-standard. (Not to brag ... OK, bragging ~ the product I was in charge of quality for, the Apple ColorOne Scanner, received the highest QA rating in Apple's then-history from independent testing labs!) I'm jazzed that the first headline in the book, other than "Chapter 1 Why Unit Test?" is "Measuring Correctness". That's the problem allot of testing has, that of the inability to to accurately measure correctness, especially in Unit Matrix Testing (UMT). We had reasonable solo Unit Testing, but there was an absence of measuring cross-unit correctness. That is, we'd measure units A, B & C and say "yup, it's all working", but we didn't measure A & B or A & C as a larger, or "complex"/matrix unit (that UMT noted earlier). OK, yes, with only 3 units we would measure across the matrix, but when it got beyond, say, 10 units, some products would have the next two headline of "Repetition, Repetition, Repetition" and "Code Coverage" skipped for sake of simplifying the overall process. Not good. Especially when a defect is manifested which results in a then $2.4 million ($5.06 million today) "fix-it" cost This actually did occur because a then-Product Manager chose to not include a critical UMT section I had wrote that revealed a defect in a related sister product and would've revealed such in their product; but shipped with the defect. UMT does, in and of itself, (if I may borrow from the book...) introduce cyclomatic unit complexity; a fancy way of saying that the individual units now have multiple points of interaction and integration. Testing instructions: Press the blue button, but first press the orange button. Button Blue and button Orange are units, doing something in and of themselves. When pressed independently, we have the basic raw solo unit test. When executed (pressed) in tandem or consecutively, these buttons (units) present the necessity of UMT, or "integration" testing (hence, the aforementioned QA dept. name of "Integration Quality"). Of course, it may not always be that they would be pressed in tandem or consecutive. Yet, without testing that integration outcome, we fail to "Measure [true] Correctness" and reveal potential defects
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogDownloaded! Looks good, and congrats!
Gryphons Are Awesome! Gryphons Are Awesome!
-
According to Chrome, this kind of document may be harmful to my computer. Just shows that testing really does sucketh.
Reality is an illusion caused by a lack of alcohol "Nagy, you have won the internets." - Keith Barrow
Google does no evil, therefore if Google doesn't unit test, then unit testing is evil.
I wanna be a eunuchs developer! Pass me a bread knife!
-
Congrats .. Happy to hear that. I downloaded the PDF version and had a look into. It's really nice and it's good for beginner level. For more advanced book I would recommend reading "The Art of Unit Testing" from Roy Osherove- http://www.manning.com/osherove2/[^] Here's the video - http://artofunittesting.com/[^] Thanks,
Ranjan.D
Leave the thunder where it belongs. If you pulled a stunt like that on me, I'd kick your arse.
I wanna be a eunuchs developer! Pass me a bread knife!
-
Hmm...I'd like to take a look, but I'm a little suspicious of a site that needs my phone number to let me download a file. :doh: (Never mind, they don't verify it so a fake number is fine.)
Use a number with a 555 area code and they'll think you're a movie star.
I wanna be a eunuchs developer! Pass me a bread knife!
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogCongratulations and THANK YOU!!!
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is (V).
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogCongrats, Marc!
If you are not criticized, you may not be doing much.
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogSo Syncfusion paid you to write a book that is available for free ? I have trouble understanding this business model.
~RaGE();
I think words like 'destiny' are a way of trying to find order where none exists. - Christian Graus Do not feed the troll ! - Common proverb
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogThank you very much! Downloaded it and will get into it asap.:thumbsup:
-
So Syncfusion paid you to write a book that is available for free ? I have trouble understanding this business model.
~RaGE();
I think words like 'destiny' are a way of trying to find order where none exists. - Christian Graus Do not feed the troll ! - Common proverb
Rage wrote:
I have trouble understanding this business model.
Why? It's a great way for them to build a good reputation with developers and drive them towards their paid services. I currently use their products and Mindscape's and I find them far superior to Infragistics. To a large extent, my involvement with them was driven directly off downloading their books.
I was brought up to respect my elders. I don't respect many people nowadays.
CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier -
Rage wrote:
I have trouble understanding this business model.
Why? It's a great way for them to build a good reputation with developers and drive them towards their paid services. I currently use their products and Mindscape's and I find them far superior to Infragistics. To a large extent, my involvement with them was driven directly off downloading their books.
I was brought up to respect my elders. I don't respect many people nowadays.
CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier -
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogIt looks great, read the first couple of pages and I like it :)
Every day, thousands of innocent plants are killed by vegetarians. Help end the violence EAT BACON
-
Leave the thunder where it belongs. If you pulled a stunt like that on me, I'd kick your arse.
I wanna be a eunuchs developer! Pass me a bread knife!
-
Use a number with a 555 area code and they'll think you're a movie star.
I wanna be a eunuchs developer! Pass me a bread knife!
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogSounds interesting, but I don't want to give the SyncFusion sales people my contact info, especially since I don't have any purchasing authority. Perhaps it will be available from some other source soon.
-
Sounds interesting, but I don't want to give the SyncFusion sales people my contact info, especially since I don't have any purchasing authority. Perhaps it will be available from some other source soon.
RefugeeFromSlashDot wrote:
but I don't want to give the SyncFusion sales people my contact info
Well, it accepts fake phone and email as well. ;) Marc
-
[toot toot] Woohoo! If you want a refreshing view of unit testing (would you expect anything else, hahaha) download Unit Testing Succinctly[^]. [/toot toot] Incidentally, I quite enjoyed working with SyncFusion - they paid decently for the book, did some great editing, and the entire experience was very pleasant. Marc
Testers Wanted!
Latest Article: User Authentication on Ruby on Rails - the definitive how to
My BlogHi Marc I read your post and decided to down load your book. I've given it a good read now and thought it was very informative. I've recently been increasing my use of unit testing and you gave me some good information and some new ideas to try. I particularly liked the comparison between NUnit and the Visual Studio testing framework. I have one question about bug fixing. I get the part about writing a negative test to recreate the bug and then a positive test to test what should happen. Once you've fixed the bug do you keep the negative test or do you delete it and just keep the positive one. Thanks Stephen Well that's my first post done then!!
-
Hi Marc I read your post and decided to down load your book. I've given it a good read now and thought it was very informative. I've recently been increasing my use of unit testing and you gave me some good information and some new ideas to try. I particularly liked the comparison between NUnit and the Visual Studio testing framework. I have one question about bug fixing. I get the part about writing a negative test to recreate the bug and then a positive test to test what should happen. Once you've fixed the bug do you keep the negative test or do you delete it and just keep the positive one. Thanks Stephen Well that's my first post done then!!
Hi Stephen, Wow, thanks for the great feedback! As to your question, I'll quote this from StackOverflow: Positive Testing - testing the system by giving the valid data. Negative Testing - testing the system by giving the Invalid data. For Example, an application contains a textbox and as per the user's Requirements the textbox should accept only Strings.By providing only String as input data to the textbox & to check whether its working properly or not means it is Positive Testing. If giving the input other than String means it is negative Testing.. Negative testing improves the testing coverage of your application. Using the negative and positive testing approaches together allows you to test your applications with any possible input data (both valid and invalid) and can help you make your application more stable and reliable. So, there's two possibilities: One (code isn't buggy, it just doesn't handle bad inputs correctly): what you want the negative test to ultimately verify is that the code handles in some expected way (an exception, an error code return, a log entry, etc.) the conditions that result in a failure. So you would still keep the negative test after possibly improving the code's error handling, and only change the negative test, adding something like "ExpectedException" or some such verification that the error was handled. Two (code has a bug): The code simply has a bug, and the "negative test" re-creates the issue. Once the bug is fixed, the "negative test" actually becomes a "positive test", verifying that the code now handles the inputs correctly. In this case, you wouldn't need to write a positive test. Does that help clarify things? Marc
-
Hi Stephen, Wow, thanks for the great feedback! As to your question, I'll quote this from StackOverflow: Positive Testing - testing the system by giving the valid data. Negative Testing - testing the system by giving the Invalid data. For Example, an application contains a textbox and as per the user's Requirements the textbox should accept only Strings.By providing only String as input data to the textbox & to check whether its working properly or not means it is Positive Testing. If giving the input other than String means it is negative Testing.. Negative testing improves the testing coverage of your application. Using the negative and positive testing approaches together allows you to test your applications with any possible input data (both valid and invalid) and can help you make your application more stable and reliable. So, there's two possibilities: One (code isn't buggy, it just doesn't handle bad inputs correctly): what you want the negative test to ultimately verify is that the code handles in some expected way (an exception, an error code return, a log entry, etc.) the conditions that result in a failure. So you would still keep the negative test after possibly improving the code's error handling, and only change the negative test, adding something like "ExpectedException" or some such verification that the error was handled. Two (code has a bug): The code simply has a bug, and the "negative test" re-creates the issue. Once the bug is fixed, the "negative test" actually becomes a "positive test", verifying that the code now handles the inputs correctly. In this case, you wouldn't need to write a positive test. Does that help clarify things? Marc
Hi Marc Thanks for the reply. I guess my question is more about the process of bug fixing. This is how I think it goes. 1. A bug is reported. 2. Write a test to recreated the bug - this test will pass. 3. Write a test to test how the code whould work - this test will fail. 4. Fix the bug. 5. The first test will now fail as the bug is fixed and the second will pass. Do I keep the first test that recreated the bug? It would be good to keep it as part of the history of how the bug was fixed but I wouldn't want to keep on running a failing test. Rereading a bit of your book again (the Prove a Bug is Recreatable and Prove a Bug is Fixed sections) I might have misunderstood steps 2 and 3. It looks like you might be writing a test to recreate the bug (DivideByZeroException) in your example and then you change the test to test what should happen (ArgumentOutOfRangeException). So it's one test rather than two. Stephen