Developers Who Test (and Don't)
-
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.
Ok drop the mask who are you of my colleagues? Knock the Imperial march on the desk so I can recognize you!
DURA LEX, SED LEX GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
-
Ok drop the mask who are you of my colleagues? Knock the Imperial march on the desk so I can recognize you!
DURA LEX, SED LEX GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++* Weapons extension: ma- k++ F+2 X If you think 'goto' is evil, try writing an Assembly program without JMP. -- TNCaver When I was six, there were no ones and zeroes - only zeroes. And not all of them worked. -- Ravi Bhavnani
-
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: :~
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 -
And these are the people who write the code used by your bank, your car, your life support machine ... Frightening, isn't it?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
I happen to know persons who shall remain nameless who have built banking systems. Unnamed persons who had to sneak into the server center to run an upgrade at 2am to cover a small but fatal bug that was causing the bank's retail system to crash every day just after noon. I have no intention of naming the persons involved in that one or that I had to leave a half pint in the pub. :laugh:
veni bibi saltavi
-
John Simmons / outlaw programmer wrote:
By the time you're done writing the code to meet the requirements, the requirements change
Oh, silly you. You're talking about real software that exists in the real world. Testing is only for vaporware. That way we can('t) be sure we got it right and wrong. :laugh:
Those are probably Heisenbugs: they probably don't exist until some eejit tests for them. :laugh:
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
-
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: :~
Do you proofread your own prosa? Or do you review your own bookkeeping? Testing your own stuff is not such a great idea. You tend to build your misconceptions into the tests and sometimes you try to prove how good you are a little too hard. And these are just some unintentional reason why this can go all wrong.
The language is JavaScript. that of Mordor, which I will not utter here
This is Javascript. If you put big wheels and a racing stripe on a golf cart, it's still a fucking golf cart.
"I don't know, extraterrestrial?" "You mean like from space?" "No, from Canada." If software development were a circus, we would all be the clowns. -
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 timeJohnny J. wrote:
but mostly waste of time in my opinion!
If your unit tests are a waste of time then you are doing it wrong. There's no point in writing unit tests unless they add to the quality of the code and give confidence that the software works as expected. The book you need to read is this one. [^]. It's the only book on the subject I recommend. You should quickly see improvements in your unit testing strategy.
"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
-
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: :~
-
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 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
-
Johnny J. wrote:
but mostly waste of time in my opinion!
If your unit tests are a waste of time then you are doing it wrong. There's no point in writing unit tests unless they add to the quality of the code and give confidence that the software works as expected. The book you need to read is this one. [^]. It's the only book on the subject I recommend. You should quickly see improvements in your unit testing strategy.
"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
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
-
Do you proofread your own prosa? Or do you review your own bookkeeping? Testing your own stuff is not such a great idea. You tend to build your misconceptions into the tests and sometimes you try to prove how good you are a little too hard. And these are just some unintentional reason why this can go all wrong.
The language is JavaScript. that of Mordor, which I will not utter here
This is Javascript. If you put big wheels and a racing stripe on a golf cart, it's still a fucking golf cart.
"I don't know, extraterrestrial?" "You mean like from space?" "No, from Canada." If software development were a circus, we would all be the clowns.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!!
-
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
-
These types are dangerous. Because of them crashing rockets and die people :mad:
Press F1 for help or google it. Greetings from Germany
-
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: :~
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!
-
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!
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.
-
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:
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
-
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
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
-
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: :~
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
-
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 timeAnd who tests the unit test
We're philosophical about power outages here. A.C. come, A.C. go.
-
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!!
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.