Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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)

share|improve this question
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 Dec 12 '11 at 18:07
3  
10 year old startup...? –  pap Dec 13 '11 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. –  lightblade Dec 24 '11 at 18:08
    
10 year old start-up... they must be using Java: 3 yrs design + 7 development :) just joking (I am a Java dev btw) –  nuvio Jan 22 at 22:20
add comment

7 Answers

up vote 9 down vote accepted

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.

share|improve this answer
    
Time to market is a bit of a myth though. Late entrants into a market can blow away the existing players: friendster > myspace > facebook. –  Joeri Sebrechts Dec 13 '11 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 Dec 13 '11 at 15:22
add comment

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;)

share|improve this answer
add comment

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.

share|improve this answer
    
You may be surprised to hear that best practices are not all that industry wide. thedailywtf.com –  Gary Willoughby Dec 12 '11 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 Dec 12 '11 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. –  David Thornley Dec 12 '11 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 Dec 13 '11 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. –  David Thornley Dec 13 '11 at 15:07
show 1 more comment

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!)

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
add comment

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.

share|improve this answer
    
+1 For a valid opposing view point. –  maple_shaft Dec 13 '11 at 11:55
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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