负载测试是确保您的应用程序能够承受用户需求的重要环节,但在运行业务关键应用时尤为重要。测量增加负载对您的Android应用程序和API性能的影响,有助于确保它们在真实用户条件下可靠运行。通过负载测试工具,DevOps团队可以轻松设置特定测试,及早识别开发过程中的瓶颈,避免发布应用时出现问题。您需要一个能够高度扩展的解决方案,允许测试各种用户负载,从少量到数千用户。同样,从客户的视角使用真实Android设备测量您的Android应用程序质量非常关键,这样您才能确切知道客户的体验。
从设置到测试执行只需几分钟。
什么是Android应用负载测试?
负载测试网页应用和移动应用有什么区别?目标相同——确保您的应用在预期流量下可靠运行——但移动环境引入了额外的考虑因素,如网络变异性和设备性能。无论如何,虽然原因相同,但关于Android应用执行还有一些额外有趣的点,很容易犯一些关键错误。本文将为您介绍Android应用负载测试的一些最佳实践,然后展示执行负载测试的步骤。
为何负载测试是必要的
负载测试为系统性能和可靠性提供信心。它还有助于识别重压条件下的瓶颈,预防不同用户数量下的性能问题。例如,如果一家公司即将进行促销活动,他们会想确保应用能处理流量激增且不会出现性能下降。负载测试是将负载(用户)施加到系统上并记录其响应的过程。负载测试工具的策略和类型包括以下几种:
手动负载测试
这是执行负载测试的程序之一,但不会产生任何可重复结果,不提供可量化的压力级别,也没有任何正式协调。
内部开发负载测试工具
了解负载测试重要性并拥有必要基础设施和资源的公司,可以构建自己的测试工具。
开源负载测试工具
网上有许多免费开源的测试工具和设备,但由于是免费的,这些工具可能没有专门的支持团队来帮助解决问题或疑问。
负载测试方法
负载测试的方法通常包括以下步骤:
- 评估性能接受标准
- 确定关键场景
- 设计工作负载模型
- 确定目标负载水平
- 设计测试
- 执行测试
- 分析结果
对移动应用而言,该方法还应考虑API依赖关系、网络状况和设备特定行为。
负载测试目标
负载测试的目标因公司或测试而异,但通常测量以下关键应用指标:
- 响应时间
- 吞吐量
- 资源利用率
- 最大用户负载
- 与业务相关的指标
规划阶段后的负载测试
QA和DevOps团队设定负载数量和分布方式,准备测试内容,然后执行测试。随后,测试工具在固定时间内集中发送请求到API,同时记录测试数据。执行负载测试时,可以将测试指标与业务规划阶段收集的非功能需求进行对比。同时,可以应用关联分析,识别用户响应中哪些是活跃的(可返回每个请求的多种数据,影响后续请求)和静态的(不变)。关联分析对于处理动态内容是关键,而测试静态内容(如首页)时,可以省略。
大型流量活动准备
准备电子商务应用在高流量活动(如黑色星期五)期间,应预估比平时更多的用户且预期用户停留时间更长,需纳入测试计划。团队将分析响应时间、吞吐量、延迟、连接时间等KPI,及其相互关系,评估如何优化系统能力。如有改进,将重新进行测试。
负载测试后的考虑
负载测试完成并收集数据后,可能考虑后续优化措施。例如,若应用无法应对用户和数据的正常增长,则采用扩展策略。
若系统、流程和数据库无法满足增加的需求,可升级基础设施、逐步增加容量或使用负载均衡器。此外,还可以寻求第三方帮助。专用测试工具使团队能够判断系统是否保持稳定及高负载下可能出现的问题。理想的负载测试工具应能:
- 软件内设置性能测试
- 提供高级性能测试,缩短构建/测试周期等
- 允许开发与QA合作
负载测试的目的是什么?
稳定且快速的性能
页面或应用加载缓慢可能导致公司流失客户和收益,因为用户偏好快速的页面加载。Google的研究显示,超过50%的用户会放弃加载时间超过三秒的应用或网页。提前进行负载测试可确保应用满足用户和业务需求,显示瓶颈位置,便于团队在投产前修复问题。
稳定性
如果应用无法响应用户请求或出现漏洞,用户将迅速停止使用该应用。由于应用性能高度依赖API性能,定期进行负载测试是一种良好实践。
减少页面加载时间
显然,速度是用户体验的关键,缓慢的应用会让用户焦躁不安,甚至离开您的站点。对关键收入页面进行负载测试,帮助定位具体问题,协助WebOps团队优先处理受影响页面,减少潜在负面影响。
揭示瓶颈
开发阶段的应用或站点可以暴露常见瓶颈,如CPU、内存和系统使用,便于开发者在将代码或应用投入生产前解决问题。
从地理位置测试
了解大多数客户来源后,可以从相关地区设置测试,识别影响这些访客的特定问题。确保所有用户无论来自何处,都能访问您的站点,并获得一致的用户体验。
建立SLA(服务级别协议)
范围量化确定运行应用所需的硬件和软件资源,符合大量预定义需求。负载测试有助于预测应用在高压下的表现,帮助决定未来是否需要投资额外基础设施。
测量关键绩效指标(KPI)
在负载测试阶段,团队收集分类响应时间数据,判断是否满足API要求。例如,API响应时间可能要求低于两秒,这些数据将显示应用是否达到最小、平均和最大响应时间,是否有错误/缺陷,应用每秒处理请求数等。依据这些数据,您可判断应用后端是否能应对正常负载。
负载测试场景
负载测试需要大量规划。在项目规划初期,业务专家收集非功能需求,与性能指标对照。基于这些需求,设置测试脚本和一个或多个测试场景。通过规划,专家确定相关策略及组成部分,可通过两种方法执行。
耐力测试
第一种方法是耐力测试,检查系统是否能在较长时间内承受稳定、中等强度的负载。
容量测试
另一种方法是容量测试,有时称作洪泛测试,短时间内施加大量负载。
耐力测试和容量测试均有助于识别性能瓶颈、缺陷和限制。例如,后端系统可能有快速处理器,但内存限制可能负面影响性能。负载测试提供整体视角,显示在支持预期性能的情况下,可支持多少应用或进程同时运行。还考虑预期使用案例及API请求流量变化。
通常,我们对大型企业应用执行耐力测试,因为它们需要稳定的API性能。容量测试适用于日处理大量数据的场景,如购物/电子商务和在线订票应用示例。
Android应用负载测试工具
有许多开源和商业工具可用于测试Android应用。JMeter、MonkeyRunner和Gatling是开发者可用来测试Android应用的一些选择,但LoadView解决方案在负载测试方面表现最佳。本文稍后将探讨这些替代工具和解决方案的优缺点。
LoadView
LoadView是一款基于Web的负载测试解决方案,可测试网页、Web应用、Web服务/API以及流媒体。此解决方案采用真实浏览器,并能快速生成数百到数千个并发连接。LoadView用户可选择多种可配置选项,如不同的负载曲线和地理位置,来设置负载测试。所有应用使用移动API引擎,因此您需要选择能轻松设置负载测试、无需大量编码,以及支持生成所需虚拟用户数量的解决方案。LoadView支持REST API(JSON和XML),以及需要身份验证或多步骤执行的SOAP和Web API。
使用LoadView进行API负载测试
性能指标
查看每个测试会话的信息,确保API在每种情况下返回预期结果。
全球测试
选择距离实际客户最近的地区,比较各地区性能差异。
发现瓶颈
判断是否存在影响API更高效完成事务的物理或软件瓶颈。
数据深度分析
评估错误代码并使用额外报告,如瀑布图和性能报告,评估API性能。
LoadView:EveryStep网页录制器
LoadView使用EveryStep网页录制器(一种脚本工具),记录网页交互的每一步,并通过真实浏览器回放脚本。录制器兼容40多种桌面/移动浏览器和设备,如Chrome、Internet Explorer、Android、iOS、iPhone、iPad、Google和三星等。
EveryStep网页录制器还支持构建动态应用的框架和语言,如AJAX、Java、HTML5、Flash、PHP、Ruby等。使用EveryStep网页录制器,您可以像用户一样浏览页面或应用,录制每一步操作。录制完成后,您可轻松编辑脚本,无需费力。用户还可访问额外功能,如设置延迟、网络过滤和限制等,关键于模拟真实用户行为。例如,您可模拟不同用户登录、访客搜索不同商品,或通过动态参数进行动态URL测试。
负载测试工具:LoadView
移动应用负载测试
任何企业都不能忽视内部或面向客户应用的性能与稳定性。如果响应时间不达标,用户会停止使用这些应用,转而使用更可靠的系统。移动应用的性能至关重要。应用商店内有数十亿应用,用户很容易切换到满足他们需求的更快、更高效应用。那些潜在用户会将您应用视为笨重,可能永远不再使用。企业需明白,在开发、QA和运营阶段忽视性能,将危及其业务。负载测试移动应用不应是繁琐且耗时的事情,尤其是使用像LoadView这样的先进解决方案。接下来的章节,我将说明如何使用LoadView为您的移动应用安排并执行负载测试。
负载测试准备
负载测试网页应用的首要步骤之一是审核非功能需求,帮助设计负载测试与计划。关注期望的响应时间、使用应用的用户数及其执行的操作步骤数。如未明确,请联系业务相关人员或建模人员获取必要数据。确认细节后,首先计算同时使用应用的移动用户数量。性能工程师使用Little定律,公式如下:
虚拟用户数 = 每小时用例数 × 会话时长(秒)/ 3600
确保模拟真实及未来增长的用户场景和步骤。应用使用率将增长,重要的是检查高使用率的响应时间。作为最后的规划步骤,应撰写详尽测试规格,涵盖测试环境描述、计划测试、负载配置、性能要求和职责等。
实施与测试配置
使用脚本录制回放工具EveryStep网页录制器,捕捉移动应用上的手动点击。您可选择多种设备类型,如iPhone、Android、Nokia等,以及测试时的屏幕方向,然后开始录制脚本。点击”开始录制“后,录制器将使用您选定的设备类型,允许您像用户一样浏览应用并录制所有操作。录制步骤完成后,保存录制内容并执行首次预运行,确保无错误。
有时,负载测试需要模拟应用在各种数据条件下的表现。EveryStep网页录制器简化了参数化操作,您可以选择脚本中的步骤并修改其中参数,如延迟、上下文参数或网络限制等。修改完成并准备好脚本后,将包含所有信息的文件上传。最后,将其上传至LoadView平台,供实际测试使用。
上传脚本到LoadView后,平台引导您完成测试设置。您需指定测试计划,包括并发用户数和测试时长。还需选择希望从哪个区域注入负载,以反映真实用户网络视角的响应时间。
移动负载测试执行与报告
LoadView简化测试执行。它将所有测试脚本发送至全球负载注入机,根据测试计划模拟移动用户操作,收集结果,并实时提供真实响应时间洞察。测试结束后,您将收到详尽测试报告。您还可以查看所有热点问题,或几次点击将结果分享给开发团队。
如何用LoadView负载测试Android应用
LoadView完全基于Web且极为直观。摒弃其他工具需耗时数日的准备和编码。只需打开账户即可开始负载测试。LoadView平台极大简化负载测试的设计、实施、执行和分析复杂度。无论您是DevOps专家还是性能测试新手,从脚本创建到测试开始不超过几分钟。LoadView引导您完成以下四个阶段的全过程负载测试:
创建负载模拟脚本或设备
无需对应用执行大量负载测试脚本,通常20%的用例产生80%的总交易负载。确定关键用户路径后,选择适合的用户模拟策略。LoadView灵活可定制,允许调整用户行为,从三种负载曲线类型中选择,并指定负载来源地理位置。负载测试目标和应用技术栈帮助确定模拟类型。由于开销低,单个负载注入器可以承载大量虚拟用户,提高测试效率。

