SIPTEST – System Intelligent Process Testing. Estudo Ferramentas de Carga e Desempenho SIPTEST - System Intelligent Testing Link Consulting,SA | Pág. 0 de 10 Índice 1 2 Introdução ............................................................................................................................................................... 2 1.1 Objectivo do documento ................................................................................................................................ 2 1.2 Contexto ......................................................................................................................................................... 2 1.3 Estrutura do documento ................................................................................................................................ 2 Ferramentas de testes de carga e stress ................................................................................................................. 3 2.1 Testes de carga ............................................................................................................................................... 3 2.2 Testes de stress .............................................................................................................................................. 4 2.3 Ferramentas ................................................................................................................................................... 4 3 Estudos comparativos ............................................................................................................................................. 6 4 Referências .............................................................................................................................................................. 7 SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 1 de 10 1 Introdução 1.1 Objectivo do documento Este documento apresenta o resultado da pesquisa efectuada sobre ferramentas de testes de desempenho, nomeadamente de testes de carga e stress, no âmbito do projecto SIPTEST. Nele são descritas algumas das mais conceituadas ferramentas e apresentadas as suas funcionalidades. 1.2 Contexto O teste de software é um processo utilizado para identificar a exactidão, completude e qualidade do produto de software desenvolvido. Existem diferentes tipos de testes de software que podem ser aplicados nas diversas fases do desenvolvimento para aumentar a confiança na qualidade de uma aplicação de software, por exemplo, testes de compatibilidade, testes de conformidade, testes funcionais, testes de regressão, testes unitários, testes de desempenho e testes de carga/stress [1, 2]. Este documento foca-se nas ferramentas de testes de carga e de stress. TESTES DE DESEMPENHO O processo de teste para determinar o desempenho de um software [3]. TESTES DE CARGA Tipo de teste de desempenho que mede o comportamento de um componente ou sistema por meio do aumento de carga. Por exemplo, número de utilizadores paralelos e/ou número de transacções para determinar qual o tamanho de carga que pode ser suportada pelo componente ou sistema [3]. TESTES DE STRESS Tipo de teste de desempenho conduzido para avaliar um sistema ou componente no (ou além do) limite da carga esperada ou especificada, ou com disponibilidade reduzida de recursos, tais como, acesso à memória ou servidores [3]. 1.3 Estrutura do documento A secção 2 apresenta ferramentas de testes de carga e stress, descreve as suas principais características e faz uma análise comparativa de um subconjunto dessas ferramentas. A secção 3 apresenta um conjunto de referências para trabalhos na área de testes de carga e stress. SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 2 de 10 2 Ferramentas de testes de carga e stress 2.1 Testes de carga Os testes de carga detectam problemas relacionados com “buffer overflow”, “memory leaks” e má gestão de memória, e determinam os limites superiores dos componentes de uma aplicação de software, por exemplo, bases de dados, hardware e redes, etc., de forma a poder gerir e estimar a carga futura do sistema de software. Para criar um teste de carga, o tester deverá seguir os seguintes passos: Parametrizar e controlar os inputs do componente ou sistema a testar; Monitorizar o componente ou sistema de maneira a conseguir detectar onde e como ocorreu um erro (por vezes usando um debugger); Desenvolver cenários de teste adequados (de acordo com os objectivos do teste) para testar o componentes ou sistema a testar; Executar os testes e monitorizar o sistema. A figura 1 representa um exemplo de um teste de carga num servidor Web. Nela é possível identificar o sistema de monitorização, o sistema de (dois) servidores a ser testado, os inputs do sistema (3 clientes) e o output do sistema (um repositório de dados de administrador). Figura 1 - Esta figura representa um exemplo de um teste de carga e desempenho realizado num servidor; nela podem ser delimitados os clientes (inputs do sistema) à esquerda da figura e o repositório de administrador (outputs do sistema) à direita da figura [4 SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 3 de 10 2.2 Testes de stress Nos testes de stress realizam-se várias actividades para sobrecarregar os recursos existentes com excesso de trabalho numa tentativa de quebrar o sistema. O objectivo é avaliar a estabilidade da aplicação através de testes além da sua capacidade de forma a controlar a forma como o sistema recupera até à sua forma normal. O desafio é criar um ambiente controlado antes de iniciar o teste para que se possa capturar com precisão e repetidamente o comportamento do sistema nos cenários mais imprevisíveis. Um dos maiores problemas a combater é o de assegurar que o sistema não compromete a segurança de dados sensíveis após a falha. Num teste de stress bemsucedido, o sistema voltará à normalidade, juntamente com todos os seus componentes, mesmo após um crash [22]. 2.3 Ferramentas Existe um conjunto muito vasto de ferramentas de teste de carga e stress. Na tabela abaixo são apresentadas algumas das mais conceituadas ferramentas deste tipo de testes. Nesta tabela são apresentadas ferramentas, com diferentes funcionalidades e propósitos, distinguidas através de factores comparativos considerados relevantes com base nalguns portais da Internet [5–11]. Os factores comparativos escolhidos são os seguintes: Pago/Livre – indica se a aplicação é proprietária e paga ou se é livre (freeware); Linguagem dos testes – factor importante para determinar a compatibilidade com outras aplicações, linguagem e compatibilidade dos testes, plugins e sistemas operativos; Aplicação activa – indica se a aplicação se encontra em desenvolvimento activo ou não; Tipos de teste – tipos de testes de desempenho suportados (stress e carga); Sistema Operativo – indica o sistema operativo em que a aplicação pode ser executada; Alvo – indica o tipo de software que aplicação pode testar SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 4 de 10 SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 5 de 10 3 Estudos comparativos Existem alguns estudos comparativos de ferramentas de testes de carga e stress. Os estudos [6, 8, 9, 11–15] comparam, entre muitas outras, as seguintes ferramentas, consideradas as mais conceituadas e mais usadas (subconjunto das ferramentas referidas na tabela anterior): MICROSOFT Web Application Stress Tool (WAS) APPPERFECT LoadTester PUSHTOTEST TestMaker PILOT SOFTWARE LTD SiteTester SOFTLOGICA LLC WAPT HP / MERCURY INTERACTIVE LoadRunner IBM RATIONAL Performance Tester MICRO FOCUS QALoad BORLAND SilkPerformer No entanto, dependendo do objectivo final pretendido com o uso destas aplicações, os critérios de selecção variam. Neste contexto, foram reunidos alguns exemplos e linhas orientadoras [10, 14, 16–20] sobre como escolher uma ferramenta de testes de carga e stress que se adeqúe ao objectivo pretendido com os testes. Adicionalmente existem alguns portais na Internet como por exemplo o do Cordell Vail, da Vail Consulting and Associates [21], que incorporam apontadores para ferramentas úteis para a pesquisa de ferramentas de testes de desempenho, carga e stress. No final deste documento são apresentadas referências que poderão ser interessantes para pesquisa, comparação e/ou escolha de ferramentas de testes de desempenho, carga e stress [23–58]. SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 6 de 10 4 Referências 1. Myers, G., Sandler, C.: The art of software testing. (2004). 2. Weyuker, E.: Testing component-based software: A cautionary tale. Software, IEEE. 5459 (1998). 3. Standard glossary of terms used in Software Testing, Version 2.1, ISTQB. 4. Polozoff, A.: Performance Testing Protocol for WebSphere Application Server-based Applications. IBM WebSphere Developer Technical Journal. (2002). 5. Load and Performance Tools, http://www.scribd.com/doc/10866622/Load-and-Performance-Tools. 6. Jacob, A., Shaik, R., Tennis, P.: Load test tools evaluation, http://www.sqatester.com/testertotester/sharexperience/downloads/Load_Test_Tools_Eval.pdf. 7. Evaluation of load/stress tools for Web applications testing. Hughes Systique Coporation. 1-15 (2008). 8. Rao, R.: Top 15 performance testing tools, http://www.toolsjournal.com/toolsworld/item/156-top-performancetesting-tools. 9. Tools Comparison, http://www.xqual.com/qa/tools.html. 10. A Comparison of Open Source Load Testing Tools, http://www.jds.net.au/techtips/load-testing-toolcomparison/. 11. Web site test tools and site management tools,http://www.softwareqatest.com/qatweb1.html. 12. Vail, C.: Stress, load, volume, performance, benchmark and base line testing tool evaluation and comparison. (2005). 13. OpenSTA, the free performance testing tool, versus the big-guns..., http://www.testingreflections.com/node/view/361. 14. Dunmall, J., Clarke, K.: Real-World Load Testing Tips to Avoid Bottlenecks When Your Web App Goes Live, http://msdn.microsoft.com/en-us/magazine/cc188783.aspx. 15. Functional & Load testing solution, http://www.parasoft.com/jsp/solutions/soa_solution.jsp. 16. The French Social Security Administration Switches To Web Performance Load TesterTM From Open Source, http://www.webperformance.com/library/whitepapers/CNAV/load-testing-CNAV.html. 17. Choosing a load testing strategy, http://www.slideshare.net/Softwarecentral/choosinga-load-testing-strategy. 18. What is load testing?, http://www.load-testing-tools.com/loadtesting.html. 19. Peyton, S.: Choosing an Appropriate Performance Testing Tool, http://fyi.oreilly.com/2009/01/choosing-anappropriate-perfor.html. 20. Load Testing Metrics, http://loadstorm.com/load-testing-metrics. 21. Vail, C.: Software testing tool finder, http://www.vcaa.com/tools/. 22. Difference Between Performance Testing, Load Testing and Stress Testing – With Examples, http://www.softwaretestinghelp.com/what-is-performance-testing-loadtesting- SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 7 de 10 stress-testing/. Referências adicionais 23. Avritzer, A., Kondek, J., Liu, D.: Software performance testing based on workload characterization. (2002). 24. Balsamo, S., Inverardi, P., Mangano, C.: An approach to performance evaluation of software architectures. (1998). 25. Balsamo, S., Marzolla, M.: Performance evaluation of UML software architectures with multiclass queueing network models. (2005). 26. Berry, M., Chen, D., Koss, P., Kuck, D., Lo, S., Pang, Y., Pointer, L., Rolo, R., Sameh, A., Clementi, E., Chin, S., Schneider, D.: The perfect club benchmarks: Effective performance evaluation of supercomputers. (1989). 27. Dolan, Elizabeth D., Moré, Jorge J.: Benchmarking optimization software with performance profiles. (2002). 28. Jr, H Lucas: Performance evaluation and monitoring. (1971). 29. Kounev, S.: Software performance evaluation. (2008). 30. Moroz, O., Anisimov, I., Petrov, I., Zernov, D., Kondratiev, D., Gomonova, E.: Automated testing tools research. (2007). 31. Roehrig, H., Blume, H., Ji, T L., Browne, M: Performance tests and quality control of cathode ray tube displays. (1990). 32. Smith, Connie U., Williams, Lloyd G.: Software performance engineering. (2003). 33. Thomas, M.: Web application stress tools. (2011). 34. Tiwari, V., Malik, S.: Software performance evaluation. (1999). 35. Woodside, M.: Software performance evaluation by models. (2000). 36. Doanne, D.: Software load tester. (2002). 37. Straathof, Jeffrey A., Sherriff, Joel L., Maurer, Dawn C., Chhina, Ramendra S.: Load test system and method. (2000). 38. Avritzer, A., Weyuker, Elaine J.: Generating test suites for software load testing. (1994). 39. Myers, Monty G.: System load testing coordination over a network. (2004). 40. Avritzer, A.: Load testing software using deterministic state testing. (1993). 41. Jiang, Zhen M., Hassan, Ahmed E., Hamann, G., Flora, P.: Automated performance analysis of load tests. (2009). 42. Weinberg, A., Alperin, E.: Software system and methods for generatinf a load test using a server access log. (1999). 43. Menascé, Daniel A.: Load testing of Web sites. (2002). 43. Peyton, Ss: Choosing an Appropriate Performance Testing Tool. 44. Avritzer, A.: The automatic generation of load test suites and the assessment of the resulting software. (1995). 45. Schieferdecker, I., Din, G., Apostolidis, D.: Distributed functional and load tests for Web services. (2005). 46. Charles Proxy: LOAD TESTING, http://www.charlesproxy.com/documentation/usingcharles/load-testing/. 47. MSDN: Considerations for Large Load Tests, http://msdn.microsoft.com/enus/library/ms404664(v=vs.80).aspx. SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 8 de 10 48. AppPerfect: Web Load Testing, http://www.appperfect.com/products/loadtesting/web-load-testing.html. 49. Neotys: http://www.neotys.com/introduction/faq-advices.html. 50. Christophe Marton: Load testing Flex applications with NeoLoad, http://www.adobe.com/devnet/flex/articles/flex-load-testing.html. 51. Ivan Lisitsyn: Efficiency and capacity of load testing tools, http://www.loadtestingtool.com/blog/general/efficiency-and-capacity-of-load-testingtools/. 52. Umair Khan: Website Performance And Load Testing, http://www.streetdirectory.com/travel_guide/123174/world_wide_web/website_performance_and_load_testing.h tml. 53. Oracle: Techniques for Testing Performance/Scalability and Stress-Testing ADF Applications, http://www.oracle.com/technetwork/developertools/adf/learnmore/adfloadstresstesting-354067.pdf. 54. Open-source Testing: Performance test tools, http://www.opensourcetesting.org/performance.php. 55. Grig Gheorghiu: Agile Testing, http://agiletesting.blogspot.pt/2005/02/performance-vsload-vs-stresstesting.html. 56. Alan Booth, Andrew Citron: Stress testing your software without stressing your testers, http://www.ibm.com/developerworks/library/ibm-stress/. 57. Gelperin, D., Hetzel, Bill.: The growth of software testing. (1988). 58. Wikipedia: Load testing, http://en.wikipedia.org/wiki/Load_testing. SIPTEST - System Intelligent Process Testing Link Consulting,SA | Pág. 9 de 10