Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. My Unit Testing e-book is published!

My Unit Testing e-book is published!

Scheduled Pinned Locked Moved The Lounge
rubyphpcomsecuritytesting
68 Posts 30 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Marc Clifton

    [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 Blog

    M Offline
    M Offline
    MacSpudster
    wrote on last edited by
    #47

    Nice 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

    1 Reply Last reply
    0
    • M Marc Clifton

      [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 Blog

      B Offline
      B Offline
      Brisingr Aerowing
      wrote on last edited by
      #48

      Downloaded! Looks good, and congrats!

      Gryphons Are Awesome! ‮Gryphons Are Awesome!‬

      1 Reply Last reply
      0
      • N Nagy Vilmos

        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

        M Offline
        M Offline
        Mark_Wallace
        wrote on last edited by
        #49

        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!

        1 Reply Last reply
        0
        • R Ranjan D

          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

          M Offline
          M Offline
          Mark_Wallace
          wrote on last edited by
          #50

          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!

          R 1 Reply Last reply
          0
          • L lewax00

            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.)

            M Offline
            M Offline
            Mark_Wallace
            wrote on last edited by
            #51

            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!

            L 1 Reply Last reply
            0
            • M Marc Clifton

              [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 Blog

              Kornfeld Eliyahu PeterK Offline
              Kornfeld Eliyahu PeterK Offline
              Kornfeld Eliyahu Peter
              wrote on last edited by
              #52

              Congratulations 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).

              "It never ceases to amaze me that a spacecraft launched in 1977 can be fixed remotely from Earth." ― Brian Cox

              1 Reply Last reply
              0
              • M Marc Clifton

                [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 Blog

                V Offline
                V Offline
                vaghelabhavesh
                wrote on last edited by
                #53

                Congrats, Marc!

                If you are not criticized, you may not be doing much.

                1 Reply Last reply
                0
                • M Marc Clifton

                  [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 Blog

                  R Offline
                  R Offline
                  Rage
                  wrote on last edited by
                  #54

                  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

                  P 1 Reply Last reply
                  0
                  • M Marc Clifton

                    [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 Blog

                    S Offline
                    S Offline
                    sir_download_alot
                    wrote on last edited by
                    #55

                    Thank you very much! Downloaded it and will get into it asap.:thumbsup:

                    1 Reply Last reply
                    0
                    • R Rage

                      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

                      P Offline
                      P Offline
                      Pete OHanlon
                      wrote on last edited by
                      #56

                      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

                      R 1 Reply Last reply
                      0
                      • P Pete OHanlon

                        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

                        R Offline
                        R Offline
                        Rage
                        wrote on last edited by
                        #57

                        OK, I did not realize they were actually not only in the book business. Kind of makes sense now.

                        ~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

                        1 Reply Last reply
                        0
                        • M Marc Clifton

                          [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 Blog

                          S Offline
                          S Offline
                          Simon_Whale
                          wrote on last edited by
                          #58

                          It 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

                          1 Reply Last reply
                          0
                          • M Mark_Wallace

                            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!

                            R Offline
                            R Offline
                            Ranjan D
                            wrote on last edited by
                            #59

                            First mind your language in the forum then you could do anything.

                            Ranjan.D

                            M 1 Reply Last reply
                            0
                            • R Ranjan D

                              First mind your language in the forum then you could do anything.

                              Ranjan.D

                              M Offline
                              M Offline
                              Mark_Wallace
                              wrote on last edited by
                              #60

                              Here's[^] another book you may find interesting.

                              I wanna be a eunuchs developer! Pass me a bread knife!

                              1 Reply Last reply
                              0
                              • M Mark_Wallace

                                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!

                                L Offline
                                L Offline
                                lewax00
                                wrote on last edited by
                                #61

                                I used all 5's, how famous do they think I am now? :rolleyes:

                                1 Reply Last reply
                                0
                                • M Marc Clifton

                                  [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 Blog

                                  R Offline
                                  R Offline
                                  RefugeeFromSlashDot
                                  wrote on last edited by
                                  #62

                                  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.

                                  M 1 Reply Last reply
                                  0
                                  • R RefugeeFromSlashDot

                                    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.

                                    M Offline
                                    M Offline
                                    Marc Clifton
                                    wrote on last edited by
                                    #63

                                    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

                                    Unit Testing Succinctly

                                    1 Reply Last reply
                                    0
                                    • M Marc Clifton

                                      [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 Blog

                                      S Offline
                                      S Offline
                                      SLHenwood
                                      wrote on last edited by
                                      #64

                                      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!!

                                      M 1 Reply Last reply
                                      0
                                      • S SLHenwood

                                        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!!

                                        M Offline
                                        M Offline
                                        Marc Clifton
                                        wrote on last edited by
                                        #65

                                        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

                                        Unit Testing Succinctly

                                        S 1 Reply Last reply
                                        0
                                        • M Marc Clifton

                                          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

                                          Unit Testing Succinctly

                                          S Offline
                                          S Offline
                                          SLHenwood
                                          wrote on last edited by
                                          #66

                                          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

                                          M 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups