[Ilugc] ssd and linux
- From: vkanakala@xxxxxxxxx (Vamsee Kanakala)
- Date: Sat, 19 Mar 2011 00:02:26 +0530
On Friday 18 March 2011 07:53 AM, Asokan Pichai wrote:
One of the reasons I added the `ill-defined' in my post.
This seems an interesting problem though.
--One does want to ensure that a change has not broken anything, but
can that be done by ONLY testing where a breakage is possible? Sounds
really hard problem to solve.
I don't think that's such a big problem in general; we write failing
tests first and then add code in TDD, though this is not always
practical or possible. What I think you're referring to is a bigger
problem, as to how much should we test (or how much coverage to have in
other words). There is no hard and fast rule here - while 100% test
coverage is great, it's hardly practical or recommended in most cases.
We pick the places where we want to make sure the app performs as
expected - and go easy on the places where it's not so important for the
effective functioning of the app. It's a trade-off, but usually having
the discipline to write tests means that (whether TDD or not) the app
will be reasonably bug-free (ahem).
Personally, I'm not an XP/Agile fanatic - while I find the general
guidelines very helpful, I'm not a strict adherent, I should admit :).
Especially in a startup scenario, where speed of execution is so
important, one has to be very judicious about where to put the extra cycles.
Yeah; TDD is not just regression testing. But using such labels which
were defined in a context where coders wrote code and testers tested that
code is one of the areas of some confusion in the understanding of TDD
at least to me, for a time.
I tend to think of TDD as exploratory development and best suited for those
situations when part of the solution is NECESSARY for defining the
problem itself and/or the exact approach to solution is yet unclear.
Thoughts?
Actually, for me at least practically speaking, it's been the other way
round - TDD helps me when I'm know what to expect fairly well - which
means that I know what to check for, see the tests fail and write the
supporting code. But when it comes to say, something like writing a
fairly complex javascript-driven UI, I find TDD less compelling, not
because it's not useful, but I don't know what to test for some of the
times. It's likely a new plugin or a UI component/approach I'm trying on
for the first time, which is a big part of what I do. Insisting on TDD
at this stage becomes tedious, because I don't even know how to
configure/use this component or in some cases, how it behaves. So I just
finish the part and then write selenium tests. Again, it's a trade-off
:). Perhaps if there is a reliable (and fast way) to test javascript
headlessly, I might not have to break the TDD discipline, but we still
have a ways to go (at least in the Rails world) for that.
Vamsee.
Other related posts: