您如何压力测试自己的软件?
-
22-09-2019 - |
题
我自己一直在研究一个应用程序,并且我正处于一切正常的阶段,只要用户完成他或她应该做的一切。 :-)该软件需要更多的测试,以查看它的坚固耐用,当人们进行诸如反复单击同一按钮之类的事情时,它的工作原理,尝试打开错误的文件,将数据放在错误的位置等等。
我对此有一些麻烦,因为我很难考虑使用该应用程序。这些都是我的边缘案例。尽管如此,我还是希望该应用程序尽可能稳定且经过良好的测试,然后才开始将其提供给Beta测试人员。假设我目前没有谈论雇用专业测试人员,我很好奇你们是否有任何技巧或系统的思考方式。
谢谢,一如既往。
解决方案
好吧,听起来您正在谈论两种不同的内容“测试应用程序的功能”和“压力测试”(这是您问题的标题)
压力测试是当您拥有网站时,并希望检查它可以同时处理100,000人。了解您的应用程序在压力下的表现。您可以通过记录一些操作,然后让许多代理机器同时击中应用程序来执行多种方法。
这个问题听起来更像是一个质量保证问题。这就是测试人员 /β测试人员的目的。但是,您可以自己做一些事情来验证应用程序的最佳功能。
单位测试您的代码将是一个良好的开始,它可以帮助您尝试找到这些边缘案例。如果您的方法涉及INT之类的东西,请尝试传递int.max,int.min,并查看什么炸毁。将无效进入一切。如果您使用的是.NET,则可能需要查看PEX,它将通过您的应用程序所具有的所有分支/编码器。这可能有助于您进一步完善单元测试,以尽可能地测试您的应用程序。
集成测试,看看您通常的某些事情会发生什么。这将帮助您稍后开发时“查找错误”。
这些是您可以尝试尝试发现可能错过的边缘案例的一些快速提示。但是,是的,最终您需要将应用程序传递给其他人进行测试。只需确保您在击中它们之前已经尽可能多地掩盖了吧:-)
其他提示
确保在单元测试和集成测试中具有足够的代码覆盖范围。
使用适当的UI验证以及可以打破它的测试组合。
我发现,一个良好的应用程序可以减少UI中可能的排列数量(用户可以破坏它)有很大帮助。像MVC这样的设计模式在这方面可能特别有用,因为它们使您的UI贴面尽可能薄。
自动化。
(重新)对您的代码进行考虑,以便另一个程序可以为其投掷用户活动。创建简单的用户事件脚本并将其播放回您的程序。从Beta用户捕获事件,并将这些事件保存为测试脚本(用于复制问题和检查回归)。编写一个绒毛塔,该模糊the对脚本进行小小的随机更改,并也对您的程序进行尝试。
通过这种自动化,您可以强调和应用,并发现诸如缓存和内存泄漏之类的明显问题。它不会测试实际功能。对于功能,单位测试可能会有所帮助。有大量的单元测试框架可以尝试。选择有用的东西,学会编写良好的测试,然后将它们集成到您的构建过程中。