Java 桌面应用程序的基准测试
我希望在Windows平台上对用Java编写的客户机/服务器应用程序(GUI)进行基准测试。我这样做是为了确定当扩展到100个用户时,应用程序平台将在哪里崩溃。这不是我的应用程序,我没有源代码 我知道像selenium这样的软件包适用于web应用程序,但我还没有看到任何适用于桌面应用程序的软件包Java 桌面应用程序的基准测试,java,windows,user-interface,benchmarking,Java,Windows,User Interface,Benchmarking,我希望在Windows平台上对用Java编写的客户机/服务器应用程序(GUI)进行基准测试。我这样做是为了确定当扩展到100个用户时,应用程序平台将在哪里崩溃。这不是我的应用程序,我没有源代码 我知道像selenium这样的软件包适用于web应用程序,但我还没有看到任何适用于桌面应用程序的软件包 有什么想法吗?您可以使用各种Java性能管理工具分析应用程序: 根据收集的数据类型,还可以为java进程本身启用各种命令行选项。例如,如果您对垃圾收集器的工作有兴趣,只需按以下方式运行java进程
有什么想法吗?您可以使用各种Java性能管理工具分析应用程序: 根据收集的数据类型,还可以为java进程本身启用各种命令行选项。例如,如果您对垃圾收集器的工作有兴趣,只需按以下方式运行java进程:
java -Xloggc:D:/log/myLogFile.log -XX:+PrintGCDetails myProg
然后用类似的方法打开文件
如果不了解您正在评测的应用程序的更多信息,就很难给出从何处开始的建议。在任何计算机上执行的任何应用程序,都需要考虑4个象限:CPU、内存、I/O、网络。有时,在一个象限中提高可伸缩性会暴露出另一个象限中的瓶颈。我通常从我的应用程序花费时间执行的前10个方法开始,询问我是否可以改进这些方法中的算法。可能是目前市场上最好的Java分析器。它不是免费的,但是一个特殊的工具。你的问题有点模棱两可。我想你是想说你有一个桌面应用程序,它有许多外部连接(“用户”)使用其他东西(网络浏览器?) 否则,你可能意味着你有一个桌面应用程序,你正在分发给许多用户,它连接到一个中央服务器——但你真正的意思是,你想测试服务器性能,所以我猜不是这样 无论如何,如果我的第一个猜测是正确的,这可能是一种困难的程序 当我不得不这样做时,我编写了一个程序来模拟客户端连接,并在不同的计算机上运行。如果您的数据相当简单,那么这可以起作用 如果我的猜测是正确的,我可能会给你提供更多的提示——如果你发布更多的信息 ----------------------评论后编辑 我要做的是尝试产生一个可以发送的最小常量xml消息(就像您发布的消息),然后编写一个程序来打开套接字,发送xml并关闭它。您可能必须处理服务器响应 我以前做过这件事,写一个程序可能需要几天的时间——问题可能是模拟多台机器。我会先尝试从一台机器上打开多个连接,如果可以的话,你就可以走了 如果不是(有时每个“客户机”需要不同的IP地址),您可以使用Linux(在windows上很难做到这一点),设置为一个框具有不同的IP地址。我认为你甚至在你的程序中提供了IP地址,因为你正在打开端口,但这已经有几年了,所以这有点含糊不清 解决方案#2(精神上更容易,但手动操作更密集): 如果你有一群客户,你可以用一个叫做“自动热键”的有趣工具来驱动你的程序。这是一个黑客工具,但对于驱动GUI程序来说却很棒。您可以记录一个单独的AHK脚本,该脚本在服务器上循环并导致一些操作,将其复制到所有计算机上,然后在每台计算机上启动它 还有一系列非常昂贵的工具用于管理此类测试。您正进入一个我称之为专业QA人员通常会遇到的更具挑战性的领域
如果你能做到这一点,不管你如何解决它,把它写在你的简历上。啊,这肯定很有帮助。我一直在寻找模拟负载的方法,但无论如何我都必须这样做才能收集应用程序遥测数据。谢谢其他人有什么建议吗?要模拟负载,可以使用Jakarta JMeter。很抱歉。这是我的回答。我有一个库存控制平台,商业软件。供应商可能没有花足够的时间对其系统进行负载测试。该应用程序位于Firebird数据库上,服务器是Java应用程序,通过XML套接字处理数据库中的事务,XML语法不知道其通过Base64i表示进行处理。客户端是与系统用户交互的GUI桌面应用程序。我确实想测试服务器性能,但现在我所知道的只是作为接口的客户端GUI。明白了,听起来不错。在昨晚的睡眠中,我完全忽略了这个软件作为一个XMLSDK,它可能没有完全模拟桌面客户端的所有功能,但至少它是一个我可以编写脚本的机制!这应该是可以做到的。谢谢感谢您提醒我使用提供的XML/SDK。我能够构建一个概念验证的测试框架,现在我正在开发一个易于使用的工具包!