10

I've seen a lot research articles and tech blogs that boast the benefits of software testing. I've convinced on that. But since all the software testing research are conducted by large software companies, I do not believe they really apply to startups. Since startups have different needs and constraints compared to large software companies.

So this raised the questions. Should tech startups write automated tests? If so, are they done in the same manner as the large software companies? (smoke test, regression test, etc.) It's best if you can refer some research articles on this subject..since I was unable to find any on my own.

(I must admit that even though I'm still early in my career, but I have yet to see a startup that's seriously committed to writing automated tests)

4
  • 5
    I joined a 10-yo tiny start-up, and I was the first to actually add tests that run at night. Not because I was a genius, but this was the first time the manager (also coder) recognized that it is about time to add them, and that they finally had the manpower. Strat-ups often have to survive first, and perfect later. Granted, this start-up was started by non-techies, so this feature had to be "slipped in".
    – Job
    Commented Dec 12, 2011 at 18:07
  • 6
    10 year old startup...?
    – pap
    Commented Dec 13, 2011 at 11:36
  • Dilbert said: "If best practice is adopted by everyone in the industry, then best practice becomes mediocrity." I guess that's kind of true, heh.
    – ming_codes
    Commented Dec 24, 2011 at 18:08
  • 1
    10 year old start-up... they must be using Java: 3 yrs design + 7 development :) just joking (I am a Java dev btw)
    – nuvio
    Commented Jan 22, 2014 at 22:20

7 Answers 7

11

There is always a conflict between what should be done and what we realistically have time for. Yes many startups forgo test driven development and automated testing to shave some time off to get a project up and running.

The social networking sites and mobile app companies are the big bubbles now, and they are fiercely competitive. Sometimes the difference between going live in 4 months versus 5 months means You Lose.

Time to market is key, and then if success happens then it is time to scale, then there will be plenty of time to refactor your piece-of-crap untested software into something worthwhile.

2
  • 1
    Time to market is a bit of a myth though. Late entrants into a market can blow away the existing players: friendster > myspace > facebook. Commented Dec 13, 2011 at 15:08
  • @JoeriSebrechts I read an interesting article about the progression of software and how it relates to the success of late entrants. There are variables at play, the safe period for a late-entrant with a similar solution is equal to the amount of time for a software's user base to transform from Early Adopters to General Users. Similar solution of course meaning features that are similar and not ground breaking as compared to the first-entrant into the market (Eg. Facebook was groundbreaking compared to MySpace). Once a critical mass of Early Adopters is reached, general users start migrating.
    – maple_shaft
    Commented Dec 13, 2011 at 15:22
12

Software testing isn't a religion. It's just a very good idea.

You say you don't have the manpower to write tests right now? OK, fine. 6 weeks from now, are you gonna have the manpower to find the bug that's crashing your application, which would have been found immediately if you had proper tests in place?

Too much testing can slow down development. Too little testing can also slow it down. You have to find the right balance, and it's usually hard to tell where that is. And none of this is specific to large or small companies.

5

For many years, while working in small companies and start-ups, I was under the misapprehension that I "didn't have enough time to write unit tests for my code".

When I did write tests, they were bloated, heavy things which only encouraged me to think that I should only ever write unit tests when I knew they were needed.

Recently I've been encouraged to use Test Driven Development and I found it to be a complete revelation.

I'm now firmly convinced that I "don't have the time to not write unit-tests".

In my experience, by developing with testing in mind you end up with cleaner interfaces, more focussed classes & modules and generally more SOLID, testable code.

Every time I work with legacy code which doesn't have unit tests, and have to manually test something, I keep thinking "this would be so much quicker if this code already had unit tests". Every time I have to try and add unit test functionality to code with high coupling, I keep thinking "this would be so much easier if it had been written in a de-coupled way".

If there's one thing I've discovered over the years, if you're working at a start-up you need to be agile, and not just in the software development methodology sense. For me TDD is an important tool which enables starting and staying agile.

0
2

Best practices are industry wide, whether you are making grandma a website or creating the guidance system for a satellite. They should always be followed by those that want to consider themselves professional, that is why they are called BEST practices.

6
  • You may be surprised to hear that best practices are not all that industry wide. thedailywtf.com Commented Dec 12, 2011 at 18:27
  • @Gary its more of an industry wide in theory, or part of that utopian world where projects have realistic timelines and html has semantic meaning and managers admit they lack technical knowledge that would help them make better decisions...
    – Ryathal
    Commented Dec 12, 2011 at 20:58
  • "Best Practices" usually means doing things like everybody else does, producing an average result. The average established company does reasonably well, but the average tech startup doesn't get far enough to crash spectacularly. Commented Dec 12, 2011 at 21:11
  • 1
    @DavidThornley - No, I think that "Best Practice" is what most people believe they should be doing, whether or not they have the time, energy or management approval to do it. *8')
    – Mark Booth
    Commented Dec 13, 2011 at 11:13
  • @Mark Booth: Typically, when I've heard the phrase, it means what I said. YMMV, of course. However, Ryathal refers to a world where projects have realistic timelines, and that isn't necessarily possible in business. Having a product come out two months late may be inconsequential or fatal (particularly to a startup that may be in danger of running out of money), and annoyingly often there's a strong business case for getting something that mostly works out the door ASAP. I find it difficult to believe in "best practices" that can doom a company. Commented Dec 13, 2011 at 15:07
1

It's not about of who should be doing software testing, Software testing it's kind of a software development philosophy. Software Testing set the basis of a good software quality, and in a startup, software quality is a bonus when the acquisition by a large firm is around the corner;)

1

Yes startups sometimes cut corners and dont impliment proper testing. Sometimes this is apropriate (for small enough projects or when time/money are critical)

This isnt exclusive to startups though. One of our suppliers IT contractors dosent even have a test environment. Everything is done straight to live and this is a large multi national software company (scary!)

1

Should they? Yes. Do they do so in practice, not as often as they should.

The most typical reason given is a lack of resources which includes developer time, the cost of hiring a dedicated or part-time tester, the cost of setting up a testing environment and so forth. You can even find these excuses in large corporate settings as well as small start-ups.

Looking at in another way, testing is one of the easiest things to cut from a development schedule, especially one with very tight time pressure and/or cost pressure to produce visible results. Along with detailed design work, it's considered 'fluff' by many managers and the first place they'll say "cut it so we can make our schedule and budget work" followed by "Why aren't you coding?".

In some companies, there will be someone who does push testing. Usually this will be the developer hired and usually they'll be someone with experience and probably someone who has a financial stake of some kind in the company. A company that starts with this "DNA" will probably do testing from the start.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.