News for hackers. Stuff that matters.
Re:TDD did not live up to expectations by moron4hire on Thursday June 29, 2017 @12:23PM (#14664508)
> if you were working on a big app and there was a bug, writing a failing test for that bug and then looking into the fix is very helpful.

Well, first of all, that's not TDD. TDD is Test-Driven Development. In your scenario, you wrote the test after the code in question. In TDD, the whole point is to write the test before the code in question.

So the value in your scenario is only insofar as the test is a useful way to quickly exercise the code in question. For example, if we have some sort of customer-facing website and there is a bug in how they save their user profile, it will be easier to test fixes to the problem if we don't have to go through the full flow of logging into the site, navigating to the profile, making edits, and clicking save all the time. But having an XUnit-style framework for running that test is not necessary for that.

Re:TDD did not live up to expectations by luhn on Thursday June 29, 2017 @12:34PM (#14664604)
>> if you were working on a big app and there was a bug, writing a failing test for that bug and then looking into the fix is very helpful. > Well, first of all, that's not TDD. TDD is Test-Driven Development. In your scenario, you wrote the test after the code in question. In TDD, the whole point is to write the test before the code in question

It's a regression test, which is definitely TDD. The code in question is the fix for the bug, the test verifies that the bug is fixed and will remain fixed.

Re:TDD did not live up to expectations by tokenizerrr on Thursday June 29, 2017 @02:33PM (#14665737)
No that is just regular testing. TDD is about writing tests first, before other code.
Re:TDD did not live up to expectations by richardknop on Friday June 30, 2017 @06:31AM (#14669714)
Well, that's exactly this case. You would write a test to replicate/prove the bug and then - afterwards write the code to fix the bug, no? So you would write tests first.
Re:TDD did not live up to expectations by tokenizerrr on Friday June 30, 2017 @09:13AM (#14670464)
But the code containing the bug is already there. The idea of TDD is that you write tests verifying behavior before there is any code.
Re:TDD did not live up to expectations by ZoFreX on Friday June 30, 2017 @11:17AM (#14671242)
This definition of TDD either supposes that it is possible to write software with zero bugs using TDD, or that your project ceases to be TDD as soon as a bug is discovered, or any other change is required. I propose this definition is not very useful.
Re:TDD did not live up to expectations by tokenizerrr on Friday June 30, 2017 @05:10PM (#14673625)
I see that as just writing regular unit tests, business as usual. Not TDD, still very useful.
Re:TDD did not live up to expectations by richardknop on Friday June 30, 2017 @10:30AM (#14670966)
If you are writing something from scratch yes. But if you inherited a codebase written by somebody else who didn't to TDD so there are no tests, you can still use TDD for refactoring.

So any new changes/bugfixes you will make to this legacy codebase, first you will write a test and then make change. That's pretty standard. Many legacy codebases will have no tests and people who wrote the code will have left long time ago.

Re:TDD did not live up to expectations by dragonwriter on Thursday June 29, 2017 @02:36PM (#14665770)
> Well, first of all, that's not TDD.

It's adopting test driven development during maintenance of an existing system. It's exactly TDD (identify need, write failing test, code to pass test.) TDD is a discipline that can be adopted at any time, not an SDLC that can only sensibly be adopted at the initiation of a project.

Re:TDD did not live up to expectations by heifer2822 on Thursday June 29, 2017 @02:32PM (#14665736)
It's TDD. Just because the whole app wasn't developed with TDD doesn't mean you can't test drive a bug fix.

There's a bug, you write a test, "this bug shouldn't exist", that test currently fails, then you write just enough code to fix the test, then refactor. That's TDD.

Re:TDD did not live up to expectations by richardknop on Friday June 30, 2017 @06:32AM (#14669722)
Exactly what I was thinking. The test ends up being written firs this case, before you write/edit the code to fix the bug. So it falls under strict definition of TDD.