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

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Developers Who Test (and Don't)

Developers Who Test (and Don't)

Scheduled Pinned Locked Moved The Lounge
beta-testingcomtestingquestioncareer
79 Posts 39 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Mark_Wallace

    I've worked with people like that, but I've also worked with people who were specifically hired as testers. What I've seen is that the arrogant kind of dev you're talking about (and they exist just about everywhere) tends to be a lot more careful -- and involved! -- when they know that there is someone who will be confirming that everything works OK. I know that the next comment my annoy some people here, but this is somewhere where Agile works exceedingly well. The morning stand-up ritual builds really good connections between devs and testers.

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

    R Offline
    R Offline
    raddevus
    wrote on last edited by
    #31

    I can actually see what you mean in the case of (true) Agile, because in that case the hand-off from dev to QA should be so tight that it is as if the hand-off were simply the one person who played the role as dev would now put on her QA hat and do the tests. In that case you would be right and that is really how it should work and that is again directly tied to ownership. But, i assure you, long ago when that dev said that to me, it was entirely because testing was beneath him. Great conversation here though.

    1 Reply Last reply
    0
    • R raddevus

      R. Giskard Reventlov wrote:

      I really don't understand the notion of cobbling code to together and passing it up the chain

      I can't get inside that mentality either. It's quite terrible. I think it's either: 1. complete Ego-driven dev with a seasoning of laziness or 2. complete Lazy-driven dev with a seasoning of ego. :laugh:

      M Offline
      M Offline
      Mycroft Holmes
      wrote on last edited by
      #32

      I fit into option one: The ego will not allow me to deliver crappy code - the QA (users) are anally retentive, pedants who delight in sending back a bug report. Laziness - I loathe writing the same code twice.

      Never underestimate the power of human stupidity RAH

      R 1 Reply Last reply
      0
      • R raddevus

        Osherove's book is a great one. This new one I mentioned is quite good too because it takes a broader view and doesn't just focus on Unit Tests but is attempting to change the mindset of developers to understand they need to : build quality in. Also, Unit Tests / TDD can feel redundant... ...as soon as you write them, you alter the code to pass those tests but then you don't need the tests to run any longer because you know you altered the code to pass the tests. But, they are helpful because, 1. they help you think about quality 2. they help with regression testing

        D Offline
        D Offline
        Dominic Burford
        wrote on last edited by
        #33

        I find unit tests helpful when initially developing some new functionality, as they allow me to focus on the new functionality and getting that working in isolation. Then I can look at integrating the new functionality when I know it works. And definitely agree with your point about regression testing. I think this is possibly the single most powerful reason to use them. If I make a change to the code, I want to be sure I have changed all the affected areas, and breaking unit tests gives me exactly that.

        "There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare Home | LinkedIn | Google+ | Twitter

        R 1 Reply Last reply
        0
        • R raddevus

          I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

          Jeff Langr said:

          One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

          Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

          D Offline
          D Offline
          dazfuller
          wrote on last edited by
          #34

          We're set up here now with SonarQube hooked into the CI system so if test coverage on new code is below 80% the change is automatically rejected (and it does reject changes). We still get people saying "I don't understand why I need to test", which I hear as "I don't understand why I need to write higher quality code and catch issues earlier when they can be fixed more rapidly and where it's cheaper to do so". I find that if you can set up a system to show unit tests being run, coverage information and actions being taken when issues are found then there tends to be more corporate buy-in. We had a senior manager here who wanted screens up so he could see the information each time he walked by the different teams.

          Eagles may soar, but weasels don't get sucked into jet engines

          1 Reply Last reply
          0
          • J Johnny J

            Sereiously, I've seen VERY few unit tests where I didn't think: There's no way this is EVER going to fail! And then I wonder: Why did you (not me, but the programmer who wrote it) waste your time writing the test (and running it over and over again)? :confused: And why do managers insist that you write tests for every tiny detail that can't possibly go wrong? I'm not against unit testing as such, but I think it's WAY overrated. To be fair, I HAVE seen tests that were actually were nice to have (and written one or two myself) - but mostly waste of time in my opinion! :doh:

            Anything that is unrelated to elephants is irrelephant
            Anonymous
            -----
            The problem with quotes on the internet is that you can never tell if they're genuine
            Winston Churchill, 1944
            -----
            I'd just like a chance to prove that money can't make me happy.
            Me, all the time

            H Offline
            H Offline
            Herbie Mountjoy
            wrote on last edited by
            #35

            And who tests the unit test

            We're philosophical about power outages here. A.C. come, A.C. go.

            1 Reply Last reply
            0
            • R raddevus

              I've worked in numerous roles in IT so this method works for me. I'm destructive to software. I started out in support at a medium sized place with a smaller software group (25 people). The dev sat a row over. I asked him once, "Hey, this customer makes a great point. Why does this do that?" GreyBeard: Shut up! I then moved into QA. Once the devs were having a design session that leaked into the hallways. Another support guy -- who really used the software to help users -- said, "Hey, I think you're forgetting about X." GrayBeard Devs: Shut up! We will cross the bridge when we get to it. You are wrong about that design element. Support Guy: Wait guys. Seriously. Think about-- GrayBeards: Shut it! Support guy: :confused: 6 months later after new software release with this new design... Support guy: <hangs up phone> Remember that design element I mentioned? Well, the customer just fell into that hole. Graybeards: Shut! Up! Support Guy: I'll enter it as a bug in the system. :rolleyes: Later in my QA career, devs would say, "hey, monkey, go test and we'll give you a banana..." I entered a 10,000 character URL and hit post. It crashed Oracle instance!! Hahaha... (no, you cannot do that now, but you could in IE 2.x,3.x) Enter steps into bug tracker and submit. Heh, heh, heh. There's your treat, dev. Dev: What do you want me to do with that bug you entered. me: I don't care. It kills the Oracle instance and your app dies so it doesn't mean anything to me. Ignore it if you like. If you feel confident to go to prod with that. Dev: <sulks off into another direction. > For the win!!

              M Offline
              M Offline
              Mohibur Rashid
              wrote on last edited by
              #36

              raddevus wrote:

              Dev: What do you want me to do with that bug you entered.

              I would have start a fire after that question.

              I do not fear of failure. I fear of giving up out of frustration.

              1 Reply Last reply
              0
              • T Tom Deketelaere

                A quote from a former colleague: "Stop finding bugs, that's the clients (= user) job" And yes she was serious, and no that wasn't even my worst experience dealing with her.

                Tom

                M Offline
                M Offline
                Mohibur Rashid
                wrote on last edited by
                #37

                You should not have ask her out.

                I do not fear of failure. I fear of giving up out of frustration.

                1 Reply Last reply
                0
                • R raddevus

                  I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

                  Jeff Langr said:

                  One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

                  Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

                  W Offline
                  W Offline
                  W Balboos GHB
                  wrote on last edited by
                  #38

                  I must be so freakin' old. It would never occur to me to give someone something attributable to me without making sure it works. I've wasted so much time. If there's a problem then someone would probably tell me if it were really important. So much time wasted.

                  Ravings en masse^

                  "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                  "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                  R 1 Reply Last reply
                  0
                  • W WiganLatics

                    OriginalGriff wrote:

                    used by your bank, your car, your life support machine

                    User Acceptance Testing?

                    W Offline
                    W Offline
                    W Balboos GHB
                    wrote on last edited by
                    #39

                    WiganLatics wrote:

                    User Acceptance Testing?

                    That's how things are done. Just consider the current failure rates for HDD's. They're cheap and they'll replace it. Much cheaper for them then paying someone to make sure they (at least) work when they leave the factory.

                    Ravings en masse^

                    "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                    "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                    1 Reply Last reply
                    0
                    • R raddevus

                      I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

                      Jeff Langr said:

                      One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

                      Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

                      D Offline
                      D Offline
                      DodgyCode
                      wrote on last edited by
                      #40

                      If for nothing else, I find unit tests the quickest way to debug new features and check they actually work. Far quicker than manually clicking through UI controls until you get to your new feature / bug fix. Although I have worked with devs who pass on to QA without even running through the code themselves . .

                      R 1 Reply Last reply
                      0
                      • R raddevus

                        I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

                        Jeff Langr said:

                        One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

                        Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

                        A Offline
                        A Offline
                        AndrewDavie
                        wrote on last edited by
                        #41

                        Sometimes it's better that the original developer doesn't write the (automated) tests. Sometimes all that means is that the developers misconception of the requirements gets written twice. OTOH, a test script that runs through all the expected interactions is useful, and yes, the basic test data for those interactions. That said, most place I've worked don't have dedicated testers - just user acceptance testers.

                        R 1 Reply Last reply
                        0
                        • R raddevus

                          I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

                          Jeff Langr said:

                          One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

                          Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

                          K Offline
                          K Offline
                          kalberts
                          wrote on last edited by
                          #42

                          Sure, programmers should do some unit and module testing. But too often, programmers test their software when used the way it is supposed to be used. It is not like the "five year old test": Place a five year old by the keyboard and tell him "You just do what you want to do, and you'll have another ice cream cone every time you make the program crash". Real testing must be done by "misbehaved" testers. People who are paid by the number of bugs they find, not by the number of code lines they write. 30 years ago, before software testing was an established discipline, we used student summer interns: If they stayed with us for more than half a year, they learned the programmer's way of thinking, using the software the intended way, and the number of bugs detected gradually. Every summer we got a new group of students, unfamiliar with the software, and the detected bugs count rose sharply. Nowadays, we have a separate testing team - full time, but then: They are educated in the discipline of testing. Their profession is to identify corner cases, defining stress testing, managing bugs databases (programmer solution: add a comment in the code: "To do: Fix this bug when time allows" :-)), and rating the severeness of the bugs, making sure that the all the serious bugs are really fixed before the product is released. Besides: Their job is to bark at the programmers when bugs are found that should never have been made at all. Programmers don't like to be barked at. So they do proper unit and module tests just as much to quiet down the testers as to satisfy the customers :-) I think the t-shirt I am wearing today is somehow related to my own program/bug-writing experience - it says "Experience - the ability to recognize a mistake when you repeat it". That certainly describes my experience when my code goes to the testers.

                          R 1 Reply Last reply
                          0
                          • M Mycroft Holmes

                            I fit into option one: The ego will not allow me to deliver crappy code - the QA (users) are anally retentive, pedants who delight in sending back a bug report. Laziness - I loathe writing the same code twice.

                            Never underestimate the power of human stupidity RAH

                            R Offline
                            R Offline
                            raddevus
                            wrote on last edited by
                            #43

                            Actually, that's a really great personality description of most devs, I hope. I agree 100%. And you've raised an important point about some testers who have a chip on their shoulder and just bug report on the most ridiculous details. Great stuff.

                            1 Reply Last reply
                            0
                            • W W Balboos GHB

                              I must be so freakin' old. It would never occur to me to give someone something attributable to me without making sure it works. I've wasted so much time. If there's a problem then someone would probably tell me if it were really important. So much time wasted.

                              Ravings en masse^

                              "The difference between genius and stupidity is that genius has its limits." - Albert Einstein

                              "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010

                              R Offline
                              R Offline
                              raddevus
                              wrote on last edited by
                              #44

                              W∴ Balboos wrote:

                              It would never occur to me to give someone something attributable to me without making sure it works.

                              That's exactly how I feel about it. It was literally like listening to a crazy person when he said he hadn't even shot one element of data through the thing. Crazy! And, you're not old, you have a fine attention to The Craft of Software Development. (Also, I'm old too.) :laugh:

                              1 Reply Last reply
                              0
                              • D DodgyCode

                                If for nothing else, I find unit tests the quickest way to debug new features and check they actually work. Far quicker than manually clicking through UI controls until you get to your new feature / bug fix. Although I have worked with devs who pass on to QA without even running through the code themselves . .

                                R Offline
                                R Offline
                                raddevus
                                wrote on last edited by
                                #45

                                Absolutely! Great comment. Griping about unit tests and/or just not doing them is akin to griping about Source Control. If you don't understand how much value Source Control brings as a developer and you only see it as overhead, then you probably don't really understand a lot about real dev. Source Control is annoying at times, but it saves so much work. Same thing for unit tests.

                                D 1 Reply Last reply
                                0
                                • A AndrewDavie

                                  Sometimes it's better that the original developer doesn't write the (automated) tests. Sometimes all that means is that the developers misconception of the requirements gets written twice. OTOH, a test script that runs through all the expected interactions is useful, and yes, the basic test data for those interactions. That said, most place I've worked don't have dedicated testers - just user acceptance testers.

                                  R Offline
                                  R Offline
                                  raddevus
                                  wrote on last edited by
                                  #46

                                  AndrewDavie wrote:

                                  just user acceptance testers.

                                  That's a good way to look at this and it sparked a thought in me. User Acceptance testers can decide whether the software meets the user requirements and bascially fulfills the outward contract. So the testing could determine that the software is 100% correct. However, without unit tests the design underneath could be so terrible that as soon as the customer wants to add an "easy change" the design may be so brittle that everything falls apart. So unit tests and other tests can/may indicate where the design is broken or bad and those kinds of tests would never be found by acceptance testers. Good comment. Made me think.

                                  1 Reply Last reply
                                  0
                                  • R raddevus

                                    I just started reading a very interesting book (Developer Testing: Building Quality Into Software (amazon)[^]) and the intro reminded me of a time I had a similar exchange with a dev.

                                    Jeff Langr said:

                                    One developer, however, quit two days later without saying a word to me. I was told that he said something to the effect that “I’m never going to write a test, that’s not my job as a programmer.” I was initially concerned that I’d been too eager (though I’d never insisted on anything, just attempted to educate). I no longer felt guilty after seeing the absolute nightmare that was his code, though.

                                    Back in the day when I was in QA, I approached a developer about a recent change he'd made to the code. Me: "Hey, can I get the data you used to test your changes?" Dev: "What data?" Me: "Well, you know. The data you used to test after you made the changes and did the build? I figure I can use it as a starting place for data I can send through to insure the changes work." Dev: "Oh. I didn't run any tests. That's for you to do. I built the thing and put it out there. Now, go test it." Me: :wtf: :~

                                    E Offline
                                    E Offline
                                    englebart
                                    wrote on last edited by
                                    #47

                                    I also find that if you want to make testable code, stay as "functional" in your programming as much as possible. Anecdote: I recently had to rework a monolithic module. The final result was 4 independent modules (separation of concerns) that were pure functional (inputs, outputs, no side effects) which generated almost the same information, but it was a lot easier to test/debug/capture intermediate results/replay/prove/etc. The functional/separated modules actually were a lot cleaner and faster (less iterations) since one data structure in the old monolithic was split into separate,focused structures in the new modules. After the refactor was complete, then the new requirements were added with clearly observable/diff-able results in outputs of the affected modules.

                                    C 1 Reply Last reply
                                    0
                                    • K kalberts

                                      Sure, programmers should do some unit and module testing. But too often, programmers test their software when used the way it is supposed to be used. It is not like the "five year old test": Place a five year old by the keyboard and tell him "You just do what you want to do, and you'll have another ice cream cone every time you make the program crash". Real testing must be done by "misbehaved" testers. People who are paid by the number of bugs they find, not by the number of code lines they write. 30 years ago, before software testing was an established discipline, we used student summer interns: If they stayed with us for more than half a year, they learned the programmer's way of thinking, using the software the intended way, and the number of bugs detected gradually. Every summer we got a new group of students, unfamiliar with the software, and the detected bugs count rose sharply. Nowadays, we have a separate testing team - full time, but then: They are educated in the discipline of testing. Their profession is to identify corner cases, defining stress testing, managing bugs databases (programmer solution: add a comment in the code: "To do: Fix this bug when time allows" :-)), and rating the severeness of the bugs, making sure that the all the serious bugs are really fixed before the product is released. Besides: Their job is to bark at the programmers when bugs are found that should never have been made at all. Programmers don't like to be barked at. So they do proper unit and module tests just as much to quiet down the testers as to satisfy the customers :-) I think the t-shirt I am wearing today is somehow related to my own program/bug-writing experience - it says "Experience - the ability to recognize a mistake when you repeat it". That certainly describes my experience when my code goes to the testers.

                                      R Offline
                                      R Offline
                                      raddevus
                                      wrote on last edited by
                                      #48

                                      Great comments. I agree. There are definitely different types of testers and testing. as a matter of fact, the book I mentioned also touches upon these and how they are all different and should be considered.

                                      1 Reply Last reply
                                      0
                                      • R raddevus

                                        Kevin Marois wrote:

                                        I think that there's a stigma associated with Testing that the primary purpose of a developer is to write code, and testing isn't code.

                                        Yes, but the stigma of producing terrible code that literally crashes in production is far worse. The best kind of testing (and software development) occurs when a developer (no matter the level) literally thinks:

                                        I _own_ this software and it represents me.

                                        However, in corporate environments -- yes I work in one too -- this does not occur for many reasons: * dev is ignored anyways * dev has so many layers of management no one ever really talks to dev anyways * project is boring * project is doomed for other reasons anyways * there were no actual requirments created anyways, so anything could be accepted (screw it) * people in charge who are driving the project don't know anything about actual software dev anyways Too many more to list here.

                                        U Offline
                                        U Offline
                                        urlonz
                                        wrote on last edited by
                                        #49

                                        What is this "requirements" you speak of.

                                        R 1 Reply Last reply
                                        0
                                        • R raddevus

                                          Absolutely! Great comment. Griping about unit tests and/or just not doing them is akin to griping about Source Control. If you don't understand how much value Source Control brings as a developer and you only see it as overhead, then you probably don't really understand a lot about real dev. Source Control is annoying at times, but it saves so much work. Same thing for unit tests.

                                          D Offline
                                          D Offline
                                          DodgyCode
                                          wrote on last edited by
                                          #50

                                          I've only been in the trade for 4 years so perhaps that is before my time. I can't even imagine working without source control. That includes personal projects, but particularly for collaboration. What is the alternative to source control when working as a team? Emailing code around? Store on network drive? Word of mouth? Passenger pigeon? Reminds me of the time I received a printed XML in the post..

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


                                          • Login

                                          • Don't have an account? Register

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