June 19, 2013 TDD is BS? | ||||
---|---|---|---|---|
| ||||
This is not strictly D related but I am very curious about D's community opinion on the points made by non other than Jim Coplien here: http://www.tele-task.de/archive/video/flash/16130/ D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"? Article about the myths of TDD referenced in the talk: http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1027&context=csse_fac |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Wednesday, 19 June 2013 at 11:01:05 UTC, Szymon Gatner wrote:
> This is not strictly D related but I am very curious about D's community opinion on the points made by non other than Jim Coplien here:
>
> http://www.tele-task.de/archive/video/flash/16130/
>
> D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"?
>
> Article about the myths of TDD referenced in the talk:
>
> http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1027&context=csse_fac
I do believe in testing and while I seldom use D, the JVM and .NET projects I take part on, have usually a focus on unit testing.
However, testing is done in parallel with coding or on the final week of each sprint. I don't believe in TDD without design, coding without design is cowboy coding where the system architecture ends up full with broken design.
TDD, mocking and so on, is nice product to sell in conferences presented with dynamic languages where the presenter has full control of all libraries. This is surely not the case in the enterprise with strong typed languages, where most of the third party libraries are available in binary form only.
Additionally I am yet to find any form of unit testing that is possible to apply to UI code, in a way that the ROI really pays off.
Finally, 100% test coverage does not mean anything if the tests are not written in a way to really test the product. If you want to see a junk pile unit tests just ask for 100% coverage, you will get tests that exercise all code paths but without any real meaning.
--
Paulo
|
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Wednesday, 19 June 2013 at 11:01:05 UTC, Szymon Gatner wrote:
> D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"?
Let us distinguish between "writing tests" and "test-driven development".
I am for all for "writing tests" where it makes sense. I do not subscribe to 100% test coverage. Sometimes other things have higher priority (time-to-market, fun, return-of-investment, politics, etc). I consider 100% an ideal, which can be thought about from time to time. It is not a good recommendation for rookies or best practice.
Test-driven development is an interesting beast. If you listen to the inventors, it makes a lot of sense in the scenarios they are talking about: Consultant creating or modifying a component in an enterprise environment.
Continuous refactoring tries to evenly distribute the technical debt, so developers can be moved in and out of the project without friction. Without continuous refactoring someone can get the fame, while leaving the technical debt to somebody else. Test coverage enables continuous refactoring because you can check the component in isolation, if your refactoring did not break anything. The test-first principle ensures good test coverage. Considering this reasoning, TDD can be seen as an approach for managing technical debt.
|
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Wed, 19 Jun 2013 12:01:02 +0100, Szymon Gatner <noemail@gmail.com> wrote: > D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"? I'm more interested in whether DCI is doable/natural in D.. that seems like an interesting idea. R -- Using Opera's revolutionary email client: http://www.opera.com/mail/ |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Wednesday, 19 June 2013 at 11:01:05 UTC, Szymon Gatner wrote: > D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"? My feelings about TDD changed when I saw that talk explaining TDD in the context of double-entry bookkeeping in accounting (maybe linked off of here: http://unhandled-exceptions.com/blog/index.php/2009/02/15/uncle-bob-tdd-as-double-entry-bookkeeping/). Writing your tests and code separately is actually an important part of it. If you are copy-pasting your code into your test after you write it, then that's not really giving you the guarantees you want. And for anyone who's never tried the loop of: 1. Write a failing test. 2. Write the code that makes the test pass. 3. Make all the lights go green, then goto 1. You might want to give it a try. I was surprised by the feeling of accomplishment I would get from making the failing tests pass. irritate |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to irritate | irritate: > My feelings about TDD changed when I saw that talk explaining TDD in the context of double-entry bookkeeping in accounting I think the usefulness of the TDD method is greatly different for different kinds of code to write. This is another data point for the discussion: http://devgrind.com/2007/04/25/how-to-not-solve-a-sudoku/ Regarding testing, I also like QuickCheck: http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck Bye, bearophile |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to irritate | On Wednesday, 19 June 2013 at 14:44:26 UTC, irritate wrote: > On Wednesday, 19 June 2013 at 11:01:05 UTC, Szymon Gatner wrote: >> D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"? > > My feelings about TDD changed when I saw that talk explaining TDD > in the context of double-entry bookkeeping in accounting (maybe > linked off of here: > http://unhandled-exceptions.com/blog/index.php/2009/02/15/uncle-bob-tdd-as-double-entry-bookkeeping/). > > Writing your tests and code separately is actually an important > part of it. If you are copy-pasting your code into your test > after you write it, then that's not really giving you the > guarantees you want. > > And for anyone who's never tried the loop of: > 1. Write a failing test. > 2. Write the code that makes the test pass. > 3. Make all the lights go green, then goto 1. > > You might want to give it a try. I was surprised by the feeling > of accomplishment I would get from making the failing tests pass. > > irritate That is actually the way I do TDD too. In fact, doing it any other way is actually against 3 laws of TDD: http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd and is plain wrong. Writing tests for working (legacy) code will not in any way shape it's structure and often results in useless tests. TDD is a design technique not a testing technique. I am pretty sure that many people will agree that TDD works, I was actually curious on opinion on the presentation which claims that TDD does not work at all and is in fact total BS. |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Regan Heath | On Wednesday, 19 June 2013 at 14:04:35 UTC, Regan Heath wrote:
> On Wed, 19 Jun 2013 12:01:02 +0100, Szymon Gatner <noemail@gmail.com> wrote:
>> D is the only language (that I am aware of) that has first class unit testing support. What do you think? Do we really just "mentally masturbate"?
>
> I'm more interested in whether DCI is doable/natural in D.. that seems like an interesting idea.
>
> R
I actually learned about DCI from that very presentation and am
wondering the same thing.
|
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Paulo Pinto | On 2013-06-19 14:08, Paulo Pinto wrote: > Additionally I am yet to find any form of unit testing that is possible > to apply to UI code, in a way that the ROI really pays off. At work we use RSpec together with Capybara to test the UI, or rather the full stack. That is, for our web site. Capybara is used, via different drivers, to control the web browser. When writing the test you can use a driver that opens the web browser and you can actually see it clicking on buttons, filling in forms and so on. When running the tests in a CI server we use a faster headless web browser. -- /Jacob Carlborg |
June 19, 2013 Re: TDD is BS? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Szymon Gatner | On Wednesday, 19 June 2013 at 15:32:41 UTC, Szymon Gatner wrote: > I am pretty sure that many people will agree that TDD works, I > was actually curious on opinion on the presentation which claims > that TDD does not work at all and is in fact total BS. I am having trouble getting the video to play at the moment (it freezes every few seconds), so I can't address his actual claims right now. However, while searching for an alternate site for it, I found this video which others in this thread might find interesting: http://www.youtube.com/watch?v=KtHQGs3zFAM. irritate |
Copyright © 1999-2021 by the D Language Foundation