应使用真实浏览器测试以验证端到端响应时间。如前所述,LoadView利用EveryStep网页录制器轻松录制操作,无需手动编写脚本。用户喜欢此工具,因为它允许轻松浏览应用并自动录制操作。录制完成后,您可以添加自定义操作、插入验证步骤、回放录制脚本。EveryStep网页录制器是负载测试Android应用的重要工具,也可用于自动化执行应用中的其他繁琐任务。

负载测试校准
负载注入器机器可能导致端到端响应时间差异。为此,LoadView提供校准步骤,执行单用户测试脚本,计算每台负载注入机的最优用户数。校准防止因负载机器瓶颈导致测试结果冲突。
负载测试设备设置
输入API URL并设置测试API名称。设置调用方法(GET或POST)。点击创建设备按钮。

执行负载测试
最后,启动您设计的负载测试。LoadView的优势之一是您可在执行测试前看到测试费用。您需确认电子邮件地址,LoadView将把测试排入执行队列。

查看实时测试性能
测试期间,LoadView在在线仪表板中展示响应时间和吞吐量指标。测试完成后,您将收到详细报告,总结响应时间、虚拟用户、会话、会话错误等。压力测试中若任何阈值被超过,错误率通常升高,调优和运营团队通常关注原因。无需重复测试,因为LoadView捕捉完整网站响应时间拆解。您可以通过瀑布图获得功能级组件洞察,或观看视频直观检查站点在预期负载下的表现。
会话报告
测试完成后,您获得详尽报告。报告直观,您可用浏览器查看所有结果。此外,LoadView支持通过共享唯一URL与内部团队分享测试结果。LoadView也保存历史测试结果,以便在应用调整后对比新性能指标。
LoadView的使用场景有哪些?
以下是LoadView帮助您找出Android应用性能不达标原因的一些常见场景:
扩展性问题
当新应用变慢且您不知原因时,LoadView可帮助您确定应用允许多少用户访问。
容量规划
新站点需要配置哪些硬件?您可以尝试自己估算,但失败风险高。添加过多基础设施浪费资金,服务器不足则带来巨大性能问题。
审核非功能需求
团队记录了详细性能需求。单用户情况下加载时间满意,但新站点在真实条件下表现如何?
并发用户
功能测试团队发现新站点部分功能无响应,问题随机且频繁出现。LoadView可以准确定位多用户同时使用时影响性能的问题。
第三方内容
开发人员构建了功能丰富、包含动态第三方内容的新站点,但无法预知这些第三方应用在正常或峰值负载下的表现。
Android应用负载测试的其他工具
JMeter
JMeter是开源Java应用,可执行网站、服务器、应用性能测试。但与LoadView不同,JMeter不是浏览器,无法执行网页中的JavaScript。JMeter需要深厚技术背景,增加学习曲线。为移动应用录制动作,JMeter使用代理,需额外配置网络连接。大规模测试执行难,需高配置环境。许多开源负载测试工具功能有限,不足以满足当今应用需求。
MonkeyRunner
MonkeyRunner提供API,用于远程控制或模拟Android设备。主要用于功能/回归测试,提供一组API类(MonkeyRunner, MonkeyDevice, MonkeyImage)。开发者可编写Jython程序生成并执行测试,报告错误。缺点是为低级API工具,无用户界面,不支持脚本复用,每个设备需重新编写脚本。
Gatling
Gatling是另一开源性能测试工具,用Scala编写,允许用户通过代码定义测试,而非像EveryStep网页录制器那样用脚本工具创建负载脚本。优势是开发者易于管理和自动化CI/CD环境。缺点是代码驱动,可能需技术人员操作。仅支持基于协议的测试,可能忽略真实用户行为的性能表现。进行大规模地理分布测试需购买Enterprise版本。
为何选择LoadView?
速度是数字世界的关键。大大小小组织投入大量资源以满足用户需求。LoadView平台设计轻巧流畅,适合性能测试。以下是客户选择LoadView的原因:
准确的用户性能数据
测量全球用户视角下的响应时间。
易用性
摒弃复杂配置和不能产生足够负载模拟真实环境的本地负载测试工具。只需登录LoadView平台,设置测试参数,即可快速执行负载测试。
经济高效
LoadView让您专注于最重要的活动,仅为测试中模拟的负载付费。
脚本可复用性
可复用负载测试脚本进行正常运行监控,确保网站投资最大收益。
全天候支持
我们的专家随时为您答疑解惑。
总结:Android应用负载测试
LoadView为用户提供最佳的基于浏览器负载测试。它支持运行和测试多种用户模拟类型,并通过EveryStep网页录制器轻松创建与回放脚本——所有操作均在单一平台完成,使LoadView成为强大测试工具。无需长期合约,平台允许您对网站、Web应用、Web服务及API进行负载和压力测试,确保满足客户需求并维护一致的用户体验。该方案易用、可针对您的环境进行配置,非常适合测试Android应用。如您考虑为项目进行API负载测试,欢迎联系我们。
注册LoadView免费试用,领取免费负载测试开始体验。或在预定的在线演示中与性能工程师交流,他们将带您了解平台并解答任何疑问!