Slashdot Mirror


Web Performance and QA Tools?

perf_monkey asks: "I'm part of a large Web Infrastructure Quality Assurance (QA) team at a large financial institution. Currently, we use Mercury Interactive's LoadRunner like a bunch of trained monkeys. We also use QA Load and SilkPerformer, but for smaller (non-J2EE) projects. As one of the technical folks, I've been trying to expand our horizons and our budget. I can no longer believe that large companies are willing to pay a QUARTER OF A MILLION dollars for the privilege of an additional 2000 Mercury VUsers. I'm looking at both commercial and open source alternatives. I've been tinkering with The Grinder and have had pleasing results. While not a full-blown QA tool, it is an excellent 'programmer's' load test tool. I was hoping that there are other tools like this and was hoping for the community's opinion. What web performance tools do you use and what do you think of them?"

25 comments

  1. Under windows? by trompete · · Score: 2, Interesting

    I'm looking for the same kind of tool but for Windows applications. Any guidance is appreciated.

    1. Re:Under windows? by bobbozzo · · Score: 1

      Most perl-based stuff will work under Windows with ActiveState's ActivePerl (free as in beer).

      --
      Nothing to see here; Move along.
  2. Question by Gildenstern · · Score: 1

    Well I have to say I don't know anything about this type of application but typically what type of requirements do you have for a system like this.

    How does lode runner test systems now?

  3. I work by CptChipJew · · Score: 1

    for a major software company, and we have licenses for Mercury WinRunner, LoadRunner, QuickTest, Rational TestSuite, and even a product we wrote ourselves. This comes out to millions of dollars in software and maintanence licenses.

    Now, I'm not saying the spending isn't wasteful. I think it is, but it's not correct to say that large companies are paying for expensive SQA software licenses anymore.

    --
    Vonal Declosion
  4. Perl and Java by jo42 · · Score: 1


    Perl and Java are your friends...

  5. Web Performance Trainer vs. OpenSTA vs. Mercury by Fudge.Org · · Score: 2, Informative
    Disclaimer: The company I work for is a very happy WebPerformance Inc. customer.

    I've used Mercury products for unit testing, full out scaling tests, monitoring, and defect tracking for over three years. The problem was the total cost of a Mercury load test bed. It gets expensive rather quickly unless you have planned in advance or do a lot of Mercury work. If you don't it makes more sense to hire a consultant that has an open license arrangement. That way you only pay for when you use it. YMMV.

    So, I looked into some other alternatives and ended up going to unit test applications from the Apache group and home grown benchmarks to approximate load scenarios.

    Eventually, I ended up looking into OpenSTA OpenSTA and was fortunate enough to work with some real experts that did a lot of load testing work with OpenSTA. There are some limitations to the OpenSTA *cough* Windows only *cough* but overall it is an excellent tool for driving load for a complex web application. Much like Mercury or any load testing tool the test is only as good as the planning and analysis you perform to isolate performance issues.

    My most recent job called for load testing but in that time Mercury changed their license program again and we really wanted to use something that would run on Linux. So, OpenSTA was not really in the running. Also, we needed to simulate multiple IP addresses not just hundreds of virtual users from a single source address. (fine for simulations of a access from a corporate firewall). So, I had to find something that would work and that wouldn't blow our budget.

    I checked back with a company called WebPerformance Inc. Now, I looked into a few years ago to see if they supported IP spoofing for virtual users and SSL. They had done SSL but the IP spoofing wasn't done.

    As it turns out, they put this feature into their 2.6 release. We use it to run our large tests for burn in and acceptance for revisions to our network hardware that provides web interface. Like Mercury, you can really ramp up serious traffic. Couple this with basic network load generation and you can create a sound simulation of network throughput and application access from multiple network addresses with mulitple users and multiple business cases. Oh, and the fact that you can get a price list that is straight forward is very nice.

    So, I'd say each is right for a certain type of test and a certain type of shop. For our shop, Mercury is cost prohibitive, OpenSTA lacks a key feature (IP Spoofing), and WebPerformance, Inc -- while commercial -- satifies our feature requirements near perfectly.

    --
    http://fudge.org
  6. Open STA? by Kanagawa · · Score: 1

    Have you looked at OpenSTA? Our development team in NH uses it and they enjoy it quite well.

    --
    "He wrested the world's whereabouts from the heavens And locked the secret in a pocketwatch." - Dava Sobel
    1. Re:Open STA? by Fudge.Org · · Score: 1

      OpenSTA is great (and free!) software. The fact that it is on SourceForge is an added bonus.

      --
      http://fudge.org
  7. Windows only by michaelggreer · · Score: 1

    The fact that it is windows only is not great. Otherwise, I agree. It is the tool I use in windows environments.

    1. Re:Windows only by Fudge.Org · · Score: 1

      Yes. Still, it is possible to run inside VMware instances (very much not ideal) if you need to encapsulate or stagger testing servers across a small subnet to ensure portability of a test scenario across different source IP access for the virtual user block.

      It's not impossible just slightly cumbersome. :)

      --
      http://fudge.org
  8. Web Performance Inc. by raimundo · · Score: 1

    I generally don't appreciate proprietary software, but I've actually liked Web Performance Inc's tool.

    http://www.webperformanceinc.com/

    They've been quick to respond to our concerns, and their price was significantly cheaper than any of their competitors.

  9. Load Generators by xanthan · · Score: 1

    While hardly comprehensive test tools, there are some nice load generation tools that have some pretty remarkably features for their price (free). Check out WebBench (www.webbench.com) which does a nice job of harnessing a ton of machines to generate as much load as you can dream up. Then there is WAST (Web Application Stress Tool) from Microsoft. WAST has some nice features as far as scriptability goes, you just need to be warm and fuzzy with WSH to do it. On the Unix side you can use things like http_load, however it doesn't offer nearly the tweakability that WebBench offers.

    On the commercial side, check out the Spirent Caw box. I've used that a far amount and it does an excellent job at capturing data and generating a lot of load from a single system. Great for when rack space is at a premium and you want an appliance-like solution.

  10. Save you money by Books · · Score: 2, Insightful

    I was a VP of IT for a startup, developing a large content web site. Initially the site was hosted on 2 Pentium based IBM servers, running Linux. The server were no where near full capacity, but we wanted to check how much load these machines could take before requiring additional servers.

    Solution such as LoadRunner were too expensive, but even renting LoadRunner users for a few days was too much. We figured that for the money we saved by not checking the load we could buy and host two additional servers for two years.

    Think how much serving capacity you could for a QUARTER OF A MILLION dollars.

    Even a better idea: put the $250K in the bank, and buy a new server every month on the interest alone!

  11. use curl by oo_waratah · · Score: 1

    I wrote a cywin script using curl to access the server. I signed on 100 users and tracked each response. I then did a few different paths down an application chain and then did a few major image loads. I could get response times for each screen and using 10 PC's around the place running 10 instances I had a simple load test. (25 bash scripts appeared to blow a P4 windows, but cruised on a PII350 pure Linux)

    OK this is not comprehensive and slick but it worked sufficiently to prove we could handle 100 concurrent users with concurrent image retreives under 5 seconds which was our required benchmark.

    The interesting thing was that a few users, say 5, performed worse than 50 users. Some serious cache management in there that gets in the road of small sites.

    1. Re:use curl by corporatemole · · Score: 1

      Or, your better performance with 50 users could be attributed to errors in the application. I've seen web apps that when an error occurs, it doesn't return a 500 level error message to the browser. Sometime an application "handels" an error (which is caused by something like hitting it too hard and maybe it doesn't have any available database connections) and it returns back to the browser really quickly. If you're only checking HTTP status codes, you may not be seeing real errors.

  12. Reduce the scale rather than increase the licenses by PinglePongle · · Score: 1

    I used to be the development manager for a content-based website, and we had significant performance issues.
    We had a limited budget, and buying even tens of thousands of dollars worth of licenses was - in our view - a bad use of that budget. Instead, we concentrated on building a test infrastructure with known performance characteristics, and extrapolated (sorry, I meant "guessed") that this performance profile would scale by a factor of X on the live infrastructure. By using a relatively small and flexible test infrastructure, we could rapidly cycle through load test scenarios and find whether any particular change moved us in the right direction. We determined a set of key performance criteria for the test infrastructure, and found out quickly what the overall trend was because we could run several fullscale loadtest scenarios per day.
    We used Loadrunner - but only using a limited number of concurrent users (100, I seem to recall), and since then I have used apache.org's JMeter product with similar levels of success.
    As far as I know, if you absolutely have to be able to simulate thousands of concurrent users, the Mercury/Rational style commercial tools are the only ones available. I guess there are circumstances where this is appropriate - but the sheer effort of organising and running a test on that scale is a huge pain in the backside. If you can find a way to scale down your testing requirements - by running on lower spec infrastructure with optional throttling on key components - you reduce your licensing costs and improve the flexibility of your test process - if you can run several load tests a day without dimming the lights throughout the neighbourhood, load testing becomes "just another test", rather than a big deal.

    --
    It's all very well in practice, but it will never work in theory.
  13. Uh. by TheLink · · Score: 1

    Just post us a link whenever you feel like a good slashdotting :).

    --
  14. Open Source Testing Tools by corporatemole · · Score: 1

    Here is a website that maintains a list of open source testing tools. Some of the tools mentioned in some of the comments here are in that list.

  15. Home-brew automation guru by sohp · · Score: 1

    Interesting timing on this question. Just recently I attended the Pacific Northwest Software Quality Conference and heard a talk by Bret Pettichord on just this very subject. His presentation, Home Brew Test Automation covered this subject with some terrific lessions.

  16. Custom HttpUnit code by dubl-u · · Score: 1

    Here's a trick I stole from agile methods like Extreme Programming: build the test suite up at the same time you write the main code.

    The main reason testing existing applications is so hard is that they aren't designed to be easily tested, so you have to jump through a lot of hoops to do proper testing. However, if the developers don't get to check anything off until their components are covered by unit tests and their features are covered by acceptance tests, that gives the developers the incentive to make the features easy to test.

    On a recent Java web project, we used HttpUnit, a handy framework that simulates a web browser, including even a limited JavaScript processor. As we developed features, we built end-to-end tests that walked the web site and did all the things that users were supposed to do (or not supposed to do, like visiting admin-only pages). Sometimes it was the same person who built the feature, and sometimes it was somebody else on the team.

    This doesn't mean that QA people are unneeded; a good QA person will think of many more edge cases than your average developer will, and they'll also think a lot more about keeping the site consistent as a whole. Instead, developers get a lot more respect for QA, as they discover that good testing is hard to do right.

    Anyhow, if you've built feature tests as you built the main code, load tests are easy; you just run portions of the feature test suite from multiple boxes.

    My big tip with this approach is to make sure to treat the test code with the same respect as the main code. Unless you refactor aggressively, it's easy to let it get messy. Once it's messy, people stop maintaining it. And once you stop maintaining it, developers can easily break features without anybody noticing.

    1. Re:Custom HttpUnit code by babbage · · Score: 1

      A/k/a "requirements driven development", among other names. It's generally considered to be a sound development strategy for any kind of software development. First you figure out -- if only roughly -- what the software needs to do, then write tests that will verify that a given implementation will work, and only then do you start working on the actual system itself.

      Once development is under way, the goal should always be to make it correct first -- and you know it's correct because it passes the tests (provided that they are well written & robust) -- and, once the operation of the system is correct, then you can go back & optimize subsystems to improve performance.

      From reading David Hyatt's "Surfin Safari" blog, it can be inferred that this is the development strategy that Apple is using for at least Safari, if not all their software. People have been submitting pages that mis-render on Safari, and Hyatt or other people come up with reductions of the page in question that still produce the bug in question. The reduced version of the bug is added to Safari's test suite, and Safari is then rewritten to correct the error. In the future, the reduction is still part of the test suite, so if future development versions cause the error to come back up, the error will be detected and fixed again.

      Additionally, I've read that they have a performance policy which mandates that no software patch can ever make an application run more slowly: if a necessary patch to one subsystem causes performance of that subsystem to degrade, the developer has to either rewrite the patch to optimize performance, or produce an additional patch to a different system that cancels out the degradation resulting from the first patch. In this way, it's guaranteed that every patch to the system either maintains or improves the performance of the system overall. But significantly, note that this performance optimization is built into the patch / test phases of development, not the original development work. That is, they're paying attention to the "premature optimization is the root of all evil" maxim, and putting correctness before speed. Note that, as an apparent result of this policy, every version of OSX has been generally faster than the one that proceeded it -- compare & contrast this with Windows :-)

      But yeah, test first, and come up with mechanisms for good tests first. It's a very good idea, and applies not just to web systems but to pretty much all software development.

  17. Easy! by blackmonday · · Score: 1

    Get your website into a story on Slashdot. A case beer and an XL Pizza should be enough bribing for a real geek. Get out your stopwatch, measure the seconds before you smell something burning.

    Repeat and tweak as necessary.

  18. THANKS for your help by perf_monkey · · Score: 1

    I just wanted to say thanks for everyone's suggestions. I consider myself a pretty experienced perf expert and I learned about some good OS tools. I'd like to give a bit more of a background of my setup.

    My PTE (Performance Testing Environment) is made up of an AWEFUL lot of REALLY expensive Sun boxes. That is where I use Mercury, and will continue to use Mercury. I have another setup for the DIT, SIT, and DEV environments. The load generators that I use in the aforementioned environments are 5 beefy x86 Red Hat boxes. I have one beefy windows box to use as a controller. I have a strong predisposition to using the new Red Hat Enterprise 3.0 Linux because it has been optimized for a buttload of threads. It is on these boxes that I will be using all sorts of other QA tools.

    I also want to say that I'm not Mercury Bashing, I'm just being an economic realist. I've worked with Mercury to sovle a lot of bugs in their software and know their hooks into OpenSSL almost as well as their developers in Israel (who I've spoken to and are pretty helpful guys). I've actually spoken to their CSO before and I have to say that the service I received was pretty damn good.

    Thanks again Slashdot!