Slashdot Mirror


How Can I Make Testing Software More Stimulating?

An anonymous reader writes "I like writing software. In fact, I revel in it. However, one thing has always kept me back from being able to write the best software I possibly can: testing. I consider testing to be the absolute bane of my existence. It is so boring and un-stimulating that I usually skip it entirely, pass the testing off to someone else, or even worse, if I absolutely have to test, I do a very poor job at it. I know I'm not that lazy, as I can spend hours on end writing software, but there's something about testing that makes my mind constantly want to wander off and think about something else. Does anyone have any tips on how I can make non-automated testing a little bit more stimulating so I can at least begin to form a habit of doing so?"

396 comments

  1. sharks with lasers by master_kaos · · Score: 5, Funny

    just imagine if you don't test giant sharks with lasers will attack you.. with that stimulate you enough?

    1. Re:sharks with lasers by arthur.gunn · · Score: 4, Interesting

      Or another way to make it more fun - Godlike!

      http://github.com/gunn/godlike

      Plays a sound when you acheive 100% test passing rate. The default sound is the Unreal Tournament voice: GODLIKE, but you have as other sound options: headshot, killingspree, perfect, supreme_victory, ultrakill, flag_capture, and frag.

    2. Re:sharks with lasers by Anonymous Coward · · Score: 0

      Like the others have said, let thy paths of execution drive a game engine. Let thy flows of execution guide the automatic construction of a game filled with the puzzles of selection leveraging the cyclomatic complexities of thy code. Let thy assertions be the triggers for monsters. Blessed be the leaf nodes of the tree of life in the game.

      This way, the chore of testing can become as fun as playing a FPS.

    3. Re:sharks with lasers by Firehed · · Score: 1

      So I can write 1 test that asserts 1 == 1 and I'm godlike? Awesome!

      Sounds a bit more practical either on the road to achieving 100% code coverage, or once you already have a solid test suite in place.

      --
      How are sites slashdotted when nobody reads TFAs?
    4. Re:sharks with lasers by Anonymous Coward · · Score: 0

      Don't even try progamming with gotos... http://xkcd.com/292/

    5. Re:sharks with lasers by deathplaybanjo · · Score: 1

      maybe you should turn testing into a drinking game. Take a shot every time a bug is found. but seriously, you could outsource testing: http://www.computerweekly.com/Articles/2008/02/15/229432/autistic-people-prove-valuable-in-software-testing.htm

    6. Re:sharks with lasers by Anonymous Coward · · Score: 0

      Do it while seated on a sybian.

    7. Re:sharks with lasers by GarryFre · · Score: 1

      I just have to imagine that if i don't test I'll end up being homeless. Hell, sharks with lasers is nothing compared to that! Never test your own software. You automatically test in such a way as to make it work, you are so used to doing it a certain way you have no idea how another will try it out. Watch someone who doesn't know how to use the software and you'll find all kinds of issues.

      --
      www.Migrainesoft.com - Computer giving you a headache? We can fix that!
    8. Re:sharks with lasers by GarryFre · · Score: 1

      You could also try writing a try catch clause that when you get an error it plays a random video of some cute chick belly dancing. :D

      --
      www.Migrainesoft.com - Computer giving you a headache? We can fix that!
    9. Re:sharks with lasers by tangelogee · · Score: 1

      You could also try writing a try catch clause that when you get an error it plays a random video of some cute chick belly dancing. :D

      But wouldn't that make them want to put more errors in?

    10. Re:sharks with lasers by Anonymous Coward · · Score: 0

      How about putting that extra effort you plan on putting into testing, to write less bugs in the first place?

    11. Re:sharks with lasers by ta+bu+shi+da+yu · · Score: 1

      Who said anything about that being the bug?

      --
      XML is like violence. If it doesn't solve the problem, use more.
    12. Re:sharks with lasers by GarryFre · · Score: 1

      Put more errors where? Into the bellydancer? .... Oh I see, yep, into the code. Still it would surely make testing more stimulating and even add some passion into it ... er too!

      --
      www.Migrainesoft.com - Computer giving you a headache? We can fix that!
    13. Re:sharks with lasers by KlaymenDK · · Score: 1

      What a fun idea! ... just make sure to have the really important tests at the beginning, and the nice-to-have's at the end. Just sayin'.

  2. Too close to the subject... by bgibby9 · · Score: 5, Insightful

    Personally I feel that the dev should never do the testing of their own code as they are too close to the subject to test every angle.

    Sorry this doesn't answer you question :P

    --
    http://www.gibby.net.au
    1. Re:Too close to the subject... by SpinyNorman · · Score: 5, Informative

      The developer should unit test, and the test group should system test. The two are complementary.

      The test group will hopefully test the software in ways you never thought it would be used, but you'll hopefully have tested every code path and end case that only you are aware of from having written it.

      Of course the developer can system test do, or at least contribute test cases.

    2. Re:Too close to the subject... by Chuck_McDevitt · · Score: 4, Insightful

      The developer should never be the ONLY one testing the code. But the developer should absolutely test the code before turning it over to QA. You should be convinced your code works before giving it to someone else to test.

    3. Re:Too close to the subject... by NorbrookC · · Score: 4, Insightful

      When I wrote code, I knew how the program was supposed to work. I made the user interfaces "obvious" - to me. So my "testing" was along the lines of "does this compile properly," and "does it output what I expected it to?" The rude awakening came when I handed off the "finished" product to someone else. All sorts of errors I hadn't thought about handling happened, people were confused by the user interface, and more than one "oops" cropped up. While the "boring" testing you're doing on your code may catch the obvious things, it's always better to have someone else test it.

    4. Re:Too close to the subject... by BunnyClaws · · Score: 1

      Very true, but that would mean the company would have to employ a separate QA team. It seems many companies are too cheap for that.

      --
      "Anything tastes good if you deep fry it."
    5. Re:Too close to the subject... by Z34107 · · Score: 5, Interesting

      That's similar to what my workplace does. You're not really expected to test your own code - it's assumed that if you're handing it to a QAer that all the use cases you could think of are working. Instead, you get at least one round of "programmer QA" where another developer on your team examines your code for correctness and efficiency before handing it off to QA proper.

      The QA folks do mostly UI and workflow testing; they're fairly technical, but they're not coders. If they manage to break anything, you get your code back to fix and the process starts from step one.

      That seems to work pretty well - you're not testing your own code, but trying to break your coworker's code before QA gets a chance to.

      But, how to make testing your own code interesting? I'm not sure about that - there's not much you can do to make unit tests interesting. But people finding your UI baffling suggests a lack of design. Have you ever done a mock-up and demoed it to end-user victims? They make us at least find other developers before we start throwing around hWnds.

      --
      DATABASE WOW WOW
    6. Re:Too close to the subject... by Anonymous Coward · · Score: 1, Interesting

      Over time you learn to find joy in figuring out all the ways your app can go wrong and develop software that can deal with the real world. You sound a bit like a music student who doesn't like practicing their scales. Mastery takes time, like music. You can riff a bit, good for you, but you aren't developing software just for yourself (well, maybe you are). You are writing software for others to enjoy.

    7. Re:Too close to the subject... by FooAtWFU · · Score: 4, Informative

      It's hard to effectively test after you've written code, because it is really boring. So I like the "test driven development" approach. You write the test first (or shortly after some very skeletal code) and when it passes, you know that you're done. (Well, or that you need to write more tests.) The time spent writing tests doubles as time to review and internalize the requirements of the task ahead of you. Benefits of the approach include extensive unit test coverage (which provides cover for you when you're refactoring) and uncovering (or sometimes even anticipating) boatloads of small bugs, long before they even hit QA.

      --
      The World Wide Web is dying. Soon, we shall have only the Internet.
    8. Re:Too close to the subject... by pspahn · · Score: 1

      While working at EA right after high school as a phone jockey, we were occasionally asked to work an hour or two extra to help test upcoming games.

      I was not typically interested, until they wanted testers for the new version of Madden (a favorite of mine at the time). So I went. I found bugs. I documented them thoroughly.

      Part of the deal was that we got a free copy of the game upon release. I took it home, fired it up, and the first thing I did was check for the bugs I found. Every single one of them were still present.

      So, is it a case of companies being too cheap? Or is it a case of companies being too wasteful?

      --
      Someone flopped a steamer in the gene pool.
    9. Re:Too close to the subject... by bgibby9 · · Score: 2, Insightful

      I think my point is that, devs that do unit testing are contributing to the testing overall which is sweet, but come on, who ever makes unit tests that are 'decent' enough to ensure that the testing is done correctly?

      IMHO testing should be done by people who CARE about testing. Devs who do shitty unit testing contribute to the facade that the testing is done and working properly but in reality a shitty unit test could mask other problems.

      At that point you're creating more problems than you are solving!

      --
      http://www.gibby.net.au
    10. Re:Too close to the subject... by Anonymous Coward · · Score: 1, Insightful

      I think many of the (as usual, interesting and informative) replies are skipping over some essential questions. For whom are you writing software? A capitalist company with deep pockets? A non-profit with shallow? A small scale project (meaning, possibly you're the only author/developer) with a limited audience? I'm a so-called computer scientist researcher at a national laboratory. Testing is really important, but it's one of the last things I do. For me, the "test driven development" scenario doesn't work. Why? Because most of the code I write is just playing around with algorithms and ideas, figuring out what works and what doesn't. Example: someone asks me to code up something in OpenMP to do XYZ efficiently, on a platform with 256G memory. My first effort *should* work, but it keeps blowing out memory. So I code versions 2, 3, 4, and 5. In the meantime the requirements have changed, because the person I'm working for is also a scientist, and she's learned something new, and would like slightly different capabilities. I finally get something that appears to work, and then I wrote a few system-level test. My point (see first paragraph and ignore others) is that you haven't given us nearly enough background to coherently answer your question.

    11. Re:Too close to the subject... by Sigma+7 · · Score: 1

      In this case, testing for bugs is meant to get a list of bugs before the game gets on shelves. That way, the developers have a bit extra time to figure out the problems, and release a "timely" patch for the players.

      I heard that AvP2 had a patch before the game was released. They must have been following this concept, but mis-timed the patch release.

    12. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      dmbest thing i heard in a while

    13. Re:Too close to the subject... by pspahn · · Score: 1

      ...or is it? This was a release for a console system that did not have any type of patching capability.

      --
      Someone flopped a steamer in the gene pool.
    14. Re:Too close to the subject... by euphemistic · · Score: 4, Interesting

      You have no idea how much I empathise. My current job is to design and develop websites for what is probably the most computer illiterate demographic on earth. 45-65 year olds working in a non-technical environment, the majority being women. The assumptions and knowledge that have been ingrained into me does not apply to this group of people - this is something I very quickly learnt.

      Dropdown select boxes? Not enough of a visual cue, despite being pretty standard interface elements for decades now. The word online? That's fine. The word offline? Too technical. The phrase 'more options' in the context of a search box? They didn't understand what that meant.

      Everytime I do user testing, my mind is absolutely blown by the number of things I've taken for granted about user interfaces. Swearing usually entails after finding out your design is no longer possible due to one of these underlying assumptions. The moral of the story being, you need someone else to test your work... and if you have no eye for user interface design, find someone who does.

    15. Re:Too close to the subject... by Anonymous Coward · · Score: 1, Insightful

      > Of course the developer can system test do

      Hmm, with that one the force strong is I feel.

      That aside, do you know one can't tickle oneself, don't you?

      I wonder why Mozart composed so much... could hearing his own music be not as pleasing as creating new ones?

    16. Re:Too close to the subject... by tqk · · Score: 3, Funny

      So I like the "test driven development" approach.

      I like the "Ethel" approach (I may have got her name wrong; sorry $ethel).

      The story was there was this great tester lady, and when she found a bug she pounced on you "Ah hah!" like. She really took her job seriously.

      The developers loved her. Go figger.

      No, you can't definitively test your code. That's what users / testers are for. You can only ensure it works, within your limited space of $works. That's where $ethel comes in.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    17. Re:Too close to the subject... by Anonymous Coward · · Score: 1, Interesting

      While its effectively a good idea to have somebody else test your app (even more if it has a UI), I think it is even better to design the UI with the users before actually creating it : Create a mockup of the interface, ask the users how they will use the app, what they do most often, etc, and keep them involved in the development cycle with constant reviews of the system. This way, you won't end up with your finished product, only to find out that your UI needs to be redone completely, and the core logic behind at the same time.

      Just something I've learned in the past few years ... You'll see, not only will you end up with functionnal applications in the end, but you'll also have enthousiast users that will be more than happy to help you or to promote your work.

    18. Re:Too close to the subject... by bertok · · Score: 3, Insightful

      UI design is one of those areas of expertise that is both an "Art" and a "Science" at the same time. Very few people are capable of excelling at both simultaneously. That's why you end up with ugly but capable interfaces, or beautiful but useless interfaces. There are several examples in other industries that are similarly difficult, and the people who do them tend to be highly paid specialists. Plastic surgery comes to mind, for example.

      The computer industry hasn't evolved to quite that level yet, people just don't realize that good UI design is hard, so it often ends up a some random task assigned to whoever is available.

    19. Re:Too close to the subject... by weicco · · Score: 2, Insightful

      Developers shouldn't necessarily participate in unit tests if you follow TDD and CI techniques. Automate your unit tests and the whole build environment and you get regression tests as a bonus.

      I think that developer shouldn't test, at least, his own code. When ever I test my code it magically just works. When I pass it to someone else everything suddenly breaks. If you have to test your own code you need at least dedicated test environment.

      In system tests developers are a big no-no. We are currently running system test for production control system in a real production environment, which is rather complex factory with robots and stuff. Developers tend to cut some corners by doing hot-fixes in the middle of the test and altering data directly into the database. They don't even tell us who did and what and most importantly why all the time! This makes it impossible to write decent bug reports for instance. The worst thing is that they are interfering with the tests when they should be fixing the reported bugs.

      So there's couple of points why I think developer as a tester is (most likely) not a good thing. By hiring couple of tester, who knows their stuff, you really increase the quality of your product.

      --
      You don't know what you don't know.
    20. Re:Too close to the subject... by Goetterdaemmerung · · Score: 2, Insightful

      I am a test engineer (ie electrical/computer engineer with an emphasis in development for test and QA, not the guy who runs equipment) and I write a lot of software. I'm going to answer the question of how to create stable software rather than the mindset that all software needs to be unit or regression tested. This definitely serves an important purpose in any complex system and can't be disregarded, but I see most implementations created to test conditions that will never fail. It's a matter of focusing your testing optimally.

      Correctly implemented code is more a state of mind and what your focus is. I perpetually think of how code can fail and I am also a minimalist. This is an inherent conflict of interest, but it really makes my code stable and reusable by numerous other groups. I've been complimented that my product "just works."

      Creating stable code is a matter of understanding your inputs and performing error and bounds checking as necessary, but not obsessively. The act of implementing test code often creates bugs when the goal is to reduce bugs. Correct error handling is another topic of consideration. Unit and regression testing is important when used in the right places.

      I suppose what I'm getting at is the process of creating good code takes time, effort and skill. Developing testing criteria is similar. If you feel you are wasting your time doing code testing, you aren't focusing your efforts in the right place.

    21. Re:Too close to the subject... by Goetterdaemmerung · · Score: 1

      Chalk this up to learning. I suggest always having someone else use your code before you call it done.

    22. Re:Too close to the subject... by Goetterdaemmerung · · Score: 1

      More than likely it was someone being too risk-adverse, and being defended by someone else defining the risk as low.

    23. Re:Too close to the subject... by Anonymous Coward · · Score: 2, Funny

      No, you can't definitively test your code. That's what users / testers are for.

      Are you serious? Users are there to test your code?!? Do you happen to work for Microsoft?

    24. Re:Too close to the subject... by dgatwood · · Score: 2, Interesting

      A fun bit of psychology: assuming you're from a country where traffic lights follow the usual red-yellow-green pattern, you should make successful tests show the word "OK" in uppercase green. Make unsuccessful tests show the word "fail" or "Fail" in lowercase/mixed-case red. This causes you to feel a sense of satisfaction when tests come up green, and in some subtle way causes you to enjoy creating more tests because things turn green.

      You do, however, have to be careful not to allow yourself to fall into the trap of changing the test result data to match the actual results just to get more green (unless you're sure that the changes really are expected, of course). That requires a great deal of discipline.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    25. Re:Too close to the subject... by Anonymous Coward · · Score: 0, Flamebait

      You're a raging idiot and the world will be a better place when you die.

    26. Re:Too close to the subject... by Firehed · · Score: 3, Insightful

      If your users aren't testing your code, then you don't have users.

      Of course, they shouldn't be the first people to test your code...

      --
      How are sites slashdotted when nobody reads TFAs?
    27. Re:Too close to the subject... by w0mprat · · Score: 1

      Me too. Developers are not good designers, designers are not good developers. While there is always the exception to the rule, generally as a developer you so intimately understand how your creation works and is supposed to, you really cannot consider the position of someone who has never seen your product before and has to decode how it works and what it is capable without reading the source code and only what information you choose to present.

      Thus we reveal the importance of good industrial design, and the need to keep designers and engineers at arms length, to do what each does well. This is why Apple won't die and this is also why this will not be the year of desktop linux any decade soon without a paradigm shift in thinking.

      --
      After logging in slashdot still does not take you back to the page you were on. It's been that way for 20 years.
    28. Re:Too close to the subject... by phantomfive · · Score: 1

      Wow, you must be awesome at making intuitive interfaces now.That's great.

      --
      Qxe4
    29. Re:Too close to the subject... by TBBle · · Score: 1

      UI design is one of those areas of expertise that is both an "Art" and a "Science" at the same time.

      So's the rest of software development, if you're doing it right.

      --
      Paul "TBBle" Hampson
      Paul.Hampson@Pobox.Com
    30. Re:Too close to the subject... by adamofgreyskull · · Score: 1

      Having read that, I want to kill myself. How the hell do you cope? At some point, surely you have to put your foot down and drag them up rather than being dragged down to their level? I'm feeling the same defeated melancholy that I did as a child when I learnt about the Luddites smashing mechanical looms. :(

    31. Re:Too close to the subject... by donscarletti · · Score: 2, Insightful

      Personally I feel that the dev should never do the testing of their own code as they are too close to the subject to test every angle.

      No, the dev should never do final testing, since they have a subconscious incentive to do it badly in order to find less mistakes. However, nobody is as qualified to know the edge cases and weaknesses than the individual who just wrote it. So, the best result comes from giving the developers a large incentive to find problems in their own code before the reviewer gets to it. The system I have seen work very well in the past is to create a culture of accountability, where as part of finding the bug, if nobody owns up to making a mistake, the SVN logs are traced to find the originator of the bug and it filed as part of the bug report. It sounds vindictive, but it is more a learning exercise to find out the weaknesses in our development process. What this does however is give someone a great incentive to test every case before committing, since their mistakes will be known to the whole team soon. Nobody tests better than the original dev, when his pride is on the line.

      However, this system's result is very much dependant on culture. In Australia, people are used to being told "you fucked up mate" the minute that their mistakes are uncovered, in other places, maybe not. The system is very much dependant on individuals expected to set a good example, such as managers and senior staff acknowledging when they themselves make a mistake without prompting.

      --
      When Argumentum ad Hominem falls short, try Argumentum ad Matrem
    32. Re:Too close to the subject... by Mike610544 · · Score: 1

      UI design is one of those areas of expertise that is both an "Art" and a "Science" at the same time.

      The computer industry hasn't evolved to quite that level yet, people just don't realize that good UI design is hard.

      It's hard because people don't approach it right. Unlike most interfaces in any given system, the quality of the one to/from a UI is judged based on millions of years of evolution. Humans are going to love and hate UIs for totally irrational reasons.

      --
      ... also, I can kill you with my brain.
    33. Re:Too close to the subject... by maxwell+demon · · Score: 2, Interesting

      Maybe you should arrange that changing the test cases causes enough work to offset that urge. For example, if you are working on a machine where you have root, you could add a second account for yourself as tester, and use an extremely tedious password for that. Then, when the test cases are ready, log out of that account before using the (readonly from your developer account) test cases. Since it's tedious to change a test case (log in to the test case account, type tedious password), you'll avoid it if it's not necessary (it also is an incentive to get your test cases right before applying them).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    34. Re:Too close to the subject... by maxwell+demon · · Score: 1

      Not in the same way. Your end users will not care about if you indented your code with two spaces, eight spaces, a tab, or whatever. As long as your code works well and is maintainable (so bugs don't creep in in future versions), everything is OK. Users do care about things like where exactly your OK button is placed (and if it is labeled OK or by the action to perform), or what background color you used.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    35. Re:Too close to the subject... by maxwell+demon · · Score: 1

      Me too. Developers are not good designers, designers are not good developers. While there is always the exception to the rule, generally as a developer you so intimately understand how your creation works and is supposed to, you really cannot consider the position of someone who has never seen your product before and has to decode how it works and what it is capable without reading the source code and only what information you choose to present.

      Well, you can consider that position to a large extent, by writing user documentation. If you write user documentation, you'll quickly see where you have troubles to explain something. Of course, the user documentation cannot refer to the source code. Also don't fall into the trap to write a reference manual instead (a reference manual is useful in addition to user documentation, but it cannot replace it).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    36. Re:Too close to the subject... by maxwell+demon · · Score: 1

      About your signature:

      (E*v^2)^2 + (m*c^3)^2 = (E*c)^2

      That's wrong. You can easily see that from the units: The first term has the unit kg^2 m^8/s^8, while the other terms have the unit kg^2 m^6/s^6. You can most easily see it by comparing the first term with the last. What you probably meant is:

      (E*v)^2 + (m*c^3)^2 = (E*c)^2

      Which, using the fact that in relativity E*v = p*c^2, is equivalent to the normal relativistic energy-momentum relation.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    37. Re:Too close to the subject... by GigaplexNZ · · Score: 1

      Users are there to test your code?!? Do you happen to work for Microsoft?

      Linux has a much larger focus of getting users to test the code than any proprietary outfit.

    38. Re:Too close to the subject... by Phloebas · · Score: 2, Insightful

      As a software tester by trade, I find that not a whole lot can make it nearly as interesting or stimulating as actually writing the software in the first place. However, properly written test cases do help. And by properly written I don't just mean exhaustive. Written with intelligence, test cases will test all possible code paths without boring the tester to death repeating the same steps over and over. Also, and I don't know if this will help, but I tend to populate my test cases with test data inspired by popular culture and films. My first person to use is DarthV@deathstar.com.

    39. Re:Too close to the subject... by bgibby9 · · Score: 1

      "Very few people are capable of excelling at both simultaneously. That's why you end up with ugly but capable interfaces, or beautiful but useless interfaces" - you just described me to a tee (ugly but capable not beautiful but useless) :P

      --
      http://www.gibby.net.au
    40. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      >UI design is one of those areas of expertise that is both an "Art" and a "Science" at the same time.

      I agree with you 100%, except for the "science" part.

    41. Re:Too close to the subject... by rawler · · Score: 1

      The original poster explicitly asked specifically for means to make non-automated testing more stimulating. Unit-testing and test-driven development is to my knowledge only about automated testing.

      Also, one must remember that not all types of software can easily be developed by TTD. I.E. hardware drivers, embedded applications, highly stateful systems, etc. Also I tend to find that TTD (any heavy focus on unittesting, really) can force you to design unnecessarily flexible in order to test components individually, which might also not be apt for highly-performant systems due to overhead.

    42. Re:Too close to the subject... by bgibby9 · · Score: 1

      The system I have seen work very well in the past is to create a culture of accountability, where as part of finding the bug, if nobody owns up to making a mistake, the SVN logs are traced to find the originator of the bug and it filed as part of the bug report. It sounds vindictive, but it is more a learning exercise to find out the weaknesses in our development process. What this does however is give someone a great incentive to test every case before committing, since their mistakes will be known to the whole team soon. Nobody tests better than the original dev, when his pride is on the line.

      Definitely seen a lot of this around the traps but the biggest problem with this is (not that this isn't effective) most companies that rely upon this type of accountability rarely ever flip that around and start giving accolades or acknowledgements when the devs are working well.

      If the company handles both the positive and the negative I believe a well balanced dev environment could exist. Unfortunately giving praise is rarely something a dev gets!

      --
      http://www.gibby.net.au
    43. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      The test group will hopefully test the software in ways you never thought it would be used, but you'll hopefully have tested every code path and end case that only you are aware of from having written it.

      Writing code for an unknown purpose is one of the major reasons why testing is necessary at all, and will detect bugs. Which could have easily been avoided.

    44. Re:Too close to the subject... by iangoldby · · Score: 1

      The real reason the developer is poorly-placed to do the testing is that he has (presumably, if he is reasonably competent and motivated) already written and informally-tested the code to catch all the errors and corner cases he can think of.

      So by the nature of the problem, the errors that you are asking the developer to catch are the very errors that haven't even occurred to the developer.

      You might as well ask the question: "List for me all the potential problems you haven't thought of."

    45. Re:Too close to the subject... by Danieljury3 · · Score: 1

      But Linux actually works correctly most of the time.

    46. Re:Too close to the subject... by turkeyfeathers · · Score: 1

      That's why Microsoft lets its end users do all the code testing.

    47. Re:Too close to the subject... by NorbrookC · · Score: 1

      My serious wake-up call came when I had to add the following line to my instruction sheet: "1. Turn on the computer. The switch is located..."

    48. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      People switch off their brains when they follow an instruction sheet.

      Do you follow an instruction sheet when you do anything? My guess is no, even when copious instruction sheets were provided.
      Why not? Because you couldn't possibly come to understand how to use it generally if you were just following the instructions.

      The problem then is either a UI that is not safely explorable, or a training programme that emphasizes to the users that they must, for the love of god please, follow these instructions exactly and without deviation.

    49. Re:Too close to the subject... by RJHelms · · Score: 1

      I am a software tester. I find bugs. I document them thoroughly. When I get a chance to poke around in a release, often most of the bugs I've found are still present.

      Bug-fix development, especially close to release time, is all about triage. That late in the process, the goal isn't to have the software be bug free - far too late for that - but rather to fix the very worst ones. Unfixed bugs either get patched in the future or sit around as known issues, which hopefully the support team is made aware of.

      It's not being cheap, and it's not being wasteful - at a certain point you can't afford to delay the release any further.

    50. Re:Too close to the subject... by SQLGuru · · Score: 3, Insightful

      Yep. Much more fun to try to break someone else's code than it is to trudge back through your own. Pair up with someone (officially or unofficially) and swap code. Your goal is to find more bugs than he does. I've got a reputation for finding "gnats" that I'm quite proud of. Everyone "hates" that I find them, but the code from our group is usually pretty solid because of it; making the whole team look good.

    51. Re:Too close to the subject... by CastrTroy · · Score: 1

      Making code that's maintainable and understandable to other coders is also an art. I've seen a lot of code that worked, but from looking at it, you wouldn't understand how or why, and you couldn't make any changes to it without breaking it, and again, not knowing how or why it broke. Programming has a lot more art to it than most people realize. It's hard to quantify what makes nice code, and you can't just set up a bunch of rules and expect people to produce beautiful code. You say the users don't care about what the code looks like underneath. But they do care about speed, low resource usage, and not crashing. Writing code that can do those things is almost more of an art than a science.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    52. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      Of course - because they succeed in making people actually test it and complain about specific bugs.

    53. Re:Too close to the subject... by damien_kane · · Score: 1

      In Australia, people are used to being told "you fucked up mate" the minute that their mistakes are uncovered, in other places, maybe not. The system is very much dependant on individuals expected to set a good example, such as managers and senior staff acknowledging when they themselves make a mistake without prompting.

      In Canada (and I'm guessing even moreso in the US, when someone screws up and others find it, what I've seen is that everyone escalates. The first thing people do is not to go to the dev (who's in a different department or possibly a different company) and say "fix this", but to go to their boss and say "This is broken, and it's not my fault". As such, way more people get involved than need to be, over a potentially simple (< 5 minute) fix, and everyone ends up pointing fingers and afraid for their jobs.
      This is at least the culture I've seen while developing for corporate clients.

      It also breeds the type of developer as described in Office Space;

      Peter Gibbons: The thing is, Bob, it's not that I'm lazy, it's that I just don't care.
      Bob Porter: Don't... don't care?
      Peter Gibbons: It's a problem of motivation, all right? Now if I work my ass off and Initech ships a few extra units, I don't see another dime, so where's the motivation? And here's something else, Bob: I have eight different bosses right now.
      Bob Slydell: I beg your pardon?
      Peter Gibbons: Eight bosses.
      Bob Slydell: Eight?
      Peter Gibbons: Eight, Bob. So that means that when I make a mistake, I have eight different people coming by to tell me about it. That's my only real motivation is not to be hassled, that and the fear of losing my job. But you know, Bob, that will only make someone work just hard enough not to get fired.

      It's a very real problem.

    54. Re:Too close to the subject... by rwven · · Score: 1

      This is something that any decent developer gets better at with time too. Eventually you start thinking about more and more angles and anticipating all the ways that people will "attempt" to use your software.

      It's just a retraining process where you have to learn to think like yourself...and like someone else.

    55. Re:Too close to the subject... by rwven · · Score: 1

      I wouldn't say "cheap" so much as "ignorant."

      Many companies feel that developers SHOULD be able to completely test their own code, and don't understand why it doesn't work that way. Not that they're correct....I'm just pointing it out.

      Also, often-times effective QA teams are just as big as the dev teams, and employing that many people goes beyond "cheap" and into "prohibitive."

    56. Re:Too close to the subject... by CyberDong · · Score: 2, Insightful

      At the risk of sounding pedantic, I'd suggest that you limit your email testing to either address you own, or else domains like "example.com" that are reserved for testing. Domains like asdf.com are routinely flooded with unsolicited email due to people using it as a bogus domain name. More importantly, by using real domain names while testing software, you risk inadvertently emailing sensitive data to somewhere it should not go!

    57. Re:Too close to the subject... by binkzz · · Score: 1

      Did most of your problems happen to stem from quotes within quotes errors?

      --
      'For we walk by faith, not by sight.' II Corinthians 5:7
    58. Re:Too close to the subject... by lwriemen · · Score: 1

      Hmmm... So instead of writing tests to ensure the code passes, you write code to ensure the tests pass? >;->

    59. Re:Too close to the subject... by dgatwood · · Score: 1

      *shrugs* That depends on what you are maintaining, I suppose.

      I maintain a tool with 328 test cases at the moment, split across five different test suites for different functional units. One of those tests an outside tool. The rest of the test suites test either parts of a parser, the parser as a whole, or code that wraps around the parser and uses its results in a specific way .

      Because of the complexity of a parser, often a change that fixes one problem causes a harmless but technically distinct change in the output of... all of the core parser tests. Anecdotally, I find that about a quarter of the time, test case "regressions" are both expected and harmless. This is not at all unusual for a test of a complex functional unit.

      For example, say I add a new piece of code to catch an edge case somewhere. This code requires adding a new key-value pair to the parser state object to indicate that the parser is doing something special at the moment. The result is that the state object at the end of the test now has an extra key-value pair that is zero for all the test cases (we hope), but the key is still there and wasn't there before.

      In theory, I could add code so that this doesn't generate a test failure, but there's always the possibility that such a change could actually be a sign of a real regression---a code path being followed that was not followed before causing a key-value pair to be added. Similarly, I could go through my code and make sure all variables are preinitialized in the data structure, but because this is written in Perl, I would take a sizable performance hit for the initialization, making that undesirable.

      Thus, if I made it torture to change the test cases, I'd be making my life miserable. I update one or more test case files in any given week. I'd have that long password memorized before very long. Besides, since this is released as open source code, the test results have to go into version control along with the source code, so it wouldn't be very practical to try to create a forced account separation.

      Ultimately, you really have to have self control. Trying to fake self control by adding barriers to doing something might work for some people in some cases, but usually people just incorporate those barriers into their routine and they cease to be barriers.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    60. Re:Too close to the subject... by stewbacca · · Score: 1

      As a training development manager for a software company, I can tell you that you've described a gap in training. There's nothing inherently wrong with your assumptions or design, other than the users need training.

      If your interfaces were non-standard, but you assumed that they were 'easy to figure out' but then your crowd couldn't, then yeah, you are to blame. In this case, though, you've described the text-book "training deficiency" needs analysis.

    61. Re:Too close to the subject... by stewbacca · · Score: 1

      User interface design is not a science, you say? Is that why the University of Texas (and pretty much every other state college in America) grants a BS/MS in Information Science for people who study UI design?

      Don't confuse artsy flash designer guy with an engineer of human interface design. Those are two very different skill sets.

    62. Re:Too close to the subject... by Keith111 · · Score: 1

      Yup, someone else should be testing it instead of the developer (except for unit tests). I personally love testing and test development, but I am a security tester so I always treat testing like a chess match between me and the dev and try to outthink them. It's exciting when I find a really good defect. It's all a mindset though. If you think (like most devs I've met) that testing is all about validating what is supposed to be happening then it will definitely be boring. If you think of it as seeing what you can get away with, or if you're the type of guy that loves to break things to figure out how they work or to use things in ways they're obviously not supposed to be used then testing will be natural and fun.

    63. Re:Too close to the subject... by Grishnakh · · Score: 1

      But Linux code usually works pretty well by the time it gets to the users.

      Now, KDE code is an entirely different matter...

    64. Re:Too close to the subject... by Grishnakh · · Score: 1

      It sounds to me like your job is very badly managed. Assuming you're the developer of the website (i.e., the person who writes the code), you shouldn't be worried about the UI. Some other person, who's an expert in that sort of thing, and is more in-tune with the target user group, should be doing the high-level design. Then, they should be passing that design to you (along with a review session, so you can point out any technical problems or suggestions), which you then implement in code.

      Basically, it sounds like you're doing two different jobs. You should be focusing on one of them.

    65. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      obviously you fucking tool they grant a b.s. because their degree has science requisites. what the fuck do you think the definition of science is, you fucking tool?

    66. Re:Too close to the subject... by EigenHombre · · Score: 1

      I prefer to write code this way, too, and have found, to my surprise, that I find it more fun than not doing it (and not just because of the avoidance of the extra debugging pain). Furthermore, this approach leads to more modularity (un-modular code is much harder to test; google "dependency injection" or see this video). Lastly, if you base your implementation only on the tests your code needs to pass, it tends to be simpler in the end.

      Python's "doctests" provide a handy way to pursue this kind of development; you put your tests directly in a "docstring" (multiline documentation comment) at the beginning of your class or function and specify exactly how it should behave, exactly as if were an interactive python session. You can then test all your edge cases explicitly in the comments for the code, providing not just a regression test but a fairly complete explanation of what the code does. This is one of the many reasons I prefer to develop in Python when possible.

      I guess the reason I find it fun is that you "double your pleasure" of seeing your functionality grow as you iteratively add requirements and satisfy them; AND you are free to refactor ruthlessly because the tests "have your back" -- so the code can be that much better.

      --
      EOT
    67. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      Poor foo@bar.com! The volume of test emails he must receive would /. many a lesser mail server.

    68. Re:Too close to the subject... by euphemistic · · Score: 1

      Theoretically yes. Practically, doesn't end up working that way unless you're working for a company who has and is willing to spend the money actually developing things properly with a dedicated team. Alternately you're working for a company whose primary business is design and development. I work for neither of those categories.

      Fact of the matter is, companies and institutions are expecting more and more from their web people, and my formal education was in both design and development in order to supply that perceived need and make me a more marketable employee.

      The sad part is, my organisation didn't actually know the difference between a web designer and developer (and hence didn't know they needed the latter) until I got here. The upside is I'm now officially "indispensable".

    69. Re:Too close to the subject... by euphemistic · · Score: 1

      Oh, I'm well aware there is a gap in training. But given this isn't a central organisation with one or two sites where all this target audience works -- proper training is impractical at best without a serious funds injection. Which isn't going to happen. If the upper escalons even realised the need for it in the first place. As such, it's up to me to learn how to design for what is truly the lowest common denominator when it comes to the internet. Perhaps it'll make me a better designer in the long run; don't tell me it won't, or you'll crush one of my coping mechanisms.

    70. Re:Too close to the subject... by euphemistic · · Score: 1

      Coping mechanism one: Swearing, bitching, alcohol and cigarettes.

      Coping mechanism two: Losing any emotional investment in your designs. You want to design something awesome? You're probably going to have to do that in your own time unless you're some sort of established artist/designer.

      Coping mechanism three: The pay and the resumé fodder.

      Coping mechanism four: Lying to myself. I'm actually designing and developing for small children instead of mature, responsible, capable adults. Also, I will become a better person and designer through this experience. Like I said, lying.

      You get used to it, I guess.

    71. Re:Too close to the subject... by tqk · · Score: 1

      No, you can't definitively test your code. That's what users / testers are for.

      Are you serious? Users are there to test your code?!? Do you happen to work for Microsoft?

      How long you been in this racket, sonny? "dict definitively".

      BTW, pistols at dawn (or whatever)! I don't do Windows.

      --
      "Tongue tied and twisted, just an Earth bound misfit ..." -- Pink Floyd.
    72. Re:Too close to the subject... by Sigma+7 · · Score: 1

      That's a "triviality" which doesn't prevent the developers from having the "patch after release" mentality. They'll take care of it on the second production run of cartridges FPGA boards.

    73. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      The poster stated that he/she wrote code, and the inference I got was that he was both coding and testing.

      Therefore it may be that the coder is a "one man show".

      That's my case at least. I do nearly all my web development in C#, then I have to do my own testing. Not big enough to share a slice of the pie with employee's, or pay for outside testing.

      If this is the case, one thing that might really motivate him, is that if he causes a client major headaches with poor or half-hartedly tested code, is that he/she might lose their income, reputation, job, etc.

      Larger companies, or at least those who can afford a QA testing employee(s), that's great.
      If not, and you're a one man team, I'd say get off your lazy ass and test your code for your customer. No room for an ivory tower of coders vs. "lowly" testers, in that situation. Either hire someone, or find another field you like, McDonalds is always hiring.

    74. Re:Too close to the subject... by BraksDad · · Score: 1

      ...they are too close to the subject to test every angle....

      Even experieced users testing a minor upgrade will do something unexpected. NEVER test your own work. Even developers testing others software should be frowned upon.

      --
      Slowly waving my hand - "This is not the sig you are looking for."
    75. Re:Too close to the subject... by Mr2cents · · Score: 1

      Her name is Alice, and the "pounce" is the fist of death.

      --
      "It's too bad that stupidity isn't painful." - Anton LaVey
    76. Re:Too close to the subject... by Anonymous Coward · · Score: 0

      I've got a reputation for finding "gnats" that I'm quite proud of. Everyone "hates" that I find them, but the code from our group is usually pretty solid because of it; making the whole team look good.

      The fact you double quoted "gnats" makes me believe they weren't bugs, but just Grammar Nazi errors. I have had QA personnel look at code before and pass it back because the comments were misspelled. No functional change, and any code could understand it correctly.

      I am positive that everyone truly hates them and you for it, if this were the case.

  3. It may not be more stimulating by NEDHead · · Score: 3, Informative

    But you should be writing the test as you write the code

    1. Re:It may not be more stimulating by Joce640k · · Score: 1

      For coded tests (unit testing), sure.

      Sitting and using the program? Not so clear-cut. The programmer usually never does weird stuff or tries to load massive files like the users do.

      --
      No sig today...
    2. Re:It may not be more stimulating by Anonymous Coward · · Score: 2, Interesting

      That's exactly whats wrong with programmers these days. They never try large inputs. Like say, more than 1024 characters for their 1024 character, null terminated string. They never try weird input, such as input containing single quotes. Not so clear cut? I say, very clear cut! Programmers, that can't think of weird or bad stuff to give their program to swallow should not be programmers at all. They don't deserve it. How can they write good and secure code, if they can only ever think of the most straightforward way of using their program.

      That said, it is different from the repetitive and boring clicking through your application from a users point of view. But in that case, do automated user tests (where possible). Where not, get a grip. Force yourself to do boring stuff. Its a skill you need in life anyway. Trying to make things interesting only ends in creating over-engineered solutions.

      I don't say the story submitter is such a person, but a lot of people write "interesting" software, rather than the software that is needed. You can make programming interesting and have fun all day long and in the end, the customer still doesn't have his application running, which should have taken a month to implement. Instead he gets a framework for a framework for a framework to create the application that he really wanted after 12 months.

    3. Re:It may not be more stimulating by rxan · · Score: 1

      I would say no under certain circumstances. When developing you often don't know how a function will work until it's "completed". I'll often write a whole class and only write the tests and documentation once I feel it's completed. When I write both tests and docs while developing I find that I end up rewriting the tests and docs. The functionality has changed from what I first imagined. Of course this wouldn't be too much of a problem with good design.

    4. Re:It may not be more stimulating by Cylix · · Score: 1

      I do that to myself all of the time.

      If I don't write documentation and test hooks while developing the main body I will invariably do a very poor job later. The kicker is that if I change something or throw out some other bits that really means I have also have to destroy or rewrite other sections.

      In a rough guesstimate I would say that most of the code I do write invariably doesn't go through enough change to warrant not performing the other menial tasks. Generally, it works rather well and I find there is an overall gain in quality of the work performed.

      I've also been on the other side of the fence in which I have to ship it and patch it later. Patch it could still be a very long string of re-writes until it is at the point that I envisioned it. (I was always at odds with my manager who wanted something now, but I wanted something awesome later). I was never fond of the hurried approach which implemented a bare minimum of what I had envisioned.

      --
      "You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
    5. Re:It may not be more stimulating by maxwell+demon · · Score: 1

      Well, with "most people" you probably refer to hobbyist programmers, because if you are at a company, you usually are told what to work on. No hobbyist programmers of course tend to focus on interesting stuff. After all, you don't want to pass your time doing boring stuff.

      However, I think the solution to testing is to take enough pride in your code. If you are ashamed of any bug that gets true, then you are very motivated to test your code so that as few bugs as possible remain. If you don't care enough about bugs in your code, the motivation of testing goes down.

      Generally, if it's some code I really care about, I'm also usually sure that it's more or less bug free (of course you never have a guarantee that it's completely bug free). Buggy code is usually caused by one of two cases: (1) It's some code I don't care enough about, or (2) I need to use the code now and cannot afford the time to test a code path which possibly never will be taken anyway (in that case, I write an explicit output "warning: untested code path entered" or similar into that path, so I know if I trigger this code). Of course, for the code I write, generally I'm also the user, and I know that if I put a bug in there, I'm the one getting wrong results. That's certainly a motivation to get it right.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    6. Re:It may not be more stimulating by markkezner · · Score: 1

      You're right in theory, however writing a test suite is not always an option. A common reason for this is when your business software is not in-house, but comes from a vendor. I saw this once on the job. Before every release all the mainframe backend staff were performing QA test scripts against the Java web frontend. This entailed following a Word document, clicking and doing what the document described, and recording results, particularly if anything weird happened. A trained monkey could do it.

      Is this an ideal use of developer time? Not really. We were all bored, and I know my performance suffers when doing boring, mindless repetitive tasks such as this. So I sympathize with the OP. But when the boss tells you to do something, you probably should. I guess you could suggest some kind of front-end automation, but whether or not your boss goes for it is the question.

      I personally would LOVE to see if anyone has any valuable advice for the OP. The best I have come up with is to on my iPod and try to get some momentum that way. It makes it suck just a little bit less.

      --
      Dangerous, sexy, turing complete: Femme Bots
    7. Re:It may not be more stimulating by rwven · · Score: 1

      Some would argue that you should write the tests BEFORE you write the code. :-P

    8. Re:It may not be more stimulating by Abcd1234 · · Score: 1

      But you should be writing the test as you write the code

      It's a good idea, in theory. But I find, typically, when I'm writing a module, I have a tendency to flesh out the design in my head, and then complete it in a single pass while its fresh in my mind. As a general rule, I *hate* multitasking, and interleaving the development of tests with the development of a module means my attention is interrupted.

      But, in the end, it's a personal thing, I think. The important thing is that the tests exists, not when you write them.

    9. Re:It may not be more stimulating by Anonymous Coward · · Score: 0

      Well, with "most people" you probably refer to hobbyist programmers, because if you are at a company, you usually are told what to work on.

      I wish I had meant hobbyist programmers. I actually mostly meant consultants and the like (the bad ones, I know there are good consultants too). Their entire business model is to make people pay a lot of money month after month, so they really don't care if their programmers take longer than it should take. All they care about is a good story to tell the customer on why it is taking longer than expected.

      So, a "real", non-hobbyist programmer, which likes to have fun by creating a framework for a framework for a framework for programming the simple reporting application for the financial department, can easily hide in there, if he knows how to deal with customers demands and questions about the project status or has someone doing that for him.

      I actually am currently employed in a situation, where my boss is the frameworky guy and I desperately try to finish stuff in a simple and easy manner to address the customers real problem. It is not easy though, because my boss is almost always part of the design phase of a feature we have to implement for this application.

  4. You can't? by Anonymous Coward · · Score: 0

    How can I make assembly line work more interesting?

    1. Re:You can't? by Anonymous Coward · · Score: 5, Funny

      Wear a different hat each day.

    2. Re:You can't? by sohp · · Score: 4, Funny

      Wear a different hat each day.

      I put on my robe and wizard hat.

    3. Re:You can't? by Anonymous Coward · · Score: 0

      I used to work in a factory where the machinery was so loud that no one could hear you, and so I often sang my way through third shift. It helps.

    4. Re:You can't? by Anonymous Coward · · Score: 0

      Wear a different hat each day.

      I put on my robe and wizard hat.

      Harrrrrrrrrrrrr

  5. Test Porn Software by Anonymous Coward · · Score: 1, Insightful

    eom

  6. Simple by Anonymous Coward · · Score: 5, Insightful

    Add porn

    1. Re:Simple by Anonymous Coward · · Score: 0

      and electric shocks

    2. Re:Simple by Reziac · · Score: 1

      I was thinking more along the lines of adding electric shocks that temporarily stop when you find a bug. You'll have all sort of "stimulation" to fix your code. :)

      --
      ~REZ~ #43301. Who'd fake being me anyway?
  7. How? by martin-boundary · · Score: 0
    That's easy! Just use a Monte Carlo Method.

    Oh, wait, you meant stimulating? Nevermind...

  8. Write more software by croftj · · Score: 1

    I found that some of my best fun is to write software to test my software. Fortunately, I have written server code for a long time so I either get to write clients to exercise it or hardware device simulators to emulate devices the server talks to.

    Loads of fun! Quite often, more fun than the SW I'm supposed to be writing.

    --
    -- Many men would appreciate a woman's mind more if they could fondle it
  9. logarithms by Anonymous Coward · · Score: 0

    logarithms.

    Start at a penny, and have the payout increase logarithmically for every bug found. Either you will end up with badass software, or you will end up bankrupt. Either way, it will be a fun ride.

    1. Re:logarithms by martin-boundary · · Score: 1
      You've got it upside down, AC (you from OZ or what?). Logarithms increase very *slowly*, log(1000) = 6.9

      It's the exponential that increases fast, exp(10) = 22026.4

  10. Focus your attention elsewhere by afaik_ianal · · Score: 5, Insightful

    Does anyone have any tips on how I can make non-automated testing a little bit more stimulating so I can at least begin to form a habit of doing so?

    No, I don't. I strongly think you're directing your effort the wrong way, and duplicating work if you're spending too much time on non-automated testing.

    Software Engineers are not good at poking holes in their own work, so you should have someone else doing the bulk of that kind of testing anyway. You obviously need to do some cursory testing to avoid wasting someone else's time, but there are much better ways of directing your testing effort.

    Focus on developing unit tests both before and during the development effort. Avoid developing your unit tests after writing the code though - your mind will be tainted with your approach, and you'll miss the obvious stuff. Not only do unit tests reveal bugs, the act of writing them will also help you get interfaces right, and help ensure a better overall design for your code.

    1. Re:Focus your attention elsewhere by Binder · · Score: 1

      This... definitely this. You generally cannot test your own work. You have too many assumption about how it works.

      What developers SHOULD do is unit testing. One way to make this more bearable is to "code to the test". First create the unit tests which will prove your code does what it is supposed to.. then code until the tests pass. It's more like a game this way.

    2. Re:Focus your attention elsewhere by Anonymous Coward · · Score: 0

      I hear this claim that "Software Engineers are not good at [testing] [desk checking] their own code" and I just don't buy it. Put the word "lazy or egotistical" at the start of the sentence, and I'll agree with it.

      Once I was managing a project where until you had learned how to do a lot of stuff to get your software onto the target machine, you couldn't test it even though you could easily compile it.

      I gave a short term, highly paid, experienced contractor from a boutique job shop we had had success with previously a rather mundane programming task. The API was very well defined and I gave him a lot of ongoing guidance on things like priorities (space vs. time etc) as well as some suggestions on some implementation approaches. As I recall, the finished code was about 1000 lines.

      When the contractor came to me and said "Okay, how do I test this", I looked at him and asked "Did you desk check it as I requested?" to which he replied "Oh yes". So since it was the end of the day anyway, I just took his listing (this was a few years ago!) and reviewed it at home while eating dinner or something. I found six very clear bugs that could be hit in normal use with proper and expected inputs.

      The next day he came into my office and asked "So, did you find any bugs?" to which I replied "Yes, six". He then inquired "What were they?" at which time I just looked at him, shook my head slowly, and said politely "You find them". Note that I probably would not have done it quite this way with a regular employee but I had already decided that I wasn't to going to renew his contract so I was willing to use him as a guinea pig.

      He went away for most of the day and came back at the end of the day and declared brightly "Okay, I found all six of them" (I esp. noticed his use of the word "them" -- I never claimed there were only six bugs, just that I had found six -- I never even told him that if I had read past the first 200 lines). We went through the bugs he found and he had found six okay -- however only five of them were ones I had found, he had missed one I found and I had missed one he found.

      If I ever had this to do over, I would tell him there were eight bugs (even though I had only found six) -- I'll bet there's still a bug lurking in that code that he would have found if I had done so.

      Anyway, the moral of the story is, testing or reviewing your own code is hard, but unless you're so egotistical to think you don't write code with bugs or so lazy as to not be bothered, it can be done IFF management gives developers time to do so.

      I've always been pretty good at reviewing (for bugs, not style) and testing my own code -- but that's because I know I make mistakes and I don't find some bugs I just assume I missed them and need to look harder! And, yes, it is boring!

    3. Re:Focus your attention elsewhere by afaik_ianal · · Score: 1

      We're talking about professional software engineering here, not hiring some guy to "write a program" for you.

      That you didn't have any processes in place for quality assurance says a lot more than anything else in your little anecdote.

      I'm not saying we shouldn't test. I'm certainly not saying our code shouldn't be independently reviewed. I am saying that having your programmer run manual tests of his code after writing it is a waste of his time and your money. He should have tested it before he wrote it!

      We can't possibly test as well as a professional tester. We develop systems based on our imperfect understanding of the requirements. There are massive classes of bugs that we simply can't find, otherwise we wouldn't have written it like that to begin with.

    4. Re:Focus your attention elsewhere by phantomfive · · Score: 1

      Unit tests are nice for some kind of programming, they rock at compiler testing and they are typically good for testing network APIs, but they are horrible for other kinds of programming. They really suck at test GUIs or anything visual, and they aren't so good for testing drivers. They also can't catch every type of bug. Since he is not an idiot, and he specifically mentioned non-automated testing, it would make sense to assume he's talking about the kind of testing unit tests don't do well.

      Expecting unit tests to catch every kind of bug is as dumb as not writing unit tests at all.

      --
      Qxe4
    5. Re:Focus your attention elsewhere by dcollins · · Score: 1

      "Software Engineers are not good at poking holes in their own work..."

      This kind of statement perplexes me. My expectation would be that engineers are scientifically-minded and skeptical and desire good evidence that something is working.

      At the last game-software job I had (now 10 years back), I was really troubled when I submitted a piece of work and the senior engineer came back pretty much astounded that, "It works, it doesn't have any bugs, and I can't even break it!". That was around the time I knew the job was not for me long-term.

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    6. Re:Focus your attention elsewhere by ^Bobby^ · · Score: 2, Insightful

      My expectation would be that engineers are scientifically-minded and skeptical

      This is actually the problem; being scientifically minded means you tend to miss the bugs that are exposed by someone doing something that makes you go 'what were they thinking to try that?

    7. Re:Focus your attention elsewhere by dcollins · · Score: 1

      "This is actually the problem; being scientifically minded means you tend to miss the bugs that are exposed by someone doing something that makes you go 'what were they thinking to try that?"

      That doesn't sound scientific-as-in-inquisitive to me, that just sounds like narrow-field-of-vision.

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
    8. Re:Focus your attention elsewhere by greed · · Score: 1

      A lot of people called "software engineers" have absolutely no background in engineering. They're really programmers who've had a chunk of program design dumped on them.

      Engineering is all about what you can use, and how it can go wrong. If you've got an engineer who looks at you funny when you ask about "failure modes", you need a better engineer.

      That being said, you'll probably have noticed a recurring theme is that the person who knows how something is supposed to work isn't very good at putting bad data into it. I've got a background in engineering and my first full-time job was in testing, and I'm fairly good at it; especially coming up with large swathes of "negative" tests (ones that should fail).

      But, in general, the developer should show the code works. An independent test group, using the specs rather than the implementation, should try and make it fail.

      Maybe that's the best advice I can give: you're trying to make it fail. If you're testing with a "this will work" mentality, you're looking at it the wrong way.

      Nothing quite as much fun as looking at some ridiculous input that will never be valid in a million years and the program doesn't trap it... "why did that work?! what could it even _mean_?!"

  11. Stimulating? by david@ecsd.com · · Score: 1
    Bring some porn to work and masturbate.

    Duh.

    1. Re:Stimulating? by maxwell+demon · · Score: 1

      Well, if you only masturbate each time you find a bug, it may even improve your testing.
      However, it may degrade the quality of programming.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  12. More bugs by MichaelSmith · · Score: 3, Funny

    Clearly there aren't enough bugs in the software you are testing. As an experienced C programmer I can help fix this problem...

    1. Re:More bugs by croftj · · Score: 4, Funny

      Let me guess, you can do that by writing your code in java or C#

      --
      -- Many men would appreciate a woman's mind more if they could fondle it
    2. Re:More bugs by oldhack · · Score: 1

      I can vouch for C programmers. They are experts - you can't beat them.

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    3. Re:More bugs by Anonymous Coward · · Score: 0

      at least in Java you have a chance at getting provably full code coverage in your unit tests (using JUnit to test, and something like Emma to show your coverage)

      In C, you just pass around void pointers that you cast to functions or data as you like, so it's hard to tell if you sanitized all your void pointer pointer inputs.

  13. BDD by Dishwasha · · Score: 3, Informative

    First off, don't do non-automated testing. It's unnecessary. Do Behavior Driven Development with Cucumber http://cukes.info./ It's massively more fun than unit testing.

    1. Re:BDD by Anonymous Coward · · Score: 0

      I was actually going to reply with this exact comment.. so I'll just second it.

      I've been notoriously bad at testing in the past, and cucumber really hit a specific spot for me. All those times when I'd work on something and then double check that it still works is basically wrapped up in BDD. It's also pretty helpful to consider how I want to implement the feature by writing it out first. I sometimes deviate from that as I'm actually doing it, but it's been the thing I've put testing in a different light for me. It's not all perfect, but it's pretty great. I guess I also like that it documents things pretty clearly too.

    2. Re:BDD by maxwell+demon · · Score: 1

      If I understand the web site correctly, it only works with Ruby. Which is great if you happen to develop Ruby programs, but doesn't help you a bit if you develop in any other language.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    3. Re:BDD by Dishwasha · · Score: 1

      Check out Capybara http://github.com/jnicklas/capybara complemented with the selenium webdriver. You can locally or remotely test any website in any flavor of web browser (great for that compatibility testing). Also the Cucumber team is doing a lot to make it work with Java, .Net, and a myriad of other languages.

    4. Re:BDD by xiong.chiamiov · · Score: 1

      Do Behavior Driven Development with Cucumber http://cukes.info./

      ... or one of the many non-Ruby tools.

  14. write tests as you code by largesnike · · Score: 1

    I know, I know, TDD is talked about ad nauseum, but I often find that when I've just written some logic, and I'm writing some tests for it, that I pick up quite a few bugs, and actually learn more about what I'm really writing.

    Even so, some parts can still be boring, but at least, if you break it up and do it test-driven then you're not faced with writing 47-odd tests in one big lump, after you've written heaps of logic.

    --
    "Laugh while you can a-monkey boy!" - Dr Emilio Lizardo
    1. Re:write tests as you code by Anonymous Coward · · Score: 0

      I don't like sounding pedantic, but if you're doing true Test Driven Development then you should be writing your tests BEFORE you write your implementation code. The core concept is that since you know what your code should do before you start writing it, then you should write the tests first and then code to the tests.

  15. attention by zeroRenegade · · Score: 1

    people in the front rows may be exposed to some splash effects. some viewer experiences involve heart attacks, and conjunctivitis. (http://en.wikipedia.org/wiki/Conjunctivitis)

    1. Re:attention by zeroRenegade · · Score: 1

      wrong post... argh...

  16. go functional by Anonymous Coward · · Score: 0

    learn functional programming - scala or even haskell - kill unwanted side effects before they happen

  17. Self questioning by d3jake · · Score: 1

    I've only done hobby programming for a couple of years, but if you find that testing isn't exactly your cup of dried leaves steeped in hot water, I would suggest viewing it as a challenge: If you love writing code, then it should follow that you like writing good code. The only way you can determine that is by trying to break said code. Sadly I don't usually need any additional helping breaking my code, as it often breaks itself, but by shirting it into a challenge against yourself, your code and motivation will benefit.

  18. Go work for a porn website by PFactor · · Score: 0, Offtopic

    You'll get all the stimulation you want from your "testing".

    --
    Don't believe anything I say. I crash test crack pipes for a living.
    1. Re:Go work for a porn website by hedronist · · Score: 5, Funny

      Actually it's just the opposite. It's like working in a candy factory and quickly getting completely bored/sick of the candy. I did one site where we were having problems with certain videos in different browsers and I swear to God that there was one clip of some really hot anal action that I got *really* sick of. After about the 3rd time I would watch about 5 seconds of it, see if the problem was manifesting, and then be back in the editor.

      Now I watch whale documentaries to get my jollies. ... Wait! What?

    2. Re:Go work for a porn website by Anonymous Coward · · Score: 0

      Whale documentaries? I scanned before slowing to actually read. For a moment there, I thought you "wrote documentation" for jollies. Then I realized...no one is THAT perverted.

  19. Automate your tests by masouds · · Score: 1

    You need to write tests for your code so that testing can be fully automated, with the issuing of one command. If there are no ways to automate your testing, you need to write software that allows you to do that, and then use it. If it is useful enough, you can even sell that.

    --
    This .sig was intentionaly left blank.
  20. QA sucks. by Godskitchen · · Score: 1

    Get used to it, comrade.

    1. Re:QA sucks. by AnonymousClown · · Score: 1
      Oh, I wish they did! There were some hotties there!

      Oh, that's not what you meant. Never mind.

      --
      RIP America

      July 4, 1776 - September 11, 2001

    2. Re:QA sucks. by NegativeK · · Score: 1

      That's why we're paid. QAs: Doing the suck for you.

      --
      This statement is false.
  21. It's just who you are. by ddt · · Score: 1

    I think it's just who you are, and you're probably wise to partner with others.

    I'm quite the opposite. I like nothing better than to write a great benchmark, because I'm an optimization fiend. Also love to write a correctness testing benchmark, because it lets me check my optimizations for accuracy. However, I can't stand most high-level coding work, because I get horribly distracted. My brain gets distracted by what's happening on the metal when it doesn't matter at all, and then I get really bent out of shape about the aesthetics of the code, which for most jobs where you need to get things done doesn't matter much until you have something working, but for whatever reason, it's just hard for me to enjoy it.

  22. A few challenges by spaceman375 · · Score: 1
    First of all, try to break what you just wrote. Not hack it; just break it. Lean on the control key while typing input, feed it binary files for text & data. Run it in a VM on the slowest hardware you have. Make a game of trying to break your own code.

    Then go back and do it again, but this time play black-hat hacker. Get creative rather than methodical. Try sql statements everywhere that might touch a database. Hammer every communication method it uses with denial of service abuse and then crafty mis-information that only you know enough to design.

    The point is, make a game of it and you'll enjoy it. You could always trade code with a co-worker and keep score of how many bugs you each find in eachother's code.

    --
    On the one hand you take life too seriously, and on the other, you do not take playful existence seriously enough. Seth
    1. Re:A few challenges by DeadPixels · · Score: 1

      This is honestly a pretty fun way to test, in my opinion. I take it as a challenge to see if I can manage to break anything. A good place to start is to look for any assumptions you've made - that a user is going to enter a number in this field, for example - and try attacking those. I also like the idea of trading code, though I haven't tried it myself. Having another pair of eyes looking over your work is always a good thing.

  23. good question by darjen · · Score: 1

    I have the same problem. If you figure it out please let me know.

  24. You need to get into Test Driven Development by CodeBuster · · Score: 4, Informative

    Have you given Test Driven Development and NUnit a try? If you haven't heard of these things or taken one of the TDD frameworks out for a test drive then you owe it to yourself to invest some time. The software industry in general and the .NET community in particular is moving towards automated unit testing and Continuous Integration. You should get on this train too.

    1. Re:You need to get into Test Driven Development by carlzum · · Score: 1

      I agree, developing tests after the fact is boring and forces you to remember what you did. When you create unit tests during the creative, problem solving phase it's much less of a chore. The end result is much easier to maintain too.

    2. Re:You need to get into Test Driven Development by decipher_saint · · Score: 1

      I agree 100%

      Definitely get into TDD and do some reading on "inversion of control" it really makes you think about how rigid your classes should or shouldn't be. I wish I had some good links handy on both subjects.

      I got into both a few years ago at about the same time it was one of those "eureka" moments for me.

      I actually look forward to writing the test cases first, it points out all the design flaws I overlooked on paper or in prototyping.

      --
      crazy dynamite monkey
    3. Re:You need to get into Test Driven Development by CodeBuster · · Score: 1

      and do some reading on "inversion of control"

      Yeah, I forgot to mention that one. Inversion of Control is among the more useful concepts to come out of the software development community in recent years and it goes hand-in-hand with TDD and with modular programming and loose coupling with respect to software development in general. Personally, I use and like the Structure Map IoC framework (I especially like the assembly scanning and convention definition features), but Castle Windsor is also popular and even the Microsoft entry (late as usual) into this field, Unity, is fairly decent and getting better. The only caution I would give about using IoC is to take time to properly understand it before using it (it tends to be a bit of a mind-bender or an inversion, if you'll pardon the pun, the first time through) and learn to recognize where the boundaries are in your libraries and where IoC can help you achieve the goals of modularity and loose coupling.

    4. Re:You need to get into Test Driven Development by PrecambrianRabbit · · Score: 1

      When you're doing test-driven development, how do you avoid coding too narrowly to the tests? At some point you surely must think about general principles; how does that fit into the framework?

    5. Re:You need to get into Test Driven Development by CodeBuster · · Score: 1

      As also mentioned on this thread, TDD goes hand-in-hand with concepts like Inversion of Control, Dependency Injection and Design by Contract. The goal is to develop loosely coupled yet cohesive software framework which enforces generic constraints through contracts, generally implemented as interfaces, and upon which calling code can rely for correctness. The above mentioned techniques, among others, allow us to abstract and generalize as much of the software stack as possible, reducing specific program instances to little more than their minimal differential implementations; with clear separation of concerns, scalability and testability. A framework or library which supports these goals is sometimes said to be "injectable" in that it can receive injections of concrete types at runtime which satisfy the abstract contracts (defined by the interfaces) and can itself be injected into other code. The point is that the code into which the concrete type is injected neither knows nor cares which actual type is injected at runtime. The only thing that matters is the contract (i.e. the interface is implemented). The unit tests help ensure the correctness of various concrete contract implementations prior to use.

    6. Re:You need to get into Test Driven Development by eulernet · · Score: 1

      Other important points:

      - pair-commiting will improve your code even more (code as you wish, but always commit with another coder, a lot of new ideas will emerge that way)
      - run the tests continuously on a computer with a big screen, and display the current status of the build (if possible with noise when the build fails)
      - try to use BDD, so the product management will learn the joy of implementing tests
      - writing Unit Tests will save you the time to write documentation on your code

    7. Re:You need to get into Test Driven Development by turkeyfish · · Score: 1

      I agree. I find writing good object-oriented-code difficult. This problem has led me to looking for a strong multi-language, multi-platform, development API that integrates automated unit testing. I'm finding that for Java at least the Netbeans API is very good and has excellent, yet loose coupling making it relatively easy to implement JUnit tests and test suites. I understand that Eclipse does the same thing, but I have not used it, although I have seen it used. The ins and outs of JUnit are well covered in Tachiev et al., 2010. JUnit in Action published by Manning. I am wading through this now, and it is an epiphany. Clearly, there is a lot to doing this right and there is a significant learning curve. Nonetheless, it looks as if, in the long run, mastering this will lead to higher productivity and sturdier and cleaner code.

      The Netbeans API is particular good in that it also provides automation to keep Javadocs and Unit tests co-evolving as the application develops. If you are like me and can only program for brief stints with periods of hiatus that are needed to do other things, this can be a big help in staying organized. Whether this extends to fully continuous integrated builds, I'm not sure, but it does move in that direction with strong support for Ant and Maven. The important thing, which I am just beginning to learn is that learning how to set up automated tests is the key, so that the developer doesn't need to spend unnecessary time montioring/debugging code, particularly for growing applications, where original expectations, designs, and dependencies change during the development process.

      IMHO Netbeans would be stronger if it also included better integration between unit testing, documentation, and UML, but sadly the UML component was jettisoned after about ver. 6.4 (although one can buy a sophisticated, but expensive plugin with substantial capability for diagramming and code-generation and reverse engineering). Recently, Oracle has produce a UML modeler as part of a free port of its JDevelopment Studio that its demo seems to suggest it can do. I've downloaded the free version and hope to see how it works, hopefully in close conjunction with Netbeans. This could make a developer's life a lot easier when it comes to automating testing. Anyway, you might want to look into these tools.

      Hopefully, open source developers will extend this kind of interaction to help generate more bullet-proof code that must navigate often difficult to predict dependencies as it grows. This is one of the great strengths of the Netbeans API, as it maintains explicit control of how messages can be passed between modules, thereby allowing multi-developer, multi-location, multi-language, and multi-version coding, wherein the various parts of the program life-cycle can be distributed in both time and space and in highly dynamic and heterogeneous hardware/software environments, while still permitting other API's and plugins to be added on top of the underlying 5 basic modules. If you know anything about neurophysiology, it is easy to see why this would make for strong modular communications. Neurons too have numerous, yet tightly coupled messaging systems that direct activity among and between tracts.

      One caveat: beware of the fact that there is a lot of proselytizing about the virtues of Test-Driven-Development that are long on platitudes and short on specifics. Although these do contains some good abstract advice (ie TestDriven by Koskela also published by Manning), they can often be poor when it comes to explaining exactly how such tests should be designed and implemented. The same hold true for the on-line blog world and "online press". Obviously, a lot depends on what experience you bring to the table and your specific needs.

    8. Re:You need to get into Test Driven Development by jgrahn · · Score: 1

      As also mentioned on this thread, TDD goes hand-in-hand with concepts like Inversion of Control, Dependency Injection and Design by Contract. The goal is to develop loosely coupled yet cohesive software framework which enforces generic constraints through contracts, generally implemented as interfaces, and upon which calling code can rely for correctness. The above mentioned techniques, among others, allow us to abstract and generalize as much of the software stack as possible, reducing specific program instances to little more than their minimal differential implementations; with clear separation of concerns, scalability and testability.

      That reads to me as: "The above mentioned techniques allow us to spend our effort creating a generic fantasy land, instead of concentrating on the problem at hand".

      Oh, I'm sure it's a good thing in some cases. And if you can raise the abstraction level one notch without losing touch with the problem at hand, do it. But I've gotten burned hard too many times cleaning up failed attempts at overly general code. People build dream castles and get lost in them.

  25. Reward yourself! by LividBovine · · Score: 2, Funny

    Allow yourself one porn^H^H^H^H^H download per bug found. Not only will this stimulate you, but you will be able to test with one hand.^H tied behind your back.

  26. One word by Anonymous Coward · · Score: 1, Insightful

    tele-dildonics hooked to the exception mechanism.

    1. Re:One word by Lord_of_the_nerf · · Score: 2, Funny

      One word: Fluffers

    2. Re:One word by CrashandDie · · Score: 1

      "One word"

      So, how badly did you fail at math, exactly?

    3. Re:One word by Reziac · · Score: 1

      Don't worry, it's just another failed QA test. ;)

      --
      ~REZ~ #43301. Who'd fake being me anyway?
  27. Change hat to a darker color. by Short+Circuit · · Score: 5, Interesting

    Imagine that the guy who wrote the code is the royal, snobbish jerk who always thinks his code is better than anything else. Realize that, at some point, he's going to make a change that will change the way the component behaves, and will yet again break your code that uses that component. Don't let him get away with it. Let your fingers pound as you write code to check for the smallest fault. Let your lips curl in a snarl as you feed it poisoned data. Relish in the thought that you can catch him in every slightest mistake. Think of all those things that might not think to catch in the future. Not just the important stuff that defines the role of the component, but those little things that some people might call "implementation details".

    Also remember that he's the same jerk who wrote those unit tests that screwed you over all those times. Don't just pay it back; pay it forward.

    1. Re:Change hat to a darker color. by nacturation · · Score: 1

      Imagine that the guy who wrote the code is the royal, snobbish jerk who always thinks his code is better than anything else. Don't let him get away with it. Also remember that he's the same jerk who wrote those unit tests that screwed you over all those times. Don't just pay it back; pay it forward.

      And when you finally catch up with this righteous bastard who wrote such lousy code, be sure to pound his goddamn skull in with a tire iron.

      --
      Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
    2. Re:Change hat to a darker color. by jmcharry · · Score: 2, Interesting

      Not bad, but pair with somebody. Test each others code, balance off the bugs, and pay for the difference in beers, or some other appropriate currency. Just gloating might do.

    3. Re:Change hat to a darker color. by dcollins · · Score: 1

      "Imagine that the guy who wrote the code is the royal, snobbish jerk who always thinks his code is better than anything else. Realize that, at some point, he's going to make a change that will change the way the component behaves, and will yet again break your code that uses that component. Don't let him get away with it. Let your fingers pound as you write code to check for the smallest fault. Let your lips curl in a snarl as you feed it poisoned data. Relish in the thought that you can catch him in every slightest mistake..."

      It's Science!

      --
      We know where leadership by an anti-intellectual "strongman" who scapegoats minorities and likes boisterous rallies goes
  28. Do it the Microsoft way. by amanicdroid · · Score: 1

    Do it like the pros: release the software and issue patches.
    The bug reports will be great fun.

    I hit the save button and the program crashed. Thanks a lot asslick."

  29. Don't test manually by Scareduck · · Score: 2, Informative

    If you're not testing your code, you're not doing your job. Find ways to automate your tests.

    --

    Dog is my co-pilot.

    1. Re:Don't test manually by tepples · · Score: 1

      Find ways to automate your tests.

      Some things aren't easily repeatable. How does one automate playing through a level of a video game after a level designer has moved objects in the level, or if enemy NPCs use random numbers to determine how to attack the player character?

    2. Re:Don't test manually by jasampler · · Score: 0

      That's right. You have to run your program to see if it does what you coded (nobody's perfect). To run certain parts you must even write helping code, little programs that you can leave along with the main source code. Those are tests. You should run every critical verification using an external code that you (or everyone else) can run again to see if it keep working when the code changes.

    3. Re:Don't test manually by Tim+C · · Score: 1

      I agree, but I would take it further. If you're not testing your code you're not doing your job, but if you're the only one testing your application you are doing someone else's job, and doing it poorly.

      Developers should (I would almost say must) write unit tests, which should be automated. However system and integration testing beyond "yeah, it seems to work ok" should be performed by someone else. You're too close to the code to perform "end user" type testing.

  30. Only write software you use yourself each day. by Anonymous Coward · · Score: 0

    I've been doing this for the past thirty years, but I admit the previous ten years was hell.

  31. Test Driven Development by Giant+Electronic+Bra · · Score: 1

    TDD is the best approach. Write unit tests BEFORE you write the code. First of all you'll be motivated to get it done. Second of all you'll write MUCH more testable code and thus spend a lot less time on testing. In the long run you will actually get to write more fun stuff than if you didn't do it this way.

    Honestly, not all testing will ever be fun, but there's really no point to writing bad broken software and untested software is invariably bad software. Honestly though whatever organization you're working in should be insisting on this kind of process anyway. First thing I do when I set up a team is get the unit testing process up and running.

    --
    "Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
  32. Your asking the impossible by Kitkoan · · Score: 1

    Its like asking "How is the most stimulating way to self file my taxes?" The answer is most likely there isn't unless you're of the rare few that do enjoy doing just that. Easiest way is to just hand it to someone else and get creative in forms of payment, maybe booze or some movie/music/game they want for doing it (everyone is different).

    --
    Attention... all grammer nazi"s! Is they're anything; wrong with: my post,
  33. Unit testing achievements by hansamurai · · Score: 5, Funny

    http://exogen.github.com/nose-achievements/

    *
    Instant Feedback
    A suite of at least 50 tests takes less than a second to run.
    *
    Coffee Break
    The suite takes between 5 and 15 minutes to run.
    *
    Take a Walk
    The suite takes between 15 and 60 minutes to run.
    *
    Take a Nap
    The suite takes between 1 and 5 hours to run.
    *
    Take a Vacation
    The suite takes at least 3 days to run.
    *

    Coming soon!
    Anticipation
    One test in a suite of at least 10 is slow, and all the rest pass.

    Time

    *
    Night Shift
    Make a failing suite pass between midnight and 5am.
    *
    Punctuality
    Make a failing suite pass at 9am (give or take a minute).

    Failure

    *
    Complete Failure
    All tests in a suite of 50 to 999 fail.
    *
    Epic Fail
    All tests in a suite of at least 1,000 fail.
    *
    Minor Letdown
    All tests in a suite of 10 to 99 pass...except the last.
    *
    Major Letdown
    All tests in a suite of at least 100 pass...except the last.
    *
    Happy Ending
    All tests in a suite of at least 10 fail...except the last.
    *

    Coming soon!
    Heisenbug
    Make a passing suite fail without changing anything.

    Errors

    *
    Sausage Fingers
    Cause at least 2 distinct syntax errors in a single run.
    *
    To Understand Recursion
    Exceed the maximum recursion depth.
    *

    Coming soon!
    To Err is Human
    Cause all tests in a suite of at least 50 to fail with a single error.

    Size

    *
    My God, It’s Full of Dots
    The suite has at least 2,001 passing tests.

    Frequency

    *

    Coming soon!
    OCD
    Run the suite at least 5 times in the spa

  34. recreate the stanley milgram experiment by circletimessquare · · Score: 2, Funny

    http://en.wikipedia.org/wiki/Milgram_experiment

    except for you, the shocks will be real, and you will be both tester and test subject

    every time your code throws an exception, make it so you receive a small, incrementally growing shock

    after about 10 or 20 bugs, and the growing voltage of the shocks, you should be breathing heavily and sweating and be focused like a laser on ensuring the integrity of your code

    --
    intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
  35. The bad parts of coding by Kurofuneparry · · Score: 1

    I hate going over old, poorly commented code.

    I hate testing code and looking for problems.

    I hate debugging inexplicable errors.

    What to these all have in common? If you write good, smart code with the right tools you'll not have to do as much of them. Others here have mentioned automated testing and I think that's great. I am no big expert, but improving the way I write code and the tools I write it with reduces the onerous parts mentioned above. I don't do all my projects with automated testing (I probably should) but it helps when you have it.

    So, as far as it works for me, I would look first at the way that you program (big bites vs tiny bites, languages, structure) before I would look at the way you test. Testing always sucks. Then again, I'm an idiot.....

    --
    ...... and idiots rule the world....
  36. Way to help the pain = Write a test harness! by Anonymous Coward · · Score: 0

    If you write a test harness, you know that the code is testable.
    Then you can write tests OR you can hand it off to someone else to write tests.
    Either way, the pain factor goes down as the time to develop tests after the harness is developed goes way down = less pain.

    I am a Test Professional of 11yr.

  37. Read The Daily WTF by Red+Storm · · Score: 2, Insightful

    http://thedailywtf.com/Default.aspx

    The threat that one day someone will post your code and or screen shots from your programs for everyone to ridicule should be motivation to either improve or write worse code.

    --
    ---- Fight to protect your right to keep and arm bears! ummmm... ya I think that's right....
    1. Re:Read The Daily WTF by TBBle · · Score: 1

      Funnily enough, The Daily WTF has a posting up about why passing your test cases isn't always sufficient.

      Role-based Canary

      --
      Paul "TBBle" Hampson
      Paul.Hampson@Pobox.Com
  38. Simple by crf00 · · Score: 1

    Create some bugs in the unit test and hunt them down!

  39. That's why we have automated tests by Jadeus · · Score: 1

    Before becoming test-driven I would manually test my stuff, using my judgement to determine the scope of what I'd test. When I became test-driven I saw how writing those tests was like writing the code on the other side of the coin. The design is so clear and beautiful when it's exercised in a suite of tests. I enjoy writing (unit/transactional) tests because it proves how awesome my code is, and is much better at keeping it that way than I am while I'm busy building something more interesting.

    --
    --- Bigger bits, softer blocks, tighter ASCII.
    1. Re:That's why we have automated tests by maxwell+demon · · Score: 1

      However, how do you test your tests? I think you should write tests for your tests first, so that you know your tests are bug free. Of course, don't forget to test those test tests.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    2. Re:That's why we have automated tests by Jadeus · · Score: 1

      A good practice is to reverse assertions while you're writing a test. If x is supposed to be false then assert that it's true. The test should fail, but sometimes it doesn't and you realize that your test has a bug or that you've already found a bug in the production code.

      --
      --- Bigger bits, softer blocks, tighter ASCII.
  40. Make it Automated by n2rjt · · Score: 1

    Write a test framework that lets you expand the scope of automated testing.

  41. well it seems obvious... by fade · · Score: 1

    Build better bugs, experience more fruitful testing.

  42. Curse of the programmer by FullBandwidth · · Score: 1

    Ever hear the expression "I'd rather write programs that help me write programs, than write programs?" Maybe you can get some enjoyment out of writing the code that helps you test the code you're writing. Write a perl script to test your C code, etc.

    --
    My friend Debbie Ann is so promiscuous, instead of an appointment book she needs a package manager
  43. Write a program... by Anonymous Coward · · Score: 0

    Write some software to test it. Then another program that will test that, et cetera...

  44. How about testing the test? by Skapare · · Score: 1

    You've just written some cool new fangled program for something. Maybe it automates a process. Maybe it creates a new interface for something. Maybe it's the next app killer. And best of all, you wrote a test suite for it during the development.

    But does the test suite itself work right? How do you know that your test suite tests correctly, and completely? Did you also write a test suite test, too?

    --
    now we need to go OSS in diesel cars
  45. Make it a game... by LynnwoodRooster · · Score: 2, Interesting

    I hate testing too! So I devised a little game with a compatriot in code: we unit-test each other's code. Each class is unit tested by the other person, and whoever finds the most bugs wins. What do you win? Usually pizza and beer. Free lunch or dinner can be a strong motivational reason, plus the chance to brag about trouncing the other person. Makes you a MUCH better "defensive" coder, always thinking about how/which parameters to validate, return codes, etc.

    --
    Browsing at +1 - no ACs, I ignore their posts. So refreshing!
    1. Re:Make it a game... by Anonymous Coward · · Score: 0

      Yes, of course the best and most realistic solution to this boring old conundrum is applied using beer and pizza! Keep it simple, well done.

  46. Blowjobs by antifoidulus · · Score: 0, Redundant

    Pay a hooker to test you software and if it doesn't crash, and ONLY if it doesn't crash, have her give you a blowjob. Case closed.

    1. Re:Blowjobs by ErikZ · · Score: 2, Funny

      Then you have hookers killing themselves from boredom.

      Although... trying to explain away the dead hookers would make debugging a lot more interesting.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    2. Re:Blowjobs by Anonymous Coward · · Score: 0

      "It's my test case, I'm making the next GTA."

  47. How about "You're fired" by Anonymous Coward · · Score: 0

    Seems to me if you don't want to test then you aren't interested in doing professional quality work. Pass it off on someone else and you're shirking responsibility. Do half-assed testing and your undiscovered bugs impact the client's productivity. No matter how you slice it, you're fired.

  48. From a professional tester.. by Anonymous Coward · · Score: 0

    Learn to write good unit tests and think of them as writing code. It will save you time and effort anytime you update the code and you won't have to labor through the boring manual stuff quite as much. If that doesn't work, find a new industry. Testers hate developers like you and you just waste the time of everyone downstream. As much as you hate testing your code, your testers probably hate it more because I am sure it rarely actually works right with anything other than the rosiest of scenarios.

  49. Testing is a stimulating factor by rxan · · Score: 1

    I'm a test developer right now, so this may skew my opinion. When I develop any code, whether it's tests, frameworks, utilities, or actual development, I always consider testing of my own code a stimulating factor. Do you enjoy knowing that your code works as you intended? I do. In my opinion good design is reflected by good testing. If your tests are bad then you won't know if your design is good either. This includes performance testing.

    Try this: do no testing at all for a month and see how annoyed you get by receiving a million defect reports.

  50. Explosions! by Kepesk · · Score: 1

    An even better game... rig your machine up to an explosive device and program it so that if you get the same error message three times, BOOM!

    That's exciting, right?

  51. You could try silly tricks to make it interesting by Anonymous Coward · · Score: 0

    Or just pop some Ritalin.

  52. Then you are lazy. by Alcoholist · · Score: 3, Insightful

    "It is so boring and un-stimulating that I usually skip it entirely, pass the testing off to someone else, or even worse, if I absolutely have to test, I do a very poor job at it."

    Which sums up why software is so shitty today. I seriously hope that you don't write software for the areospace industry because I don't feel like falling out of the sky because you were too bored to test your code.

    Every job has its boring moments, testing your code is one of those things that programmers must do. Should do, it encourages discipline and discipline is what makes good code. You can automate the testing to some degree but at some point you've got to poke it and prod it yourself because computers are stupider than even we are. If you can't hack that, find a different line of work.

    --
    Bibo Ergo Sum.
    1. Re:Then you are lazy. by DiegoBravo · · Score: 1

      Think this way: do you prefer testing or writing documentation? at least for me, good tests are an excellent way for users of your code to learn how to use it, so they will not annoy you for comprehensive documentation. What's better, another dummy method or another title+table+paragraph in Word? This works at least for testing library code.

    2. Re:Then you are lazy. by R.Mo_Robert · · Score: 4, Funny

      or another title+table+paragraph in Word?

      Yer documentin' it wrong.

      --
      R.Mo
    3. Re:Then you are lazy. by Anonymous Coward · · Score: 0

      Without meaning to be unkind, man up and do both halves of your job.
      1) be the best programmer you can be - write the best code you can (for me, "best" means simple, short, elegant).
      2) test your code. Finding your mistakes will make you a better programmer, which feeds back into #1.

      Expecting your job to be all fun all of the time is just self-indulgent. Perhaps you should try American Idol instead.

    4. Re:Then you are lazy. by maxwell+demon · · Score: 1

      Think this way: do you prefer testing or writing documentation?

      For me: Clearly writing documentation (not comments, mind you, those are tedious, I'm speaking of actual documentation, of the type that's usually missing from those projects which use automated "documentation" tools: documentation that actually tells you how to use the damn thing, instead of just documenting what functions are there to use). Of course, writing the actual code still beats writing the documentation.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    5. Re:Then you are lazy. by Tim+C · · Score: 1

      Yes and no.

      Developers absolutely should be writing unit tests, and those tests should be run automatically as part of the build as well as manually from time to time.

      "End user" type testing, system integration testing, etc, beyond "yeah, seems to work ok, I wouldn't be wasting the test team's time giving them this" should be performed by someone else. You're too close to it to test your own code in that manner.

    6. Re:Then you are lazy. by Anonymous Coward · · Score: 1, Funny

      Funny? I was really going for informative, perhaps even insightful. Why would you ever document your code in Word?!

      -R.Mo

    7. Re:Then you are lazy. by Anonymous Coward · · Score: 0

      Not helpful, and not true. As a software tester, I can attest that programmers are not likely to acheive non-***ty software on their own. The questioner demonstrated a desire to do better by finding a way to enjoy his work. It's human nature that we do better at things when we enjoy them. Be patient with people who are trying to improve. Constructive criticism goes a long way.

    8. Re:Then you are lazy. by DiegoBravo · · Score: 1

      Well, not every environment can use Doxygen/Javadoc/whatever. My main client uses mostly COBOL and AFIK they are not interested in buying more software from IBM (I suspect IBM can provide the corresponding tools.) So they just use their good old MS Word with their own templates. I also saw several programmers using Excel (after trying to print at once all the html pages as generated by doxygen)... Maybe I don't get your point.

  53. Simple: by Tablizer · · Score: 1

    Outsource testing to India. That's their punishment for taking our programming jobs ;-P
       

  54. Nope. by fatbuttlarry · · Score: 1

    No, there is no way to make testing interesting. I hate it too. Its a "necessary evil" like grooming a dog. The dog survives without it, but that tick infestation can really stress your life out with bugs coming from all directions and showing up in places you never could have imagined.

  55. Think of it as breaking it by Farlan · · Score: 1

    As a software analyst and a QA engineer, if you think of the software you write as if it were someone else's (preferably someone you know is a poor coder), test the software with the objective of breaking it, and finding those loopholes which will allow you to use the software in ways it wasn't designed to be used. It makes a very monotonous task so much more enjoyable.

  56. Testing more interesting by gwgwgw · · Score: 1

    For me the interest is raised if I write a few high level tests BEFORE doing any coding. Then code.

    I suspect the heightened interest is the pleasure of writing to a spec and meeting a goal.

    So often (80% of the time?) I then early on save a good bit of rewriting.

    --
    That was Zen, this is Tao
  57. the developer should participate in system testing by ciaran_o_riordan · · Score: 2, Informative

    > The developer should unit test, and the test group should system test.

    In my experience, the developer should participate in system testing too.

    System testers have to know what the corner cases are. They can't guess them all (unless they're more skilled at each unit than the unit's developer is, in which case what's this product genius doing in the system test group!). Brute force takes too long for most systems, and even brute force requires knowledge of what variables to change and what ranges to span for each variable.

    I used to program embedded systems for oil pipeline tools. (Not a sector with a glowing reputation for reliability right now, but bear with me.) The system testers had decades experience in pigging, hydraulics, tool operation, an ISO certification, but they weren't programmers. The whole team participated in system testing (or a member of each unit group did), so that we'd collectively know all the combinations worth testing.

    (As for answering the question of the story, I think the asker really should have given a hint as to what sort of software it is.)

  58. You can't, so don't try by a9db0 · · Score: 4, Insightful

    I do software QA for a living. And if you're not a tester, don't try to be. It's your job to write code that meets spec, runs clean, is efficient and effective. Write it well. Write it secure. Write it to handle errors from data, users, networks, etc. Double check that you validate input. Make sure it doesn't leak memory. Write good unit tests. Test it enough to make sure it works. Then give it to a tester.

    Good software testers are a different breed. They are a sceptical, picky, pedantic, detail oriented bunch who take new code as a personal challenge to find the inevitable bugs. They will test your code a dozen different ways you would never think of. They will find bugs that could not possibly exist. They don't care that your shiney new whistle or bell will be the next big thing that will make you all rich. They care that it doesn't barf when you pass it a string with more than 256 characters. Including special characters. In German. Or Japanese. They care that when it's been running for 12 days straight with automated stuff beating on it that the memory usage hasn't ballooned. They care how it deals with data files 10 times larger than you say it should handle, or runs on a machine with half the ram it should have, or handles twice the workload it should - because somewhere out there is a user who will ask it to. They will chew it up, spit it out, and ask you to fix it. Then they will do it all again.

    Testers are a strange bunch, and good ones are hard to find. Find some good ones and cultivate them. They are a lot cheaper than a ticked off client.

    --
    -- "Never underestimate the power of human stupidity." - R.A.H.
    1. Re:You can't, so don't try by Anonymous Coward · · Score: 0

      I do software QA for a living.

      I pity your existence.

    2. Re:You can't, so don't try by Reziac · · Score: 1

      Haha, that's what I shoulda been doing for a living. When I was testing independent projects, I was widely feared as "the beta tester who could break anything" :) I don't know what I did that was so special; I just do what seems obvious to me!

      --
      ~REZ~ #43301. Who'd fake being me anyway?
    3. Re:You can't, so don't try by Abcd1234 · · Score: 1

      Testers are a strange bunch, and good ones are hard to find. Find some good ones and cultivate them. They are a lot cheaper than a ticked off client.

      Abso-friggin-lutely.

      I absolutely detest the view, held in many organizations, that QA as simply a stop-over on the way to development. Great testers *want* to test. It's their passion. And by their very nature, they approach the act of testing differently than a developer. Finding those people is crazy-hard, and when you do find them, you need to hold on tight, as they're absolutely invaluable to the development process.

      By the way, I say this as a developer who simply does not have a head for the kind of rigorous, evil, insidious testing that a natural tester can come up with. People like that keep me honest, and make sure that I as a developer, and we as a development organization, produce the best software possible.

      As an aside, I don't envy testers at all. Ultimately it's the test group that gets screwed by poorly-defined or recorded requirements, crappy or absent design documents, not to mention cranky developers. And when shit goes south in the field because some requirement wasn't accurately specified and the software fails, its QA that often takes the blame. And, as I say, in a lot of organizations, its QA that constantly has to re-train people as they move out of QA and into development... they really end up getting the short end of the proverbial stick.

    4. Re:You can't, so don't try by mr_mischief · · Score: 1

      Nah. Ticked off clients are a dime a dozen. Turning them back into happy clients is the expensive part. ;-)

    5. Re:You can't, so don't try by Anonymous Coward · · Score: 0

      I agree with everything you said except "don't try". I would say that every angle finds more bugs, and while testers tend to do better at trying more angles, they can never see the software in the way the developer does.

      When I was in college, my writing instructors told us to set our work aside for a while then come back to it fresh. This works with code. As a developer, I find that if I set my work aside for a couple days or more and come back, I can be more detached, and think more like a sinister tester and enjoy breaking my own work. I also tend to be more creative about testing it. This is the same reason TDD is helpful--because there is a time separation between creative activities.

      The primary goal of any testing is to be creative. Developers are by nature creative. The difficulty comes from the fact that it's exhausting and annoying to question your own creations. Ask a tester to challenge their own test cases, or mark their own bug reports as invalid--it's hard and annoying. It gets frustrating if they can't exercise some creative energy.

      As a developer, I find I test my own code better when I take a break, and change my mindset from making it work to being a sinister tester, seeking fun in the destruction of the software. I have to sort of detach myself from the code I've written, by convincing myself that it's full of bugs I just haven't found yet. Oddly, it helps to create bug reports for myself--I feel like I've produced something, even if the reports are terse and difficult to understand to anyone else. They're a solid manifestation of my accomplishments. I resist fixing bugs I find right away, so that I can focus on the one mindset that distrusts the software and wants to find more problems with it right now (keep being sinister). If I start to feel anxious about how much time it'll take to fix those bugs, or the trouble they represent, I firmly sit on that worry--banishing it with the understanding that I am working toward being a quality developer--and it helps to realize a quality developer prioritizes bugs and won't fix everything. It gives hope to report bugs to myself I know might not get enough priority to fix, because it helps me to be more self-aware of future issues, and understand how to better design my future software. I enjoy testing as a developer because I see every bug I find, and every bug type I learn about, as an education and an improvement in my skills and critical thinking. I see each bug I find as a measure (even if a heuristic and fallible measure) of my growing experience. When I take that break to change my mindset, I often spend some time reading articles on testing theory or common weaknesses, to give me new ideas for testing (and future development). I don't subscribe to just any RSS feeds on testing--I find things that are interesting and applicable to me. (In my case, I like reading the RSS feeds from James Bach, Bret Pettichord, Michael Bolton, and Cem Kaner).

      Admittedly, sometimes I don't feel like testing my code. As others have noted, TDD can help--you feel less invested in your code if you write tests for it before you even begin coding. Reviewing or testing someone else's work is also helpful--one other comment suggested making it a sort of fun competition with lunch at stake.

      Having been in QA and having been a developer, I can still say that I never find all the bugs in the code I write. An independent eye at any stage will help improve the code, and I've learned I really do need someone else to test.

      Another commenter suggested that the developer shouldn't tell the tester what to test. I think this is not true. A developer should have some ideas of what needs testing. A good tester and developer will have a mutual understanding, though, that the tester's job is to question the product in ways the developer hasn't guessed it needs testing--and that the tester may realize a need to test other things they suspect are related, etc. A good developer should, ideally, value that kind of initiative an

    6. Re:You can't, so don't try by Anonymous Coward · · Score: 0

      Yes, this is so true. Don't try to do everything by your self and do not take it personally when somebody finds a bug what you have just done. It all improves the quality and the early you get this feedback more fun is to fix it.

  59. Face it... by Anonymous Coward · · Score: 0

    you're just lazy.

  60. Cultivate a bit of self discipline by JuzzFunky · · Score: 2, Informative

    You don't need to make it more interesting, you need to make it part of your routine. It's like waking up at 6am to go for a run. The first few times you do it it'll be hard, but if you stick to it and do it every single day it will become just something you do. Start small - don't try to run a marathon in your first week, just don't make any excuses or invent reasons to skip it just this once. The fact that you care enough to ask slashdot suggests that it is important enough to you to make the effort. If you can make the change and stick to it you will probably find more fulfillment in your work.

    --
    Unexpect the expected!
    1. Re:Cultivate a bit of self discipline by Anonymous Coward · · Score: 0

      Hi, I'm the OP AC. This is the best answer I've heard so far, thank you! Automating the testing isn't feasible for my current project, so we are reduced to doing manual tests which kind of sucks. My main problem with it is we have a few test plans, but they are not up to date. I know the application so well that I know every single thing that could possibly need testing and any given test plan only covers about 20-30% of that on average, which inherently makes it pointless to test, thus, my unwillingness to test the code. However, some testing is better than no testing and making a habit of it can mean the difference between really annoying and catastrophic. I think I've focused too much on the ivory tower of 100% working code rather than the reality of 40-70% working code. One thing I probably can do is advocating a better system at my work and hope it works out. I know for sure that if I have a hand in the architecture of the next application, there will be unit tests created from the beginning.

      Thanks again for reminding me that there is no replacement for discipline :)

  61. It is part of your job by luis_a_espinal · · Score: 1

    I like writing software. In fact, I revel in it. However, one thing has always kept me back from being able to write the best software I possibly can: testing.

    It is part of your job... testing that is. Just do it. Not every part of your job is supposed to be tantalizing or pleasant. If it were, it wouldn't be a job. It's just part of what a job is. And doing those things that are necessary (even if they suck) is part of being professional. Testing does suck balls sometimes, but hey, if something sucks, do it more until it stops sucking (either because you became proficient or numb.)

    I consider testing to be the absolute bane of my existence.

    Your outlook on things certainly won't help in making things better, will it?

    It is so boring and un-stimulating that I usually skip it entirely, pass the testing off to someone else, or even worse, if I absolutely have to test, I do a very poor job at it.

    In that case, please do the world a favor and stop writing code. People who do this kind of shit is the type of people who say "done" even though all they have done is to check if their code compile and works with the happy cases. People like that are the bane of proper software engineering. By not doing this crucial part of your job, you are being unprofessional and unethical, and you should return a fraction of every paycheck proportional to the time you should have invested in testing.

    Before looking for making things interesting, you should try having some work ethics.

  62. Thank you. by pspahn · · Score: 1

    This Ask Slashdot was very informative. I'm serious. I liked this one. It's a good question.

    Soulskill +1 : Relevant ; +1 : Motivational

    --
    Someone flopped a steamer in the gene pool.
  63. Answer: don't. by Ralph+Spoilsport · · Score: 1

    Do your unit testing, but otherwise: Hire a QA engineer. If you test your own stuff you won't see the mistakes.

    --
    Shoes for Industry. Shoes for the Dead.
  64. Allocate time and budget by Anonymous Coward · · Score: 0

    Don't know about you, but I find that the problem with system testing is that more often than not, the project is already overdue, overbudget, and you're completely over it. Plus, you've got ten other things waiting for you, so testing something that is already "done" is a huge pain.

    I certainly know how it feels. On the other hand, I know that the times I add the testing to the initial estimate, that bit of the estimate doesn't get chucked out, and the estimate turns out to actually be accurate - there is nothing more absorbing than meticulously going through every bit of the program that you wrote and polishing till it shines. If you've got the time.

  65. Sure about that? by Kostya · · Score: 1

    "I know I'm not that lazy, as I can spend hours on end writing software, but there's something about testing that makes my mind constantly want to wander off and think about something else."

    Well, actually, that is kind of lazy :-)

    Seriously: you do the parts you enjoy and you skip the parts you don't. That, my friend, is lazy. Or at least undisciplined. And if you are getting paid to do it ... well, that's just unprofessional.

    I'm not trying to be a jerk, it's just that I have been at this for 15 years, and I constantly run into people who don't bother to test. It pays off in the long run, it makes for better software, and it makes you a better developer ... you just have to have some professional pride and buckle down. I mean you know that you need to, you know it would make better software, and yet you can't seem to find the interest/sel-interest/professional pride/whatever to do it? Don't you see a problem there?

    --
    "Doubt your doubts and believe your beliefs." -- Switchfoot, Ode to Chin
    1. Re:Sure about that? by Anonymous Coward · · Score: 0

      don't bother to test. It pays off in the long run, it makes for better software, and it makes you a better developer

      Couldn't agree more :P

  66. You're better off than the tester. by Anonymous Coward · · Score: 0

    Just remember, we testers would also prefer to be coding. Testing other people's code sucks, especially when we're the first ones to try it. So keep yourself chipper by remembering that you were the one who was smart enough to pursue a career in programming so that you only have to test 5% of the time instead of 95% like us lowly testers whom you outrank. In case you're curious, QA guys get over the testing blues simply by worrying about other things, such as rent checks, a lack of respect, and job security.

  67. how to make non-automated testing simulating? by BLAG-blast · · Score: 3, Insightful
    Simple. Automate it!

    I used to dislike testing until I learn how to implement code designed to be tested. Use a dependency injection frame work (that will keep you busy for a while) and write testable code. Writing elegant, readable code which scalable and testable is not an easy or boring task. If you can not automate the tests, you are probably do something wrong.

    --
    M0571y H@rml355.
    1. Re: how to make non-automated testing simulating? by tepples · · Score: 1

      Simple. Automate it!

      You make the implicit claim that all testing can be automated. Please explain how to test the three situations that I listed in another comment.

    2. Re: how to make non-automated testing simulating? by taucross · · Score: 1

      This is a poor testing approach. Good testing involves a variety of methods - automation is particularly handy for regression and core components, but new functionality always needs a manual touch (particularly if your software has an interface).

      I couldn't count how many errors my testers find on a weekly basis by using their imaginations. It is something that simply cannot be automated.

      Allow me to add to your statement - "If you can not automate the tests, you are probably do(ing) something wrong." - "If you only automate the tests, you are certainly doing something wrong."

      --
      "In the absence of the ability to establish the attribute of truth they tried to establish the noble attributes."
    3. Re: how to make non-automated testing simulating? by Anonymous Coward · · Score: 0

      Simple. Automate it!

      I used to dislike testing until I learn how to implement code designed to be tested. Use a dependency injection frame work (that will keep you busy for a while) and write testable code. Writing elegant, readable code which scalable and testable is not an easy or boring task. If you can not automate the tests, you are probably do something wrong.

      Test automation is expensive. Just because one CAN automate a test doesn't mean it SHOULD be automated. Automation should only be performed on mature stable code. Unstable immature code results in high maintenance costs for the automated tests. At my company, automated testing is used to relieve the burden of regression testing from the QA & Testing team.

      Also, I've seen automated tests that run on really bad code. They just take longer to write.

    4. Re: how to make non-automated testing simulating? by Anonymous Coward · · Score: 0

      Automation is not necessarily simple or effective. It has its place--I think unit testing is a good idea, but it is not sufficient in itself. Read James Bach's article "Test Automation Snake Oil" http://www.satisfice.com/articles/test_automation_snake_oil.pdf -- and realize that he's not saying never to automate, but that there are right and wrong ways to automate, and right and wrong times and situations to automate.

    5. Re: how to make non-automated testing simulating? by Spiflicator · · Score: 0

      If you're writing the code, its within your power to make it capable of automated testing of any kind.

      It may not always make sense to do so, but its not inherently impossible either.

  68. Software always ships with bugs by xswl0931 · · Score: 2, Insightful

    The reality is that all software ships with bugs. Some known and some unknown. Typically it depends on how easy it is for the customer to find, what is the impact to the customer, cost to fix, and risk of regression. Given that software is typically patched after shipping, it means even more bugs get shipped rather than slipping the ship date.

  69. Think of it as writing examples by dr2chase · · Score: 2, Funny

    "Here's how it works..."

    That is, if you can write a test that looks like that. I work on compilers, so the trick is to write the example that tweaks just the feature that I want to check, and not 17 others. But, my test cases look like squirrelly little programs that could actually be inputs from especially peculiar users.

    You ought to also think about demonstrating your error cases. "If you do this wrong thing, it says...." I am sort of a nut about error messages, partly because I once read the Apple Human Interface guidelines and thought they were a good thing. In particular, does the error message provide the user with information that will help him make the error message go away? When you decide that an error has occurred, what special information do you have that might help? My anti-favorite error message was "Bad SOCKS version number". Not "unexpected", not "too old and not-supported", but "BAD". Morally wrong, so unspeakable that not only can the BAD number not be named, even the good numbers cannot be named, because they might therefore name the BAD number by process of elimination. Truly unspeakable, the version number that shall not be named.

    1. Re:Think of it as writing examples by PrecambrianRabbit · · Score: 1

      I am sort of a nut about error messages, partly because I once read the Apple Human Interface guidelines and thought they were a good thing. In particular, does the error message provide the user with information that will help him make the error message go away?

      I'm OT, but I wish latex had been developed with this philosophy in mind. I really dread seeing latex spit out screenfuls of unintelligible gobbledygook, followed by a single "?". Oh great, what did I do wrong this time? Latex sure isn't telling me.

      C++ is up there (down there?) as well.

    2. Re:Think of it as writing examples by SplashMyBandit · · Score: 1

      Yes! At the point a problem is detected all the information about the problem is known and ought to be reported. After that point the relevant information that could fix the problem may be lost. Well-written (and tested) programs only die if they get bad input, since the code will be good. You can't always know that input is bad initially but as soon as it becomes a problem you must report a relevant statement of the problem, the bad value and its name (especially if there are multiple calls on the line, eg. chained method calls) and probably the limits of value values (not null, non-negative, between some range, can only be "Fred" or "Susan" etc). Coupled with a stack trace that is a lot more information than most programmers give to to those that maintain their code. Trying to fix someone else's bug is bad enough, but when they are too damned lazy to report problems properly (or even check in the first place - you should never get a NullPointerException in Java ever, good programs pretty much deal with IllegalArgumentException, IllegalStateException an resource exceptions, eg. IOException before they're transformed to application-level *unchecked* exceptions).

  70. So in other word.. by microbee · · Score: 1

    You come off and leave and let someone else raise the child..

    Seriously, someone who cannot test his own code cannot write good code.

  71. Also Developer machines aren't end user machines by Ilgaz · · Score: 1

    I noticed this many times even after Microsoft figured they can never possibly test all possible uses of Windows and kinda gave away Windows 7 beta. Think about it, the Microsoft as we know gives away free, usable, fully functioning OS knowing some people will hack the "time bomb".

    Lets talk about OS X. High level developer merely changes wallpaper to something cool (they don't even do it), installs XCode, all OS X updates and codes. There is no resident software, no UI hacks (thanks to Apple, you gotta hack to have themes), nothing hogging CPU every 5 min, all files in place, no kind of insane settings (I even seen one sharing entire home folder to everyone). It is not a "test" machine, it is a Developer machine.

    As guy doesn't mention what kind of software he writes, I can only assume things but it is the general problem. End user machines are overlooked. For example, nobody says "lets go to macupdate.com, download and install top 10 software and see how my software gets along with them", including Apple it is :)

    For testing popular software, you need end users and "general" types, not high technical types. You gotta be nice to them yourself and make sure _everyone_ on IRC channel, forums, bug report replies are nice. I would even kickban the first ever so-called "supporter" who treats others like shit. That is one thing makes me really stay away from testing many open source software let alone using them. You know, you gotta kickban the first genius who seriously says "Where is the patch?" to already frustrated user. If they did it, many open source software would be in different place now.

  72. You can't... work smarter by RedLeg · · Score: 2, Insightful

    It's inherently boring....

    SO, Build hooks into the 'ware as you write it, and automate the testing.

    Work smart, not hard.

    Red

  73. attach electric wire controlled by Junit to.. by BigGerman · · Score: 1

    .. your genitalia?

  74. well by cookienihui · · Score: 0

    ^^^^^ Sugarmommydate. C O M ^^^^^ An older woman who frequents clubs in order to score with a much younger man. The cougar can be anyone from an overly surgically altered wind tunnel victim, to an absolute sad and bloated old horn-meister, to a real hottie or milf. Cougars are gaining in popularity -- particularly the true hotties -- as young men find not only a sexual high, but many times a chick with her [EXPLETIVE] together.

  75. Cucumber by Anonymous Coward · · Score: 0

    Try Cucumber (cukes.info) and write your tests first! It's the first time I've found testing fun.

  76. It's not so hard.. by Mr0bvious · · Score: 1

    Pride.

    --
    Never happened. True story.
  77. Testing is a mindset more than anything else by crimsontime · · Score: 3, Insightful

    Do you enjoy finding the weak points in things? Do you use new devices, maps, etc without reading the instructions because you just think you should just know how they should work? Do you find that alarm bells go off in your head when you read a phrase that could possibly interpreted in more than one way? Do you often use things in ways that they were never intended yet those ways seem the most logical to you? Do you possess powers of intuition that lead you unforseen vulnerabilities? Do you find the needle in the haystack? Coding isn't inherently more interesting than testing. Anyway, if you identify with any of these phrases, you can apply it to testing...

    1. Re:Testing is a mindset more than anything else by Anonymous Coward · · Score: 0

      Mod this up! Just like in the movies where the cop has to get into the mindset of the criminal and figure out how he does the crime, the programmer has to get into the mindset of the user and figure out how he could hack his code.

      Could the end-user put in too many numbers? Put in too few numbers? Add two many files? Click the submit button multiple times? Put a string when a number was needed? Put a number when a string is needed? Add a hyphen when it hasn't been checked? Added a string that is also a reserved word or macro or constant? Accidentally typed in a > or symbol and have it try to redirect? There are soooooooooooooooo many options to break code and only one way that works (most of the time.)

      The reality is that if you don't consider the security of your code when you begin coding it, then you will always write weak code that becomes the next major news exploit. Patching code after the fact can often cause more bugs if it hasn't been thought about ahead of time. Testing is all about finding out how to trash the code and make it fail. Admittedly when you write the code it can be a blind spot to finding out how to trash it. So trash code that someone else write and let them try to trash you. The one who breaks the other person's code first gets to be the Top Dog for the day.

  78. Look into the corner cases by Anonymous Coward · · Score: 0

    Wear a hackers hat and treat it as a software you are trying to break. It makes the job much more exciting and challenging.

    At the very least it should give some confidence about the quality of code you write.

  79. Re:the developer should participate in system test by lgw · · Score: 5, Insightful

    Unit tests should excercise the corner cases in your code. If you know what they are, write tests for them.

    QA testing should break all design assumptions about how the software should be used. Having the programmer sitting there telling the QA guy what to click on (and I've seen that far too often) invalidates that. The most useful bugs are the ones where the QA guy says "I did what I thought would get the job done, and instead it formatted my hard drive", leaving the dev to sputter "but, but, you're not supposed to do that". Given enough users, every possible "stupid" thing you can do with your software will be done in the field, and you really want to know that you will at least fail safely in all those "but that's not how you're supposed to do it" cases.

    --
    Socialism: a lie told by totalitarians and believed by fools.
  80. A totally different challenge by dkleinsc · · Score: 1

    First off, try to avoid testing your own work. If your company won't hire proper QA staff (which is stupid of them, but never mind that), then trade off with a co-worker: you'll test his stuff, he tests yours.

    Now, your goal is to seek out the flaws in whatever you're testing. Be experimental - try doing things that are stupid and/or malicious. If you see a text input box, try putting in nothing, or putting in "Robert'); DROP TABLE Students; --", or putting in huge numbers of copies of the letter "A", or tossing in some Unicode surprises to see what happens. If you see a radio button, try every combination you can think of. If you see a date field, try to screw it up with different formats or something that isn't date info at all. You're doing the equivalent of taking a sledgehammer and whacking it as hard as you can manage to make sure that you don't do any damage, so have fun with it.

    That said, the best testers are the most anal-retentive people I've ever found working in a tech-related field. They will work out exactly what all the cases are, and what the desired behavior is in each case, and if they don't get exactly what they're expecting they inform you of exactly what they did and what they expected. The best developers, on the other hand, tend to be too focused on the next great new thing to get excited about Test Case 1042-B.

    --
    I am officially gone from /. Long live http://www.soylentnews.com/
  81. Make it a rewarding challenge by Anonymous Coward · · Score: 0

    For every bug you find, reward yourself with something that motivates, be it gummies, chocolate, or pr0n. That way you want to find more.

  82. Do what I do by Eil · · Score: 2, Funny

    Read Slashdot instead.

  83. Re:You could try silly tricks to make it interesti by dougisfunny · · Score: 1

    Pop some Ritalin so the person in question 'chills out' and can focus? Or as an alternative to red bull?

    Ritalin is actually an upper (to those who aren't afflicted with ADD/ADHD, which I imagine most developers aren't) and would be counter productive in most situations. Unless you are going with the idea many soccer moms do, so exhausted they need something to keep them going, so they hit up little Billy's stash of uppers they don't actually need.

    --
    This is not the funny you're looking for.
  84. Examine your motivations, automate what you can by syousef · · Score: 1

    Why do you hate testing?

    Is it because you're goal oriented (meaning you can't get motivated to spend time writing unit test code)? If so you need to do a little growing up and realise that ALL untested code is garbage.

    Or is it because you're doing it by hand (which means it's boring and laborious)? In which case the solution is obivous - you like coding, so write the code to do the job for you.

    Either way you need to adjust your attitude or find a different job. A coder saying they dont' test is like a pilot saying he can't be bothered with paper work or a landing checklist.

    --
    These posts express my own personal views, not those of my employer
  85. Test to the specifications by satch89450 · · Score: 1

    My comment will probably not apply to the coding you are doing: it's an old-fashioned, 50-year-old view of programming. Software starts with a statement of what it's supposed to do, in English and without any technical jargon. Ideally, the users of the software participate in the process; sometimes the marketing department proxy for the user. The next step is to determine the solution, again in English without a bunch of jargon. You break the solution into smaller pieces, then divide again, until you have nice compact functional descriptions of the building blocks. For each building block, you define the input and output associated with that building block, plus any saved state. Once you have those building blocks defined, you can write test cases that supply test input, check test output, and determine if the state is where it should be. THEN you write the code to actually do it, checking at intervals to see if your test cases run properly. Once the building blocks all work, you start assembling the building blocked into the larger blocks -- you wrote test cases for the larger blocks, right? Lather, rinse, repeat, until you have put the whole thing together. Then you debug the initial specification, identifying corner cases and adjusting the solution to take care of them. Once your solution is correct according to the high-level test cases, it's ready for beta testing. In other words, you do the boring parts first, then start being a wizard. Most importantly, though, you can show your wizardry works at each step of the way.

  86. Test Techs & Engineers Rejoice At Your Lazines by robi2106 · · Score: 1

    Thanks for the job! I work in SW QA at (big company).

    There is NOTHING that will make manual testing suck less. It just does. I have written many a test plan for the manual test monkeys (both stateside and offshore) and I have performed many a manual test. It just sucks. There is no way around it.

    I suggest heavy stimulant use or psychoactive drugs (warning, your employer might not be as friendly to my suggestions).

  87. So many self-rightous pretentious nerds... by Anonymous Coward · · Score: 0

    I wonder how many coders (who don't write defibrilator or aerospace software) read this and said "Amen brother", yet the so many replys are the bashers. Perhaps it's the pain of transitioning to TDD, perhaps it's the lack of automation. I find it's lack of time. I've got limited time to code, and want to get something done, so the decision to make sure I've anticipated every possible permutation of code execution, vs. getting another piece of functionality down, or at least started, is pretty easy. If there was a more natural way to integrate the two, I may be more more likely to start doing so, Bash on!

  88. Try taking pride in your work by Anonymous Coward · · Score: 0

    Let me get this straight - you like writing code, but can't be bothered to write good code? Maybe you just suck at programming. Why don't you try taking pride in your work? Or, better yet, find another line of work.

    Seriously, I hope you get fired. I wish I knew which company you worked for so I could avoid using their products. If I were your boss I'd let your QA team tie you down and take turns punching you in the nuts.

  89. hookers? by Anonymous Coward · · Score: 0

    Just a thought.

  90. You are full on retarded. by musixman · · Score: 0

    You are full on retarded. Programming is all about testing otherwise guess what? You are a magician. Get a real life this isn't a question this a "daddy pays all my bills and I'm angry comment".

  91. write simple user scenarios/stories by Rsriram · · Score: 1

    Step 1 - Write a small story on how the user will use the software.
    Step 2 - Execute the steps in the story.
    Step 3 - Find defects. Resolve them
    Step 4 - Repeat and rinse.
    Step 5 Helps document your system for future use

    E.g. (for a simple UI driven system. Might not work for all types of software)
    Step 1. John clicks on profile page
    Step 2. John changes address
    Step 3. John changes email ID
    Step 4. John saves profile.
    Step 5. New address and email ID is saved in database and displays on screen.

    --
    O this learning! What a thing it is - William Shakespeare
  92. Dumb question, dumb answer. by MikeFM · · Score: 1

    What? Am I the only one that drinks a shot for each bug I find? I keep trying to get a job at Microsoft so I can have myself a real party.

    --
    At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
    1. Re:Dumb question, dumb answer. by Ironhandx · · Score: 1

      I don't think anyone could survive the 1 shot per bug found at an MS shop.

      On the other hand I don't know why the OP finds it difficult... one of the most rewarding and fun things to do for me is to write code, get it to behave exactly as I want it to, write it as robustly and as well as I can, and then find some absolute garbage to throw at it. I love breaking my own code. At first its a challenge to get all the bugs out, and then afterwards comes the more fun challenge of finding something that WILL break it. Then fix that, run through the old crap again to make sure it all still doesn't break whatever you're working on, and find something even more dastardly to throw at it.

      Like the "Will it Blend?" guys. I just keep going until it breaks, and I have almost as much fun breaking my code and making it much more robust as those guys do with the blenders.

      The result is usually that even my units are somewhat useful on their own. Sure maybe its a bit of over engineering sometimes but I have so much fun doing it that I tend to get things done in the same sort of time frame as anyone else anyways, and the results are almost invariably better.

      Also I have a habit of over engineering everything, I'm typing this from a desk that has a 2" thick oak top on it and 2x4 legs/cross braces etc because I thought I might want to use it as a workshop desk at some point and wanted it to be durable. Its not likely to see that sort of use any time soon, but who knows? It might.

  93. Get Creative by jomama717 · · Score: 1

    Often times, particularly in boring java web apps, the actual product code is less exciting than the unit tests I write to test them. Example:

    A product needed to limit the number of events that were fired given some maximum rate of events/minute. The events can be fired from many threads simultaneously, but all threads contribute to the same calculated rate that must be monitored. The "RateQueue" as I called it was actually kind of neat, very compact and uses java atomic variables for concurrency. But once it was written, what's a good way to test it?

    I wrote a little junit harness that can spawn threads initiated with a string that encodes a sequence of event firings, and each character of the string represents some configurable number of seconds. So a thread with "---x---x---------xxx-------" only fires 5 events in the time frame given. Now testing is fun, because I can create a bunch of different event profiles, and by visually comparing them in a text editor I can predict where the code should throttle the events, and then test for these conditions based on combinations of profiles. Even cooler, I can make the event profiles fill arbitrarily large time spans by compounding them fractally, where each "-" above would be replaced with a full string of "-", and each "x" would be replaced with the original string, and so on. Fun!

    --
    while [ 1 ]; do echo -n -e "\xe2\x95\xb$((($RANDOM&1)+1))"; done
  94. Are you f'ing kidding me? by Anonymous Coward · · Score: 0

    I have resisted the temptation to post anything for years. This takes the cake. I am so sick and tired of idiot programmers that don't know *how* to test their own code. It isn't just the broken code I run into that irritates me- I know people out there have seen it- that never *could* have worked and obviously wasn't tested but made its way into production and has been there for years. No, it's the giant projects that fail because of a bunch of lazy ass programmers that think they can actually write code, test nothing, and call it good but act so surprised when it becomes clear that a million dollars have been spent on complete crap. Just think of it as a paper in school that wasn't proofread. Abject embarrassment ought to be sufficient reason to exercise every single conditional, switch, function, and interface thoroughly by hand. The automated testing should be left for integration testing. Sound like too much work? Well guess what. My code, with lines in the millions, running day after day after day, simply doesn't fail. Bugs are usually along the lines of errors in specification, not implementation, and easy to remedy. The software I've written works. Every time. Oh, and ends up costing a whole lot less by the time a bunch of crappy code is debugged by a team of programmers who didn't write it in the first place.

  95. Learn Ruby and BDD by mikehoskins · · Score: 1

    Lest you think I'm a Ruby fanboy and dismiss me out-of-hand, try this or at least read about Behavior-Driven Development (BDD), as opposed to Test-Driven Development (TDD).

    Then, learn Ruby and some of the common testing methodologies, like Shoulda, Cucumber, mocks, and RSpec.

    Whatever language, OS, and framework you use, you just might change how you look at non-automated tests.

  96. Gain a split personality... by c0lo · · Score: 1
    ... and, in the days you set aside for testing, the first thing in the morning when you drink your coffee and slip into Jerkyll skin, swear to God that you are going to break the code in the most imaginative ways possible, and derive your satisfaction from ridiculing the stupidity of the developer.

    This is the only way I know to test my code... however painful, the advantage of the approach is that the stupidity of the developer gets known only among the two of me.

    If you cannot get a split personality, then I don't think you are the appropriate person to test your code; even more, I think that testing your code is the most harmful for the future of the code... like any child, it might be OK and have a life, but will never be a great code.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  97. But you are lazy... by KiloUtrechtTango · · Score: 1

    I know I'm not that lazy, as I can spend hours on end writing software,
    Maybe you should go testing software for a while and pick up some skills... Doing the fun thing is always easy.

  98. Aside from unit testing... by phantomfive · · Score: 1

    Everyone says you should unit test, and it's a good idea, but aside from that, what I try to do is write code in small pieces, and then compile and test. I try to not write more than 100 lines without being able to test it. You can't always do it, but when you can write in small pieces and test often, it does help eliminate bugs.

    --
    Qxe4
  99. Just think ahead by greg_barton · · Score: 1

    It's not boring when you think of all the bullshit and wasted time you'll avoid by testing properly from the start.

  100. Adderal or Ritalin by GWBasic · · Score: 1

    Adderal or Ritalin...

    Or, you could turn testing into a drinking game!

  101. Realize the value in it by scorp1us · · Score: 1

    As a jr. level sw engineer, I abhorred testing. But I wrote the code, made sure it worked and moved on to the next feature. I was merely testing features as I went, until I made a change to the code that affected the code in more than one place.. then I was hunting bugs down everywhere because I had a function that was modified ever so slightly and it broke every thing that relied on one corner case.

    Then a few years ago, I got my first taste of XP (Extreme programming) It was a completely new experience and I hated it. Agile, pair programming, writing unit tests... all new things. I no longer do XP, but I am better for having done it. What I learned was my test cases are insurance against future breakage. What I have discovered is that those unit tests are invaluable. A few weeks ago, I had to modify a core function because I identified a timing assumption that won't be a valid assumption in the next release of the code. I changed two core functions, added another, and could only pass it based on limited testing because there were no unit tests. If I had unit tests, I could see that prior concerns would pass or fail. Because that's what unit tests are: they are the validation of assumption and concerns. Any tricky code path can be replicated in a test case, so you know it still works (or doesn't). But you need that unit test infrastructure set up.

    However system level testing - beyond engineering test - needs to be done by a non-engineering team, and a that team can only have minimal contact. Else leakage of assumptions and what not will happen. You want your testing team to be most user-like, but smart enough to break your code and report on your defects.

    Unit testing doesn't have to suck. there Are frameworks out there. NUnit (.Net), and QtTest (C++) make it easy. (The Qt stuff is trivial)

    There are two additional benefits of having good unit test infrastructure:
    1. it can also be automated. Your nightly build system can also run the tests after building.
    2. writing unit-testable code forces you to not put everything into GUI event handlers, but rather, develop an independent controller (as in MVC) which makes abstracting the interface easier if say, you want a local and web GUI. It also serves to keep the GUI issues out of the actual application logic. And that means, you'll get a script-able version of your application... not just for testing!

    So has any of this made it more "fun"? No, but it has made me more confident about making changes. And it's made my code better. And it has shortened our time to market. (Fewer bugs make it out of engineering, system testing cycle is shorter, but oddly, we're not spending much more time in engineering (beyond getting the testing infrastructure set up)

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  102. Sorry.. I have no answers for you. by Anonymous Coward · · Score: 0

    Well testing other peoples code can be quite amusing. I remember in an afternoon filling up our bug reporting system with many dozens of P1 bugs after members of another team announced they were "finished" and released their code to QA. For my efforts I tried to be nice and stick to the facts never including the words "clueless hack" in even a single report but still were not happy with me for doing what they should have done months ago.

    The key for me is to assume outright that I'm a moron and a cluess hack.

  103. Don't test your own code by John+Jorsett · · Score: 1

    I used to work in a group that tested each other's code. It was great. The best times I ever had as a programmer was in coming up with fiendish tests that would reduce a colleague's code to a smoldering pile of ash. Testing your own stuff is boring and you're bound to have blind spots to what to test since you wrote the code in the first place. Make it a challenge where you win if you kill somebody else's code, though, and it becomes a fun game and highly motivating.

  104. Singularity... by headkase · · Score: 1

    ... Example: someone asks me to code up something in OpenMP to do XYZ efficiently, on a platform with 256G memory. My first effort *should* work, but it keeps blowing out memory. So I code versions 2, 3, 4, and 5. In the meantime the requirements have changed, because the person I'm working for is also a scientist, and she's learned something new, and would like slightly different capabilities. I finally get something that appears to work, and then I wrote a few system-level test....

    So, the history of humanity could end with: On 24th of July, 2023: Testing Device A147 achieved Singularity status. It quickly reprocessed in a sustained manner unknown to humans the entire mass of Earth. Humanity ended and a new node was born?

    --
    Shh.
    1. Re:Singularity... by Glonoinha · · Score: 1

      ... at which point the answer was revealed : 42

      --
      Glonoinha the MebiByte Slayer
  105. just give it to me. by Anonymous Coward · · Score: 0

    Have a program with a bug? Just give it to me. I will find it.

    Seriously. It's agitating. I seem to be able to run into the most obscure bugs that nobody else is reporting and/or experiencing?

    if not me, find someone like me. Because I'm anon.

  106. Suggestion by Anonymous Coward · · Score: 0

    Use test driven development (test first, code second) and always strive to automate 100%. You'll end up writing a lot more code, but the final outcome will be much better.

  107. Build a Skinner box! by entertainment · · Score: 0

    Every time you find a bug, a little food pellet will drop into your cage. To make it more exciting, replace said food pellet with your favorite vice!

  108. Be a professional by jimmycav · · Score: 1

    Software development is a profession, treat it as such. You're paid to do a good job, so do it. If you can't find satisfaction in testing the code, find satisfaction in knowing that you've completed a quality piece of software (which includes testing and documentation). You'll enjoy your job a lot more if you approach it like this, and others will recognise the effort.

  109. Re:the developer should participate in system test by Anonymous Coward · · Score: 0

    Software to drill oil wells in the ocean I think...

  110. use automated script systematically by jdoire · · Score: 1

    I use automated script systematically to test every features I wrote, making the job much easier.

    And I do it immediately, or even while writing it, while it's fresh in my mind and usually easy to do, checking for normal and abnormal conditions. The script test for new and also the old functions, making sure everything is still OK.

    Being proud of my code is a good motivator to ensure that no bugs are found.

  111. Lucky you by Confused · · Score: 1

    Testing or any other way to make sure your code works correctly when it's delivered is boring - a bit like washing dishes or cleaning up your room. I can't see many ways around that or make it more stimulating. Testing becomes an attractive option only if the consequences of bugs and maintenance are more painful than the test themselves.

    Lucky you, that you work in an environment, where you can get away with delivering untested stuff - savour it while you can.

    In case you need to deliver better quality, I found that testing early and testing often makes testing almost bearable. Write some small functional unit - test it and don't move on to the next thing before it was tested successfully. It's a bit like tidying up after you when finished with one thing before getting out the next toys to play something else. It's not fun, but it makes the whole testing bearable because it goes fast enough every time. You will seem to go a little slower producing code, but the it will have the advantage, that it works.

  112. What does testing mean to you? by Anonymous Coward · · Score: 0

    Do you not run the program you wrote to see if it does what you wrote it to do?

    If you don't, then you are writing code assuming that it will just work, which you really shouldn't be doing.

    If you do, then you are, by definition, testing, and I really can't see how the act of running a program to make sure that it functions the way you wrote it can be so unbearable as you say. People call this "unit testing" or "developer testing" and is usually enough testing from a developer.

    If it is your company or the testing department that is forcing you to do more testing under the name of "unit/developer testing", then you should simply say "no". If that doesn't work, I think you should find another job where you can focus on what you enjoy and do best i.e. development. I have been a technical tester for over 10 years now and I have seen far too many useless testers forcing developers to do everything (by saying I won't test it unless you have done so and so), and simply repeating what developers have tested when the time actually comes for the testers to do their job. These testers are almost always less than useless and really hinders the progress of the entire project.

    I am sure you are already doing a lot of testing in your mind when you are programming. This can't be helped. When you write an IF statement, do you not think about what could come under the ELSE? When you write a FOR loop, do you not think of the boundary cases? All these thoughts effectively lead to testing the code. You are testing a lot more than you think you are already, I think you just don't realise it.

    You can become a good programmer without being a good tester, but you can't become an excellent programmer until you know how to test your own code.

    Likewise, one can become a good tester without any programming knowledge, but programming knowledge is essential to an excellent tester.

  113. Testing is for pussies by Anonymous Coward · · Score: 0

    I take a more zen approach...

    I just write the code once and don't even bother to see if it runs.

  114. You Had It Right Before by DynaSoar · · Score: 1

    Have someone else test it, preferably someone who doesn't know much about how it 'should' work. You do this for the same reason you have someone else proofread what you write: if you expect something, you're more likely to see that rather than what's really there.

    Cultivate some beta testers who'll bash on your code for cheap. As in beer.

    --
    "I may be synthetic, but I'm not stupid." -- Bishop 341-B
  115. 3 rules I follow by Anonymous Coward · · Score: 0

    As a java developer what works for me is 3 simple rules:

    1) Always write a 2 tests that test as close to externally as possible. Of these two one should be "happy path" and one should not be.
    2) For every bug reported write a test which invokes the code and tests for success.
    3) If you want to goof with something write it as a test rather than as a "main method".

  116. Exposure and an Alternative by Katchu · · Score: 1

    You should be exposed to the full ridicule of users who are frustrated with the errors you've foisted upon them. Or do what I do, use testing as a way to avoid attending to writing coherent documentation.

    --
    Keep Doing Good.
  117. Use the sales people by PerformanceDude · · Score: 1
    I use the following approach:

    I have created a connection with the company sales force. Whenever I introduce a new product feature, I invite one of the sales people to try it out - and I watch them like a hawk (but without commenting). Sales people are generally one step DOWN from real users, so if you can make it work for sales people, you are in a pretty good state. Sales people also have a real hunger for new things they can use to sell, so they are eager to get involved.

    This approach removes much of the detail testing - all you need is to make sure you can actually demo what you have done successfully, then let the sales team pull it apart.

    A connection with the sales force is also useful on another level. I often go along on pre-sales calls and listen to the customer's comments and watch the sales people demo our products. It gives me loads and loads of input and ideas for how to improve our UIs and workflow. Off topic I know, but something I highly recommend.

    --
    Meus subcriptio est nocens Latin quoniam bardus populus reputo is sanus callidus
  118. how i found it stimulating. by mov_eax_eax · · Score: 1

    Testing is a big subject, my take was to write a full automated test, one that puts the database in a zero state and do as many business scenarios it can, simulate the pass of time, simulate external inputs in the most realistic fashion so you don't have any surprise in the deployment.

    The Test Team can use the tools developed to speed up their job(put the system in X state can be made by your automated test framework). they test manually all the system too, specially the UI and report bugs,

    Designing the system so you can easily test and replicate states, developing the tools and putting it all together with the team was a task i found stimulating.

  119. No such thing as non-automated tests by BitZtream · · Score: 1

    If you have a problem forcing yourself to do the non-automated 'tests' then you need to consider that the problem is that you are doing non-automated tests.

    There are three types of tests in computer software:
    Unit testing (automated)
    UI testing (manually done by people OTHER than yourself to throw the unexpected at it)

    and the third ...
    bad manual tests that should have been automated.

    Theres no such thing as non-automated testing outside the user interface aspect. I program cause I like to solve problems, the easiest way to motivate myself to test is simply turning the tests into another challenge. Figure out how to automate tests because there isn't anything you can't automate.

    One of my current main projects is an MS Outlook plugin that modifies messages as they are sent, and does special things to replies from other users of this software.

    To write the testing for that, I had to come up with a way to automate the GUI interactions with outlook, simulate both an SMTP and POP3 server to facilitate getting test data in and out of Outlook in a way it expects and to verify the plugin is doing what its supposed to do.

    The only testing that isn't automated is the kind were you're determining if people actually LIKE using your application and to determine if what you've done to the UI actually make sense to people who don't write code for a living and know exactly how it works.

    Finally, just do it. Its part of being a professional. It sucks, its the shitty part of the job, but its part of the job. You either take both and do them well or you become the boss and delegate both coding and testing to someone who can do it.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  120. Try not writing boring software? by evildarkdeathclicheo · · Score: 1

    Try not writing boring software?

  121. Hook your unit testing module to a cattle prod... by rcasha2 · · Score: 1

    ...situated in your chair seat. Each failed test increases the voltage exponentially.

  122. Accessibility helps with auto-testing GUIs by tepples · · Score: 1

    They really suck at test GUIs or anything visual

    Then make sure your application is accessible to people using a screen reader, and then write the automated tests using your operating system's accessibility API.

  123. Three non-automated test cases by tepples · · Score: 1

    First off, don't do non-automated testing. It's unnecessary.

    How is non-automated testing unnecessary in the following cases?

    • The requirements are vague, such as "difficulty of problems presented to the user must increase gradually over the course of the session," where difficulty isn't defined rigorously.
    • The application's specification includes a physical simulation with random, pseudorandom, chaotic, or otherwise nonlinear behavior, and you want to test for properties across several cycles of such nonlinear behavior.
    • You know your automated test suite's coverage isn't 100%, and you're doing non-automated testing to find things that your automated test suite is missing. One such testing method is called eating your own dog food.
    1. Re:Three non-automated test cases by Dishwasha · · Score: 1

      It's likely that the poster was referring to day-to-day testing rather than the occasional acceptance testing you are referring to. I would also have to say that with enough creative thinking you can accomplish the first two items. With item number three, if you're taking the time to test for something that isn't in your coverage then that's the perfect time to go write an automated test for it.

    2. Re:Three non-automated test cases by Abcd1234 · · Score: 2, Insightful

      The requirements are vague, such as "difficulty of problems presented to the user must increase gradually over the course of the session," where difficulty isn't defined rigorously.

      Uh, you define the requirement. If you've written code, you've *already* done that, you've just made the requirement inaccessible as its now encoded in a programming language. Write it down first and everyone will be happier.

      The application's specification includes a physical simulation with random, pseudorandom, chaotic, or otherwise nonlinear behavior

      That's not unit testing. Most code in a simulation is *not* random, it's fed inputs from other parts of the code, which ultimately result in the behaviour you describe.

      Automating system test for something like this is interesting. First, you *must* design the code to be testable. That means being able to, for example, define random number seeds and so forth, so that a run can be reproduced.

      Second, the implicit assumption is that there is *some* way to determine, based on inputs, if the outputs of your software are correct. If you can't do that, you have far bigger problems. Of course, those tests might be fuzzy ("value should be between X and Y", "value should be greater than zero", etc), but they're still tests.

      Third, realize automated testing isn't the end-all and be-all of testing. For some systems, you will be forced to have some amount of manual testing (for example, integration testing large, complex software systems can be difficult to do in an automated fashion). That said, I'm willing to bet, for *most* systems, you can automate most if not all of the testing.

      You know your automated test suite's coverage isn't 100%, and you're doing non-automated testing to find things that your automated test suite is missing.

      Beg the question much? If your test suite is missing things, fill in the gaps. If you can't fill in the gaps, ask yourself why.

    3. Re:Three non-automated test cases by dkleinsc · · Score: 1

      Some extremely important test cases that no level of automation can handle:
        - The customer thought he wanted a thingamajig, and you made a perfect thingamajig (as was clearly stated in the requirements document), but it turns out that the thingamajig is confusing to users and he really wants a whatchamacallit instead.

      - UI testing of any kind, where the whole point is to see how humans deal with your software and make sure it's easy for humans to use.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
    4. Re:Three non-automated test cases by Abcd1234 · · Score: 1

      The customer thought he wanted a thingamajig, and you made a perfect thingamajig (as was clearly stated in the requirements document), but it turns out that the thingamajig is confusing to users and he really wants a whatchamacallit instead.

      That's not testing. It has absolutely nothing to do with quality assurance, and simply highlights a failure in requirements gathering and/or project management.

      where the whole point is to see how humans deal with your software and make sure it's easy for humans to use.

      Also not testing. While this is often referred to as "usability testing", it's not QA in the traditional sense of the term, as it has nothing to do with catching bugs or improving code quality.

  124. Do it with someone. by bronney · · Score: 1

    Here's a tip for you developers developers developers. Test together, get some buddies to test your stuff together over a beer. Chat along. It's fun, almost like a game of chess or anything. Sometimes it gets boring, but still fun because of the company.

    ^_^ Group hugs?

  125. Randomize your tests by Anonymous Coward · · Score: 0

    To make algorithm or optimization test cases more fun to code, I try to write randomized tests (with a known start seed to trace any error). I then get thousands of test and hopefully some of them are cases I never would have come up with myself.

  126. Drinking Game by eak125 · · Score: 1

    Each bug you find, you take a shot. This makes finding bugs more interesting and gives you motivation to find them. After a few bugs you will hit the Ballmer Peak (http://www.xkcd.com/323/) but any more after that will cause problems...

  127. testing vs narcissism by Anonymous Coward · · Score: 0

    The fact that you even have to ask such a question proves, to me at least, that you're a lazy, selfish bastard and the only place you might possibly find a job is working at Oracle or Microsoft with all the other lazy, selfish bastards.

    If you're not willing to test your own code, then you have no business writing software in the first place and no one should EVER use your code.

    If you can't be bothered to lift a finger to prove your own theories of coding to be correct, why should anyone else do it for you?

    Do you honestly think anyone else should be a guinea pig for your mental malfunctions?

    Are you going to pay us for our time finding your mistakes? In addition to paying us for our time, are you also going to give us credit for pointing out the errors of your ways?

    Perhaps the people who use your broken code would much rather spend their time flogging you at the pillory or boiling you in oil for the sheer gall you presume upon wasting their time?

    If Ernest Hemingway had taken the same approach to writing his books as you take to writing your software, all we would have ever seen from him was gibberish and an earlier suicide.

    I pity the fools who had to proofread Chaucer and I pity the fools who have to use your software.

    I'm sick of cleaning up after you boy and NO, I still don't know who your father is but I will kick him in his genetically inferior testicles if I ever have the misfortune to meet him again, as revenge for giving me a brain dead child.

    Jeers,

    Your mom.

  128. Tools by the+worm+tyrant · · Score: 1

    Use sikuli to test guis. Or at least to do gui unit testing, sikuli can be applied to websites, webapplications, traditional desktop applications etc, heck even command-line. We even use sikuli at work to do system upkeep, i.e. clearing out junk from the system.

  129. Externalize your tests to your boss :-) by Anonymous Coward · · Score: 0

    If you find it boring, give it to another one.

    Me for example. And for a good reason : I'm the one who talks to the customer, I'm the one who gets all the fire if something goes wrong. So believe me, I have 0 interest in having any bug left and therefore I have plenty of energy to make sure none of them happens. So test enough so that your code is 90% functional. This way I'll be able to test the corner cases and spend time on those boring tests.

    And since all the code I make will be used year in year out, I have a maximum incentive to automate the thing. And guess what : it's so much more rewarding to automate a test ! Why ? Because when it's done, when it passe, you know you'll never ever have to do it again (manually). You can forget about it.

  130. Non-Automated? by LinuxAndLube · · Score: 1

    What do you mean, non-automated testing?

  131. Random testing by Mask · · Score: 1

    Injecting random, but smart, inputs and automatically checking the outcome is much more stimulating than the boring stuff you are talking about. This will stimulate your mind and your code much more than going over a list of events one by one.

    In my experience around 80% of the bugs that my random tests detect happen in a combination of events that I would have never thought of testing. I also make sure that the simple events, a tester would think of, would have a reasonable chance of being tested.

    So, what's the magic? Pure random testing does not work, it has almost zero chance of hitting bugs. Instead, think of corner cases in your input and give them a higher probability (e.g. zero sized string, MAX_INT, MAX_INT-1 and so on). Finally, generate different tests with a different "entropy" otherwise you are testing the same thing over and over again. This "entropy" thing is tricky to explain and to notice. For example, if your input is a bool[1000] and you randomize your elements independently (half True and half False) then, practically, you'd have a zero chance of getting 1000 elements of the same value (which could trigger something interesting)

    The final thing is to check your outputs by validating invariants in your code, either both from inside by using assertions and from outside, finding good invariants is like a riddle. The details are too complicated for one post.

  132. write the test first by FranTaylor · · Score: 1

    Sure you don't want to write the test because you are done with that stuff and you want to move on.

    If you write the test first then you don't end up in this situation.

    The test will be a beacon on the horizon to shoot for, and a validation of your specification (you DID write a specification?!?)

    Put a bottle of something fun on the shelf, open it when the test passes. Motivation!

  133. Not at all by Anonymous Coward · · Score: 0

    The website I am currently working on is an analytics app that shows graphs, figures, costs and projections etc generated from absurd amounts of data. The non-UI side of it is very much science and very not art - the stats and costs are either right or they are not, there is no middle ground. The queries also have to crunch an awful lot of data very quickly and efficiently, but I consider this much more about science than art.

    The UI on the other hand is definately a mix of both, and our team has found it the hardest part to get 'right'. The 'answers' or app gives are either right or wrong, but wether or not our visualisations of the answers convey what they should, and wether our users find it easy to find or generate the information they want is an entirelty different matter.

  134. Make it personal... by Anonymous Coward · · Score: 0

    I don't know how much this will help, but I usually make my tests personal. I work with databases (i know...completely boring), and I'm totally into sports so i import as many stats for my favorite team of the season (summer...baseball, fall, football...winter, basketball). I try to add in as much data for the season as i can and analyze the outcome. If I'm able to expound on a particular stat for a team during the year, it's usually very rewarding...hope that helps!

  135. Software testing by Anonymous Coward · · Score: 0

    As a former senior software test engineer this was my approach:
    Testing starts with the creation of a system specification. - How will you know your software works if you haven't fully defined what it should do.
    From there in complex systems the software is broken into functional modules for coding. Each one of these modules has a defined function, this functionality may and perhaps should be quite small in its scope.
    As each module is coded it can be easily tested against it's functionality as described in the specification. My job was to write these functional tests. This was all done as boundary testing on the basis that a "system" operated on specific inputs and gave defined outputs. Thus avoiding the complexity of requiring vast amounts of complex combinational testing to prove certain things wouldn't happen IF the input conditions changed from the norm.

    Often this testing could be done with processors back to back when much repetitive testing had to be done.

    Eventually the modules were assembled according to the specification, whole system testing followed the same route BUT you started with a firm foundation of knowing that the individual modules did there job correctly.

    In these days of cheap memory and processing power it is unforgivable to produce code that is not set out in as simple a way as possible to make it totally readable to anyone now or in the future, just as it is unforgivable not to FULLY document your task prior to coding and to document the code for future engineers.

    Time spent doing this will be more than compensated for in robust code and code that can be reused and easily maintained.

    Having said all this our department was very successfully in producing systems on time and to budget that worked, - that is until people left and the impetus to do all this work vanished and they returned to the slap happy approach they had previously used - result , programming issues, unhappy customers, project over-run in terms of time and budget.

    Me? I went in to software consultancy and subsequentally teaching.

    Software testing and the creation of robust software isn't rocket science but you won't find a lot written down that is practical or effective and NOTHING that comes under the heading easy!.

    Good luck.

  136. Achievements, with Game Logic and Social features by sakari · · Score: 1

    Game logic works. Anything that needs to be repeated 50 or 100 times suddenly becomes a goal when you attach an achievement to it. Make it social and people will start to complete on testing your software :D If it's done properly with enough feedback for the user and enough obscure achievements, it will work. Actually I think this is something Microsoft should adapt for the future versions of Windows ..

    • 'Run for 8 days straight without rebooting'
    • 'Saw the blue screen of death! Mysterious thing from the past.'
    • 'Witness a 16-bit error screen from the Windows 3.1 era! Oops!'

    Etc ;)

  137. You answered your own question. by mrjb · · Score: 1

    how I can make non-automated testing a little bit more stimulating

    You answered your own question: Automate it.

    If you can't automate it, this is likely because your presentation layer and logic layer are not properly separated- which calls for refactoring (although it's easier and far less time-consuming to do it right from the start). Depending on how picky you are, your program code should ideally be completely controllable by your test code.

    There are more reasons to do this than testing alone. It will allow you to create alternative interfaces for your program. A command-line interface will make it possible to script any task that your program can perform; a completely stand-alone user interface will make it possible to provide different skins for your program; or text-mode menu-driven interfaces, or user interfaces for the visually impaired.

    Surely this whole world of extra possibilities is more motivating than manual testing? (Which, as other posters pointed out, should be done by someone else *anyway*...)

    --
    Visit http://ringbreak.dnd.utwente.nl/~mrjb/growingbettersoftware to download your free copy of the book
  138. Having fun in testing by Anonymous Coward · · Score: 0

    You can enjoy testing as much as coding, if you consider things like this :

    1. build only automated tests. (you can code your own tools - you'll test them along the way)
    2. try to build the more complicated tests you can. Consider it a challenge. Consider it a development in itself.

    This way you can emulate the "creation" path you usually follow when coding software.
    (even more when using your own testing tools)

    The secret is in the state of mind... and I know it's hard to delude oneself, but it helps ;-)

    Then again, as already stated, it's difficult to test well the things you've done yourself : it's hard to think of something that could go wrong, and if finally you think of it you first correct your code.

    That's why I consider system-tests should be done by someone else - if you don't work alone that is.

    Another solution will appear the day you'll work in a team that will insult you very hard for any bug you leave in your code. Not a positive motivation (and quit the job if that happens ;-) )

  139. try writing s/w for these by Anonymous Coward · · Score: 0
  140. Change your work attitude. by raarts · · Score: 1

    I thought you said you like developing software.
    Well, not testing software is doing a half-ass job.

    Don't you take any pride in what you create?

  141. Assertions and component tests by ubertopf · · Score: 1

    I too can't get myself to follow practices such as test-first, but I found a method that is not as ambitious, yet guarantees robust code and only few errors. Whenever I write a method, I think about what I am assuming at runtime and codify these assumptions as pre- and post-conditions at the beginning and the end of a method. These assumptions can be quite complete and I learned that I implicitly make them when writing code anyway, all I do is to write them out as assert statements. Then I devise a set of component tests that trigger different call-flows, hoping to cover a wide variety of states.

    It really provides a great sense of certainty and I learned that I can skip a lot of error handling in the method by just asserting a fact. When I am confident that a function does what it is supposed to do, I recompile without debugging and the preprocessor will drop the asserts. I have made good experiences with this approach and certainty that a method does what I think it does far outweighs the additional overhead of writing the post- and pre-conditions and provides the means to keep your internal model and the actual model of the code aligned.

    --

    something clever to make me stand out!

  142. A simple solution by f3rret · · Score: 1

    Drugs.

    Alternatively if you are not into illicit substances, try beer.

    Might not help you find all your bugs, but at least the whole experience might be more interesting.

    --
    Admit nothing. Deny Everything. Make Counter-accusations.
  143. Short Answer by Anonymous Coward · · Score: 0

    The answer is - YOU CAN'T MAKE TESTING INTERESTING

    No get back to work princess

  144. Try another career? by tehcyder · · Score: 1

    If the prospect of producing the best software you can and testing it isn't stimulating enough, why not take up lion-taming?

    --
    To have a right to do a thing is not at all the same as to be right in doing it
  145. Re:Hard stance is old and busted. by Anonymous Coward · · Score: 0

    There's only so much that can be accomplished with finger pointing and pushing otherwise very able people away because they aren't good and motivated with everything.

    Some other firm is going to hire them and be little more intelligent managing their personnel, while the hard liners are left with high paid super achievers. Same results, different bottom line.

    "You're just lazy" is not the answer to all motivation problems anymore, if it ever was. IOW, this article is asking for intelligent solutions while you're offering the old and busted solution.

  146. LSD by jandersen · · Score: 1

    I find that can make a lot of things much more entertaining - it is the way it makes patterns of colour wander across the screen and everything else. Failing that, perhaps read on below.

    It is so boring and un-stimulating that I usually skip it entirely, pass the testing off to someone else, or even worse, if I absolutely have to test, I do a very poor job at it. I know I'm not that lazy, as I can spend hours on end writing software, but there's something about testing that makes my mind constantly want to wander off and think about something else. Does anyone have any tips on how I can make non-automated testing a little bit more stimulating so I can at least begin to form a habit of doing so?

    I can sympathise with that entirely; but I think it is a matter of attitude - any task can be seen either as a chore or an interesting challenge. If you start on a job expecting yourself to do badly, then of course you will; But think of it like this: when you write a program, you have to plan how you will handle ranges of input values, how to react to this or that event etc - this is no different from planning how to test something, and if you think about how you can test your code afterwards from the very beginning, you can make that part easier.

    When I start on a biggish application, I identify the basic bits of functionality, which I implement in the form of simple command line tools. At the end I join them together in a graphical interface that is little more than a frontend to call commandline utilities. Why? Because it is easy to make automatic test scripts for each of the commandline programs, and it is easy to predict what the outcome of each test should be.

    It helps if you make notes on the way, as if you were going to teach somebody else via email; things like "The reason I do it this way is ...", and "when you do like this, it should react like that". You have to do this while you are writing the code, because that is when you have this hot idea in your mind.

  147. Re:the developer should participate in system test by MadJo · · Score: 2, Insightful

    System testers have to know what the corner cases are. They can't guess them all
    That's why you need proper documentation, like use cases, technical designs. Often (and preferably) written by analists and not the developers.

    Preferably you have a setup like this:
    Business analyst writes documentation based on requirements from the business.
    Developers build the application, based on the documentation.
    Testers write testcases based on the documentation and test the software as soon as it is released to them.

    Testing is a profession too.
    And there are many tools and methodologies (TMap, ISTQB, Testframe etc) to ensure proper test-coverage and to have anything meaningful to say about the quality of the tested application.

  148. You do test, even if you don't write unit test by ciantic · · Score: 1

    Every piece of code you write, you basically test already. It is just how do you test it works in the first place?

    I used to run the software and test it directly after writing. This is a bad idea, much better idea is to write the unit test as you write the actual code instead of starting the software, this way you actually end up being more productive and not starting the software and navigating it all the time. There are of course some pieces of code that is hard or almost impossible to write unit test on some platforms, usually the UI behavior and such.

  149. Someone else by MistrX · · Score: 1

    From a professional tester point of view, let someone else do it. It's wise to do a developer test but actual functional testing is best done if someone else does it (a dedicated functional tester for instance). Firstly, that other person has a different perspective of the piece of software because it reads the requirements and hasn't seen the development process you as a developer did (the functional tester will press buttons differently). ;)

    Secondly, you don't have to spend lots of time figuring out how and what to test. Which is more efficient as you can spend that time on developing other software. :)

    More about structured testing here:
    http://www.ie.sogeti.com/Resources--Downloads/Methodologies/TMap-Test-Management-Approach/

    Software quality becomes more important everyday and only just recently more companies are hiring dedicated functional testers to test that, which you find a tedious task. :)

  150. program tests instead of writing tests tests by hendrikboom · · Score: 1

    So you like programming more than testing? Well, write a program that generates and executes the tests. You'll get to do some more programming. Writing code that iterates through tests systematically can be quite a challenge. For example, it's not easy to write code that systematically generates a lot of varied, syntactically and semantically valid C++ programs for testing a C++ compiler. (Of course you'll also want to do the easier task of generating a lot of invalid programs if you're dong that).

  151. Oh, this is a simple one: by Aladrin · · Score: 1

    I took a look at how much work I had to do after coding without tests, and how much I had to do with proper tests. I quickly realized that not only was coding with tests faster (in the long run) but it was a lot more fun.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
  152. You can't - employ testers, or hand out betas by Anonymous Coward · · Score: 0

    You know the code, and its purpose, too well to make "interesting" mistakes.

    Only a user will:
    * Notice various crashes (os, app) because the cat slept on the keyboard.
    * Write a story in the filename entry field
    * Open the word processor executable with itself - and have it try to recover the "corrupt document."
    * Keep a touchscreen pressed for longer than the device suspend timeout.

    And so on. Well, many of the user failures are a lot less spectacular, but perhaps just as unexpected. If possible, use your own sw for daily work. If not, have some testers. Easy enough for open source projects. For closed source, have a beta program for the power users.

  153. dildo by amn108 · · Score: 1

    Write the software for a programmable dildo, and test it on yourself. It will stimulate you all the way to release :-)

  154. Actually you are lazy by Anonymous Coward · · Score: 0

    I know it is NICE to put the boring work of testing onto someone else but let's get real -- you can test it very well by yourself.

    But I'm too close to subject, but I know how it works, but users do strange things ... cut the shit. You know several things you need to check for that users do not know.

    Not spending time testing is a form a lazy. That is not a poke at you, all software engineers hate testing as far as I know. They would rather be coding or doing anything else.

  155. Treat it as a programming problem by aminorex · · Score: 1

    Implement test pads in your code, and automate all the testing. Manual tests are pretty much a joke anyhow, since people make mistakes. A test which isn't automated is 1) a drain on your soul 2) irreproducible and 3) a loss of long-term value.

    --
    -I like my women like I like my tea: green-
  156. How about because of Pride and Consideration by SirCodeAlot · · Score: 0

    Pride makes me QA the hell out of my code before I turn it over to QA. I hate when people find bugs in my code. It still happens plenty, but hopefully I make it easier on QA. And, that is where consideration comes in, I don't want to make my co-workers job a living hell having to find stupid bugs. I really have an issue with people who don't take the time to make sure their stuff is pretty solid before throwing it over the fence.

  157. Unit tests by Anonymous Coward · · Score: 0

    I love writing unit tests, but I keep introducing bugs in my unit tests. Does anyone have any tips on how I can make debugging my unit tests more stimulating?

  158. One word: Dogfood by Guidii · · Score: 1

    If you write software that you personally use, that makes some testing (smoke-tests, for example) really easy. At least for the use cases that you are actively using.

  159. Topless Dancers Being Chased by Sharks With Lasers by Anonymous Coward · · Score: 0

    Topless dancers being chased by land sharks with lasers.

    I think their Jubblies bouncing to and fro across a white sandy beach would tend to remove the mundane factor from any task.

    Definitely wouldn't hurt to test their software either.

    At least check in on them occasionally to keep abreast of the situation.

  160. Re:the developer should participate in system test by gestalt_n_pepper · · Score: 2, Insightful

    "but, but, you're not supposed to do that".
    Yeah, that one still makes my *hair* stand up. Most devs are superb at narrow domain problem solving. Of course, reality and users tend not to accommodate them. I can't tell you how many times I've pushed the limits of a software package to get something done and it fails miserably.

    So, yes, they will have 37 instances of the software running at once and yes, they will try and save one or more projects/files with the same name at the same time and yes, no matter how many times dev says it's their fault, they're wrong. Machines are designed to accommodate people, not the other way around.

    --
    Please do not read this sig. Thank you.
  161. Write Code to test your code. by Anonymous Coward · · Score: 0

    I generally prefer to write additional regression test scripts to test my modules.
    Combination of perl and shell seems to work well.

    Given that your program has fixed output and does not implement dynamic logic as much e.g. Rules Engine.

  162. Welcome to /. by dazedNconfuzed · · Score: 1

    You're new here, aren't you?

    When persuade a Beowulf cluster of petrified Natalie Portmans to pour hot grits down your pants, then maybe we'll review your advice.

    BTW: posting as Anonymous Coward does more to lower the overall level of this site.

    --
    Can we get a "-1 Wrong" moderation option?
  163. Try Music by Anonymous Coward · · Score: 0

    Try listening to music. It helps keep my mind stimulated while doing mundane work.

  164. Sit on your own customer service phones by grikdog · · Score: 1

    Fine yourself a thousand dollars for every bug you ship, ten thousand for every BSOD a customers sees. Each time.

    Hire an old programmer without a job to scream obscenities at you for shipping rip-off jack*** software.

    Grow up.

    --
    ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
  165. If it's boring... by Anonymous Coward · · Score: 0

    If testing is boring, you're not doing it right. Yes there are significant periods of drudge work, but before that there's planning for the testing that should be as much if not more brain work than designing the code. And even in the middle of the drudge work you're always on the look out for a way to use the software you didn't plan for. "Hey, what if I double-click this, then enter 300 characters in that, and then click Apply. Oh look, it's formatting my hard drive and every field in the database has been changed to 'Yellow Watermelon!'."

  166. You Can Make Testing More Stimulating +1, Good by Anonymous Coward · · Score: 0

    by drinking more coffee of the caffeinated variety. If that doesn't work, switch to methamphetamine.

    Obviously, you've never heard of a search engine.

    Yours Truly,
    K. Trout

  167. Experiment by dc5464 · · Score: 1

    I myself am in the midst of QA of software (web site) I've spent the last year writing. It's all well unit-tested but there's plenty more integration testing of the new functionality and worse, regression testing. Ugh.

    There's no one else available to test (well, there's another dev in the same boat as me). I firmly believe that I'm the worst tester of my own code for all the reasons already stated. Other Dev and I will test each other's code to the extent possible, but that will help only so much.

    I have a plan for today: I'll find a good podcast or something, one that will demand my attention (maybe In Our Time). I'll try to find a sweet spot where I'm giving 5-10% of my attention to my web site interactions. I figure that if I make sure to simply continue interacting--even if only randomly--I can approximate the mind set of the typical user. In the meantime I might learn something from the podcast or at least be somewhat entertained. It's win-win.

    I'll let you know how it goes.

  168. a successful test finds a bug by murdocj · · Score: 1

    There's a line from the book "The Art of Software Testing" from Glenford Myers that has stuck in my head: "A successful test finds bugs".

    In other words, you redefine success as "I found a bug". After all, if you test and don't find a bug, all you've done is waste time. You haven't improved the product. You haven't "proved correctness". The only way to improve the program is to find and fix bugs.

    Since we're all driven to be successful, once you get into the mindset of "success is finding bugs" you will be astonished at how many bugs you find.

  169. Re:You could try silly tricks to make it interesti by DRAGONWEEZEL · · Score: 1

    ADD here.
     

    to those who aren't afflicted with ADD/ADHD, which I imagine most developers aren't

    I have to say you are exactly right that I could never be a coder full time. I took some classes, aced them (well, the tests anyway), but the work is way too boring, worse, the teams in college were like 3 people who each said "oh, I'll code the about screen..." and me who made a functional DB front end for some class DB. Testing however, was the worst of it all.

    --
    How much is your data worth? Back it up now.
  170. Beatings by Anonymous Coward · · Score: 0

    Severe Beatings.

  171. Hack your code, try to break it by Anonymous Coward · · Score: 0

    Well you can always challenge yourself to try and hack your code or break it by thinking like a moron before testing. Find the most outrageous idea possible that a idiot might type or do to your code. I know that when I was coding I would leave my code for a few hours, go have a few drinks and then try to do something with my program. Other times I would get my drinking buddies to come hammer on the keyboard to try to break my code. It was always entertaining.

    If all else fails find someone with a kid about 3 or 4 years old that can do more than drool over the keyboard. Let them hammer away at it. My 4 year old can sit at my keyboard with the login locked and still manage to fubar the system so bad I have to boot into safe mode or pop in the OS CD and kick in to rescue mode to figure out what the hell he did without ever logging in.

    Plus if you like kids you can make some cash babysitting them while you let them try to trash your code.

  172. Reduce your test time ... by lwriemen · · Score: 1

    ... by doing more analysis and design before you write the software. Automate as much of you software processes as possible. If you can model your analysis, test the analysis models, and generate the analysis models directly into code, you will eliminate a large amount of test and development time. You also get to avoid the mind-numbing repetition involved in a lot of the aspects of every-day 3GL coding life. (Some of which can also be avoided by developing good reuse libraries, but not all.)

  173. Work on your congitive abilities by weazel2006 · · Score: 1

    The post states that the author knows how to test and does attempt to test. (his mind wanders off during the process) I believe the answer is to improve or work on your cognitive abilities. (meta thinking if you will)

    Tony Robbins has some easy to listen to motivational material that could help. Focusing on the task at hand without becoming distracted is the key.

    Try testing other peoples code and when you come across a very obvious bug and you cannot understand how the programmer missed it, you will find more motivation to test.

    Nothing can take the place of QA testing but I find that performing my own simplistic tests saves everyone involved time.

  174. Automate it! by Anonymous Coward · · Score: 0

    Nuff said.

  175. You're doing it wrong by stewbacca · · Score: 1

    If you are testing your own code, you're doing it wrong.

    You said it best:

    It is so boring and un-stimulating that I usually skip it entirely, pass the testing off to someone else...

    My work has an entire department of software test engineers, many of whom can't write a line of code (non-automated testing, obviously). The best testers we have are the ones who think like users and aren't biased by their inner-geekness.

    I'm pretty sure authors don't proof their own work, so why would it be different for people who write thousands of lines of hard to read text on a computer screen for 8-12 hours a day?

  176. Unit Test your own code and quit wasting QA time by Anonymous Coward · · Score: 0

    I'm working my first job as a developer, with a fairly small team of consultants, so I'm at the bottom of the ladder until I "prove myself" if you will. This means I mostly do QA work, rather than developing. No offense, but I and testers like me absolutely HATE developers like you. I can think of two or three coworkers who have your same attitude toward unit testing their own code, and who I can tell never do it, because I constantly have to write what we call Warrroom tickets describing the bug, and then when they "fix" the bug, I have to test the exact same code 4 or 5 times before it is actually fixed. I spend most of my day doing this kind of crap, because two or three lazy developers think they are above unit testing their own code, and they would rather waste my time than theirs.

  177. Re:the developer should participate in system test by Kiaser+Zohsay · · Score: 1

    leaving the dev to sputter "but, but, you're not supposed to do that".

    My favorite quote on this subject: "If there is a button there, somebody is going to push it." Over and over again, I have been surprised by users who have put normally safe options together in ways that result in disaster. As a developer, it is my responsibility to make sure that the self destruct button is NOT right next to the refresh button, and that the self-destruct button has an obvious warning message before the countdown starts. Even though user insanity is not something you can test for, you can minimize its impact with an effective user interface design.

    Unit testing has saved my ass numerous times. One test in particular pumps a bunch of random data into the system and writes out every possible output format with said random data. Garbage in, garbage out, but its repeatable garbage, and each release establishes a baseline for these output files. Prior to the next release, I repeat the test, and diff the output against the baseline. Any changes that can't be attributed to fixes in the new release are bugs that need to be tracked down. This test is good for catching problems from small code changes that ripple to unintended places.

    --
    I am not your blowing wind, I am the lightning.
  178. You are lazy by Anonymous Coward · · Score: 0

    I know I'm not that lazy, as I can spend hours on end writing software, but there's something about testing that makes my mind constantly want to wander off and think about something else.

    Stop fooling yourself, that is pretty much the definition of laziness. You can only be bothered to do the things that interest you. Anything else, no matter how important, and you either put it off or half-ass it.

  179. Ratio of product to test framework code? by tepples · · Score: 1
    Abcd1234 wrote:

    Uh, you define the requirement.

    Given the placement of objects in a Super Mario Bros. level, and the behaviors of those objects, how would I go about automatically assessing the difficulty of directing a character through the level?

    Most code in a simulation is *not* random, it's fed inputs from other parts of the code, which ultimately result in the behaviour you describe.

    Low-level code in a simulation is testable. But at a certain stage, the mock framework can be substantially bigger than the piece of code that you're testing. What is a typical ratio between product lines of code and test framework lines of code?

    Second, the implicit assumption is that there is *some* way to determine, based on inputs, if the outputs of your software are correct.

    For some outputs, there exists a way to demonstrate that the output is correct. For some outputs, there exists a way to demonstrate that the output is incorrect. For other outputs, the question is intractable. For example, consider a random level generator for Super Mario Bros. In this case, levels outside the player's chosen difficulty range are incorrect.

    Dishwasha wrote:

    First off, don't do non-automated testing. It's unnecessary.

    Abcd1234 wrote:

    Third, realize automated testing isn't the end-all and be-all of testing.

    Then you appear to disagree with Dishwasha.

    Beg the question much? If your test suite is missing things, fill in the gaps.

    Acceptance testing helps find gaps to fill.

  180. Testing the test suite by tepples · · Score: 1

    How do I write code to test the test suite itself for coverage and correctness?

  181. Ask this on StackOverflow.com by Jherico · · Score: 1

    You should ask this on Stack Overflow, or better yet, see if there's an existing question that maps closely to this one and engage in the discussion there. Its less full of howler monkeys and asshats than Slashdot, and generally gets more useful and serious answers if your question is programming related.

    --

    Jherico

    What can the average user can do to ensure his security? "Nothing, you're screwed"

  182. Re:the developer should participate in system test by aGuyNamedJoe · · Score: 1

    "but, but, you're not supposed to do that".

    Yeah, that one still makes my *hair* stand up.

    Still one of my favorite moments, 3x years later, is the stunned sputter from the summer student (who'd written a unix program to interpret an octal dump from 1ESS error messages) when, on my first run of it, I redirected a unix directory into it and it crashed immediately...

    His introduction to diabolical testing.

    That's one way to make testing fun.

  183. Writing Solid Code / Microsoft Press!! by Anonymous Coward · · Score: 0

    one of the two STEVEs that Microsoft hired to write excellent books ( the other being Steve McConnell, of Rapid Development, etc, fame )

    If you're relying on your testers to find the bugs, you're GUARANTEED too-many bugs:

    Don't let the buggers exist, in the first-place!

    Pragmatic Programmers, also:
    automate testing, make it as complete as possible, and you HAVE less problems down the road...

    As Jeff Dunteman used to say:
    Keep on hacking!

  184. Get all testers to make funny data if applicable by Beerdood · · Score: 1

    You can entertain yourself by putting in some cheesy data (but don't tread into material that might be offensive..). If you're working with some other testers, encourage them to do the same and your life will be a hell of a lot less boring. I.E. if you're working on a forum or something, make a post "I put on my wizard robe and hat" (just saw that a few posts ago, almost made me spill my coffee). I do a significant amount of testing at my job, and even though I'm often the only one testing, I still laugh sometimes just thinking of what someone else might think if they saw this or that

    I work on some software where the acronym "cat" is sometimes used and my project manager hates cats, and especially lolcats. So naturally I uploaded a picture of keyboard cat as the profile pic for the primary test user / admin account for the application (so every time they logged in, they saw that picture). At the next conference call one of the consultants said "Hey I really like that picture of the cat!" and another one half jokingly said "Hey, maybe we can use that pic as the company logo!". The PM rolled his eyes and said "..If I could shoot you all right now over the phone, I would..". Best conference call ever!

    --
    Global warming and other natural disasters are a direct effect of the shrinking number of pirates - Gospel of the FSM
  185. Re:the developer should participate in system test by YrWrstNtmr · · Score: 1

    As a developer, it is my responsibility to make sure that the self destruct button is NOT right next to the refresh button, and that the self-destruct button has an obvious warning message before the countdown starts.

    The 'obvious' warning still doesn't work.

    One of our major apps has a 3 level delete.
    "If you delete this, it is gone forever" OK/Cancel
    "Do you really want to delete this?" Y/N
    "Do you really want to delete this? It will be gone forever." Y/N

    Weekly, we get calls - 'Can you restore x, from 2 weeks ago?'
    FML

  186. Make testing prestigious by Anonymous Coward · · Score: 0

    There's this nice story i remember reading about the Black Team, found it here: http://a.mongers.org/clueful/20020402-peopleware-blackteam

  187. Testing is good and fun... by Anonymous Coward · · Score: 0

    If you test every newly written piece of code well/good then you can be confident that it is correct...

    Then later you don't have to test it that thoroughly anymore and you only have to test new code...

    It's also quite interesting to see what kind of programming mistakes you make...

    Pretty much every 10 lines of code contain at least one bug... so if you never test than your code must be really bad.

    Designing beautifull classes can also be kinda rewarding... but I guess you just a C programmer so that's part of your problem right there ;) :)

    Ultimately it depends on what goal you want to reach... if it's just some shitty program and you don't know if it's gonna be valuable I can understand why it's written like crap...

    Try to work more modular... that way re-using code because more valuable.

  188. My 2 cents by opencode · · Score: 1

    I'm a veteran tester, and we all think we could write a book on the subject. Fortunately, O'Reilly wrote such a book already ('Beautiful Testing'). So I'll just make one other comment not yet covered:

    Not all testing can be automated: I'm thinking of UI testing (or verifying all bells n' whistles are in place). It doesn't take long to check, and it's not even the most critical part of the testing process (functional UAT is, imo); but it's the first and last component of the app the end-user sees.

    --
    "He who questions training trains himself at asking questions." - The Sphinx, Mystery Men (1999)
  189. Better. Imagine support left the debug symbols in by Colin+Smith · · Score: 1

    So that when the app falls over at 3am, they can pinpoint the line of code and committer in the repository.
    Imagine they have a list of people who caused them to receive phone calls at 3am, and they are sorting the list by number of calls. Imagine they have admin access to the human resources databases and know where all the developers live.
    Imagine you've seen "Guns & Ammo" magazines and pirated copies of "Rampage" lying around in their offices.

    Or... sharks with lasers.
     

    --
    Deleted
  190. This might help... by Anonymous Coward · · Score: 0

    You can get a second monitor and open some porn on it...
    That might stimulate you...
    Although Im not really sure about the quality of the testing...

  191. Trade software. by lpq · · Score: 1

    Find other people to find bugs in your stuff, you find bugs in their stuff.

    Go fix,
    repeat.

    Testing your own software is a bit like trying to tickle yourself....
    doesn't work so well.

    Sure, I can test all the places where I know something might go wrong (but have already coded for), where I will miss testing are the places I never thought to look or write code for...

    You can't know how much you don't know (and usually, the more people think they know is only representative of how much they don't begin to grasp the whole picture).

  192. good thing you are anonymous by Douglas+Goodall · · Score: 1

    If you had signed your name, we could avoid hiring you to write any software.. Testing is about creating the highest quality software. If you have any pride in your work, you would want it to be bug free. I have known programmers who thought they were too good to test their own code. They were assholes. If debugging is the art of removing bugs, programming must be the art of putting them in. When people tell me they have found a bug in my software, I get all happy and thank them, because each bug found and corrected puts you that much closer to a perfect product. I don't think there is any magic bullet that makes debugging more fun, or entertaining. But producing quality software is rewarding in many ways.I can hardly believe you asked the question. I can hardly believe they thought the question was worthy of being on today's list.

  193. Late Pleistocene Whining by LuneKeltkar · · Score: 1

    Soul Skill,

    Your question is so totally not an issue. Software testing protocols have been set up for decades now, and that makes them basically an ancient crossroads on a land bridge that existed before the Last Glacial Maximum. That happened sometime toward the end of the Pleistocene.

    Go out, find a date with a human (man or woman), and chug some bottles of beer. Testing isn't the tyrant you make it; in fact, testing is something like the feeling that builds up just before a male orgasm: You know something's happening, but you're not entirely sure what may come out. Still, any excuse will serve a tyrant. I read that somewhere.

    If you can't find a date, come to Punta Gorda. I'll make you crab cakes with mango chutney and an Old Fashioned, and we'll test the waters, which are easier to test than code. Otherwise you may become Soul's Kill, and we don't want that. We don't want that at all. So very messy.

    Best,

    --
    Lune Keltkar
  194. Act like if it was a real life, not only testing by Anonymous Coward · · Score: 0

    Imagine an actor playing Hamlet for the 100th time. That must be so mind numbing!
    I don't actually know how actors cope with that issue, but we can approach it from another point of view.
    i.e. if they have to learn new role to learn, they normally get to know something about the environment in which his character was living, and they are trying to find themselves in the same place.

    So if your software is for CD/DVD/blue/whatever recording, download a lot of p2p until your disk is full, so you'll get the motivation to use it ...lol...

    In general try to be the consumer for your product, and in the first place get to know who that consumer is...

    Approaching broad tasks almost always gives that kind of feeling of repellency, so set your limits. Extract a subtask for a day (or just half an hour a day) and do it well. This way you might be surprised how much you've done after a while.

  195. test all new features right away in small chunks by Anonymous Coward · · Score: 0

    This is how I code, and it really serves me well - there are seldom any bugs in my code, and I actually enjoy the whole process:

    1. Start with the framework, something that you can use right away. If you're making a C program, start with just the main function and argument handling. If it's a Web program, start with something that will display "hello" or draw some rudimentary form/table/etc.

    2. Add things one at a time, and test them right away. Say you're making a program to process some text file - add the code to open the file, read the first line, process it, print the results, and close the file. If it's a Web program, create some basic tables/buttons. Then run it, see if it's working as expected. Try a few unusual cases and see what happens - the text file doesn't exist, or contains unexpected data; the user clicks the Submit button without selecting a product; etc.

    Testing in small increments like that isn't very boring because you only spend a minute or two doing it. Very often you'll find bugs and fixing them will be satisfying. Then testing again to make sure the bugs are fixed is also satisfying. Keep progressing like this, making sure the code is always just a few lines from working so that new code can be tested right after it's finished. This way there will be very little testing needed at the end; you will know it has to work right because you tested each new piece as you wrote it. Then you just need to give it a few simple sanity tests and you're done.

  196. What do you mean? by lsatenstein · · Score: 1

    How do I make testing software more stimulating? Do you mean that you would find a way to connect it to a vibrator? Or do you mean How do I make the testing of software more stimulating? Here I would understand, how to relieve boredom.

    --
    Leslie Satenstein Montreal Quebec Canada
  197. Re:You could try silly tricks to make it interesti by dougisfunny · · Score: 1

    Yeah, I figured a job that requires a lot of abstract thought where you have to envision lots of steps/objects in your head might be problematic to someone with an attention deficit.

    --
    This is not the funny you're looking for.
  198. Anonymous Coward by Anonymous Coward · · Score: 0

    Actually the problem is you wrote it (the software), so you are absolutely NOT a good tester. It is always better to have someone that don't even know how to program or type that well, test it.
    Why? You will get better test results.
    That is true of anything anymore.

  199. Re:the developer should participate in system test by Anonymous Coward · · Score: 0

    And, yes, someone up in management set your deadlines a year ago and the software is late and it's all your fault, Mr. only-worked-90-hours-last-week!

  200. Real motivation by NateTech · · Score: 1

    For every bug you miss, you give back 1/10 of your monthly salary. That ought to make it interesting enough.

    --
    +++OK ATH
  201. No you cannot by sonamchauhan · · Score: 1

    Automate it instead

    JMeter
    LoadRunner
    *Unit
    etc.

  202. three things by Anonymous Coward · · Score: 0

    1. Several hot naked women
    2. Hot tub filled with tequila
    3. Methamphetamine

    Works for me every time.

  203. Extreme situations require extreme measures by Anonymous Coward · · Score: 0

    It seems to me that your problem requires extra-help.

    Add real sex. For each bug that you find as a result of a test, go out for a blowjob. Don't be cheap, pay extra if you have to. Just get yourself a good old blowjob.

    You too, gentlemen.

  204. Just test it, you lazy bugger. by Anonymous Coward · · Score: 0

    Alternatively, fanny about with millions of unit tests and spend ages arsing about with fancy design patterns to get 100% code coverage statistic and a whole heap of abstraction that noone can understand.

  205. So Bored It Hurts ... ??? by Snowlark · · Score: 1

    interesting ... seems the most common thread here is folks only looking at this as "QA" or GUI Test Monkeys ... anyone here ever heard of Quality Engineering ...???

    QA is always more reactive ... QE is always more predictive. if one takes an engineering approach to the test, verification, work-flow, user experience, and overall quality of the product, boredom just fades away. if one continues to look at the skills required as "post result" and not part of the whole, sure, i guess one can get bored ...

    i've been in this field (QA & QE) for 20 years. i'm still not bored.

    oh, and i write/develop/design software and hardware+software as well ... this entire endeavor is far from boring, IMHO ... :)

    hope you find your way!

  206. Testing software more exciting? by ps2os2 · · Score: 0

    Well what is "fun" to one is not fun to another. But one software author has a YAHOO group and asks everyone to test out his beta's.
    I am a member and the product is well known for its versatility and the feature number of options that fill probably 50 screens worth of some really obscure options.
    The guy quickly investigates any reports and fixes them before general release.
    Since everyone is eager to find bugs the email list is lively and can get a bit esoteric as you have to be an expert in the field to understand some of the options.
    The beta I installed tonight will b e about the 20th so far this year. I find some(bugs) from time to time and I really test out his product and I do find some bizarre issues.

    The author does not speak great English and that adds to the fun(?).