Loading...
Answers
MenuHow can I ensure my site will not have bugs before it gets hit with massive traffic?
Answers


I have been in this situation as well as almost every other web application developer and I learned my lesson along the way.
You said you and 3 others tested, but I feel that 4 people may not be enough. I think at least 50 to 75 people is a much more sufficient number and here is how I do it with my own web apps:
I think that is what alpha and beta versions are for. If an app is just released without it being in beta version, there will be problems, but putting something in beta tells the public that there will be bugs and that those bugs can be tested, so releasing a Beta version prior to your actual release date is one way to go.
Also, when testing for bugs before releasing to massive traffic, all scenarios need to be tested and it is possible that 4 people will not test all of those scenarios or even contemplate them.
I suggest to companies who release software and websites to test in all platforms including, but not limited to:
1. different web browsers including IE, Firefox, chrome, safari
2. different mobile devices including smart phones and tablets
3. operating systems
4. various times of the day where internet traffic may vary and even different days of the week
5. different screen sizes and resolutions
Since every has a different version of all of these factors, testing is needed for more than 4 people.
I said that 50 to 75 people is efficient testing and you may think that is overkill, but it really shows you bugs that you never would have thought of. For that many people, give away something for free as an incentive like a free product or ebook. You will get many people willing to help out for just the incentive.Works for me.
Bruce


The best thing to do is to deep into test automation and automate at least basic scenarios using Selenium/WebDriver tool. But thinking long term you have to invest into making your application testable on all applications layers not just UI. In case you want to check how your application works under high load conditions try to use jMeter tool. In case you need much more details, clarifications or guidance just drop me a call request.
P.S. In case you are not ready yet to invest into test automation then hire manual testers on oDesk or uTest or similar freelancers website.
How I would build this feature "take a number and go to the queue":
1. get a fast datastore central to you servers. All webservers have to look on the same central datastore, because this number has to be unique for each visitor. Redis would be perfect for this task.
2. you have to have a middleware layer in your Rails, Django or PHP setup. All HTTP-Requests have to go through this middleware layer. This middleware layer is reponsible for getting the ticket from Redis and set it as a cookie. If the browser has no cookie, it gets one. If you want to ensure that visitors can't fake the cookie, just add a secret to each cookie/ticket.
Doing this in another layer than middleware will result in bugs because you have to add the code at many different places.
3. Profit (as long as your caching etc. works and you don't get slash dotted)


Performing quality assurance at every stage of development is what you are after. Ideally providing automation at every level coupled with some manual checking. The upfront costs of automation sometimes are daunting but will actually save you money in the long run.
Breaking code and breaking software is how you should thing about it. This puts the responsibility into every team member (designer, developer etc). The earlier the bugs are found the greater the ROI on setting up a world-class quality assurance plan.
Related Questions
-
What learning path do I have to take to become a "full-stack" web developer?
If I was just starting out, I'd consider learning Meteor (https://www.meteor.com/). It's just entered version 1.0 and after working with it for a little less than a year I do have some issues with it but it still makes for a very solid framework that gets you up and running very fast. You would only need to learn Javascript, and you can slowly work your way towards nodejs from there (which Meteor is based on) if you want to, or you could get the basics down and focus on learning design if you prefer.
-
PHP Scripts vs. Wordpress themes for an MVP?
Well this totally depends what your MVP is? What's the functionality? I'd suggest something like http://www.squarespace.com/ our designers with very little technical knowledge have had great success with this. Another option if it's just for demos/feedback is to use something like http://www.invisionapp.com/ for rapid prototyping.
-
Should I outsource the development of my app to a mobile development company? Which are recommended/reputable?
I recommend that you get technical cofounder as soon as possible. Using a contract developer to create a prototype is ok but keep in mind that startups need to iterate and be very flexible in the early stages of company/product development. A contract developer works best on a fixed spec and will be hard to adapt without a lot of extra costs and frustration on both sides. Go get a tech cofounder, somebody invested in your product and willing to be flexible and adapt as you discover what your product really is.
-
How do you manage a developer who's slow, especially when you have a small budget and you don't feel like you'll get things done in time?
Usually Programmers are only slow when they don't know how to solve a particular problem. So they will spend a lot of time researching and a lot of trial & errors to solve a problem. It is important that before you engage a programmer on a project, you break down the entire project into simple, easy to understand modules. Let him give you an estimate of how many hours he will require to complete each of the modules. Example: a typical site will have a login module, registration, My account, profile etc. So let him estimate how much he will require to do the login. You can go even detail here. (e.g. how much extra time if you were to implement Facebook/Twitter Login?). Once he start developing, track his progress closely and make sure he is following his given timeline. If he goes over his budgeted time on a module, talk with him and see what went wrong. It is often seen that they may be wasting their time on something very insignificant that you may have asked him to implement, but you can totally go by without it too. So by understanding what is taking longer time, you will be able to prioritise things better. You definitely need some tools to get this done. Google Spreadsheet or Excel works just fine. But if you don't mind spending a few bucks there are many agile project management tools that you might look into. Here is a list, google them all and sign up for trials: * AgileZen * Agile Bench * Assembla * AssiTrack * Blossom * Basecamp * Breeze * DoneDone * Eidos * Fogbugz * GreenHopper * Jugggla * Kanbanpad * Pivotal Tracker Or the reason why he is slow can be purely non-technical. Sometime your developer may don't share the same level of enthusiasm as you about the idea that you are working on. They often don't often see the "bigger picture" (since you don't share everything with them explicitly). If you can somehow get them excited about what he is a part of, it will work like a drug :) He will work day and night without questioning you. But you need to work equally as hard as him. The moment he sees that you are the boss and he is just the guy doing work for you -- his mentality will shift from being part of something to being the low paid developer. Ultimately its all about motivation and making him a part of your venture. After all he deserves it, if he is really playing a crucial role in the entire development.
-
How do I run a successful closed beta for my web application that is almost done with development?
Create an ideal customer profile. Create some questions that will allow to you survey a potential tester to determine if they fit your profile. Design simple landing page with very clear value proposition that speaks to your ideal customer. Ask for a minimum of information up-front (email), but ask for more info after they commit by submitting the first piece of info. (KISSmetrics does a good job of this on their current website trial signup). Use the their answers to these profiling questions to put the applicants into buckets. Let in the most ideal bucket first, or split them into groups if they're big enough. Try and measure engagement the best you can. Measure qualitative and quantitative data. Schedule calls with your beta testers to find out more, especially with the ones who's user behavior seemed to indicate that they didn't get value from your product. Find out why. Make sure they are indeed your ideal customer. Pick up the phone and get to know your customers inside and out. Meet them in person if possible. Incorporate their feedback quickly and get more feedback. Rinse repeat.