Live data from Hacker News

Why We Don't Write Tests

whatdoitest.com

11–17 of 17 posts

Re: Why We Don't Write Tests

#11
post #5

Earlier quoted context omitted.

Data redundancy in multiple locations and good logging can fix that problem better that tests, I think. Most bugs can be found anyways during development without coded tests.

Not sure what you mean by "coded" tests, but I agree that most bugs can be found during development - unfortunately, my experience is that that's rarely the case. But if your development team finds most bugs during development, my hat's off to you.

By coded test, I meant taking time to write test scripts. I assumed this is what is meant by the article.

Re: Why We Don't Write Tests

#12
post #5

Earlier quoted context omitted.

What happens when your customers' data is lost or corrupted because of a bug you could have caught?

Data redundancy in multiple locations and good logging can fix that problem better that tests, I think. Most bugs can be found anyways during development without coded tests.

If your data transformations are bugged, you've merely succeeded in duplicating redundantly the wrong answer--backups won't save you.

Re: Why We Don't Write Tests

#13
He forgot two of the most important reasons people don't test:

1) We inherited this monolithic spaghetti mess of a legacy system with a class hierarchy that does not lend itself to testing without a major rewrite of the codebase.

2) Online tutorials expertly teach you how to test methods like add(x, y) and things associated with the 5-minute blog tutorial they also have, but fail miserably at teaching you how to test code that actually might exist in the real world.

Re: Why We Don't Write Tests

#14
post #5

Earlier quoted context omitted.

What happens when your customers' data is lost or corrupted because of a bug you could have caught?

Data redundancy in multiple locations and good logging can fix that problem better that tests, I think. Most bugs can be found anyways during development without coded tests.

That's not going to save you from failing to capture key records, or capturing them incorrectly.

You do have a point about manual testing being just as effective as automated testing, just a lot more time consuming.

Re: Why We Don't Write Tests

#15

He forgot two of the most important reasons people don't test: 1) We inherited this monolithic spaghetti mess of a legacy system with a class hierarchy that does not lend itself to testing without a major rewrite of the codebase. 2) Online tutorials expertly teach you how to test methods like add(x, y) and things associated with the 5-minute blog tutorial they also have, but fail miserably at teaching you how to test…

Yeah I did.

1) Inheriting someone else's bad code and habits is a huge reason to throw testing out the window. It's really frustrating and always comes with a "We'll write tests in the future."

2) This goes in line with another thing I've been finding. It's super easy to show why you should test, but It's much harder to actually show how to test in the real world. These tutorials show the simplest way to write a test, and it hurts those trying to learn.

Re: Why We Don't Write Tests

#16

He forgot two of the most important reasons people don't test: 1) We inherited this monolithic spaghetti mess of a legacy system with a class hierarchy that does not lend itself to testing without a major rewrite of the codebase. 2) Online tutorials expertly teach you how to test methods like add(x, y) and things associated with the 5-minute blog tutorial they also have, but fail miserably at teaching you how to test…

Yeah I did. 1) Inheriting someone else's bad code and habits is a huge reason to throw testing out the window. It's really frustrating and always comes with a "We'll write tests in the future ." 2) This goes in line with another thing I've been finding. It's super easy to show why you should test, but It's much harder to actually show how to test in the real world. These tutorials show the simplest way to write a tes…

Any plans to take a crack at solving #2, or does your book already do that (we'll assume for now that #1 is an impossible situation)? I understand testing on an intellectual level, and I understand completely how to write tests for a 5-minute blog. But I have yet to experience instruction on writing tests that actually use real-world classes (i.e. not Dog inherited from Animal) and actual real-world data. First one to do this gets my ebook money.

Specifically, my software deals with hardware devices. Do I simulate those devices in code (and if so, do I need tests to test my device simulator)? Or do I somehow gather many MB of data and keep it stored somehow for testing? I'm thinking these are simple questions for a testing veteran, but nobody I work with is that. And getting permission to spend time learning is not easy in a bad economy. :)

Re: Why We Don't Write Tests

#17

Earlier quoted context omitted.

Yeah I did. 1) Inheriting someone else's bad code and habits is a huge reason to throw testing out the window. It's really frustrating and always comes with a "We'll write tests in the future ." 2) This goes in line with another thing I've been finding. It's super easy to show why you should test, but It's much harder to actually show how to test in the real world. These tutorials show the simplest way to write a tes…

Any plans to take a crack at solving #2, or does your book already do that (we'll assume for now that #1 is an impossible situation)? I understand testing on an intellectual level, and I understand completely how to write tests for a 5-minute blog. But I have yet to experience instruction on writing tests that actually use real-world classes (i.e. not Dog inherited from Animal) and actual real-world data. First one t…

1) is pretty hard, but I'm tackling some basic strategies to adding tests to an untested mass of code.

2) is the entire reason why I'm writing the book. Building a testing habit isn't as simple as following some basic tutorials. It's a fundamental shift in how you think about writing code and can't be summed up in a 5 minute blog, like you say.

To address your software, the answer is a little stretchy. For the code that depends on device data, you simulate as little device data as possible needed for your code to work. This means that if you have a method that only needs a device id, you only provide a device id. If you have a method that generates a report, you provide all the data that is needed in the report.

Another approach would be to try to group the test data together into common traits. I don't know enough about your software to come up with some examples, but you likely don't need to collect test data for every single device, but instead data that is representative of every single device.

If you want to find me on the twitter (@genericsteele), we could keep this conversation going. I'm interested in how you see the world of testing and just this thread has helped me think of new perspectives. I would love to figure out you could overcome the obstacles your work is throwing at you.

Post reply on HN