技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 111 常见问题 5 技术文章 106

无预算的性能测试

时间:2023-11-28   访问量:1041

今天,我将举几个例子,说明一些案例,这些案例还不够大,不足以保证全职性能测试人员,在这些案例中,“传统的”“功能”测试人员和测试组加紧了工作。我将向你展示我做了什么,教你如何去做,并在此过程中解释性能测试和性能工程之间的区别。

让我们开始吧。

淹没在数据中

在我在 Socialtext 工作的早期,我们发布了一个新模块,该模块使用 python 中的全新后端开发。测试人员对该系统知之甚少;我们当然不知道它会如何表现。我们向首席执行官(也是我们的代理工程副总裁)提出了这个问题,并询问了从头开始进行负载测试需要多长时间。我们的CEO想要投入生产,所以他告诉我们跳过它。

一周后,我参加了一个团队回顾会,问题出现了。“为什么 QA 没有发现性能问题?”该公司的首席执行官回答说:“马特引起了我的注意。他提出了一些备选方案。我决定承担经过计算的风险并跳过性能测试。下一步是什么?

这让热度下降了一两个星期,但问题很快就开始了:QA要为性能测试做些什么

简短的回答是,我们不需要。我们不需要测试软件来找出什么地方很慢。我们知道它很慢。我们甚至有数据(指标)来说明每个唯一 URL“页面”的加载时间。这些指标是可排序的,包括平均值、中位数、四分位数、最慢 10% 平均值、最慢 1% 平均值等数据。这不是性能测试问题,而是性能修复问题。

严格来说,这种说法是正确的。测试设计方案,运行测试,并提供在生产负载下保存页面需要 6 秒的数据。擦掉你的手,开始下一项工作。

性能工程实际上试图确定系统中的薄弱环节以及如何加强它们。执行此操作的经典方法是监视和分析,我接下来将介绍这些方法。

面向 QA 和开发团队的现代测试用例管理软件

免费试用 TestRail


数据库二分法

还有一次是为一家保险公司工作。正如您所猜到的,这是大量的数据库工作,向系统添加新客户,处理承保范围的增加和删除,输入和处理索赔。ERP系统做了很多这样的工作;程序员自动输入数据,输出数据,然后“四处摇晃”。(即网站、数据仓库和自定义。

作为“测试人员”,我被拉进来帮助提取数据,这需要四个小时才能运行,而且速度越来越慢。如果它继续增长,它将不得不在一夜之间运行,然后它将运行到批处理窗口,数据库连接将开始超时。我们大概有一个月的时间来修复它,没有问题,两个月没有严重的问题。这是一个简单的性能测试:它花费的时间太长。做。工程设计需要更多的工作。

分析将整个事务分解为尽可能小的部分。对于网站,这可能是呈现时间、服务器之间的延迟以及服务器上的时间。知道在服务器上的时间后,可以分析应用程序,以查看它在每行代码上花费了多少时间。这是我使用 Firefox 获得的简单瀑布图,使用 (T)ools->(D)eveloper->(N)etwork,并加载我的网站,xndev.com。该页面在 2 秒内加载和呈现,没有错误——但我确实想看看那个外部 HTML。

测试结果表

对于数据库的困境,我分析了使用 Devel:Profiler 用 Perl 编写的代码。大多数流行的工具都有这样的程序。当程序完成时,它会吐出结果,告诉我在哪些方法上花费了多少时间,以及调用它们的频率。该程序在运行 select 语句的一行上花费了大量时间。这句话并不算太慢,只花了几秒钟——但这句话被调用了数万次。

程序员是这样编写程序的:

       Select every customer_id that qualifies
        For each customer_id
                     Select all customer data where id=customer_id
                     Export customer data
        Next

我是这样重写的:

       Select all customer data that qualifies into one query result
        For each customer_id
                     Export customer data
        Next

突然间,这些时间消失了,应用程序在 45 分钟内运行。保持数据库记录打开需要很长时间,因此我添加了另一个步骤,将数据提取到内存中的数据结构中,关闭数据库连接,然后运行 for 循环。这将时间缩短到 <> 分钟。

这使得应用程序不仅具有性能,而且具有可测试性。我们可以将其分为两部分:数据收集器部分和导出器部分。

预算在哪里?

工程方法的有趣之处在于它没有预算。没有“性能工程师”角色。您不必购买新工具、聘请顾问或进行“方法论”转换。通常,工作可以在可自由支配的时间内完成,而不会影响任何项目进度。

相反,人们需要专注于问题并合作解决问题。

上面的例子是一个简单的系统;代码本身就是问题所在。我不必尝试进行反向监控来确定瓶颈是 CPU、磁盘、内存还是网络,然后弄清楚如何解决它。通常,当我在这些“边缘”情况下发现性能问题时,问题本身就这么简单。有人只需要潜入并获取数据。从性能测试到性能工程是模糊角色之间界限、增加价值和防止“QA 是自重”陈词滥调的好方法。

试一试。


一体化测试自动化跨技术 |跨设备 |跨平台


上一篇:性能测试也值得持续测试

下一篇:开发人员与测试人员的协作:如何以及为什么

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部