面试稳了!集齐几千名程序员精选的 100 道性能面试题!
软件测试test
共 4221字,需浏览 9分钟
·
2021-01-23 02:21
什么是性能测试?
在软件中,性能测试(也称为性能测试)确定或验证被测系统或应用程序的速度,
可伸缩性和/或稳定性特征。性能与实现满足项目或产品性能目标的响应时间,
破坏和资源利用水平有关。
进行Web应用程序性能测试是为了降低系统可用性,可靠性,可伸缩性,响应性,
稳定性等风险。
性能测试包含多种不同类型的测试,例如负载测试,体积测试,压力测试,容量测试,均热/耐久测试和逐步测试,以测试测试发现或解决系统中的性能问题。
性能工程与性能测试之间的区别?
性能工程是一门学科,其中包括在软件开发生命周期(SDLC)的每个阶段中的最佳实
践和活动,以测试和调整应用程序,以实现所需的性能。
性能测试可模拟实际的最终用户负载,以确定系统的速度,响应能力和稳定性。
它涉及在各种参数(例如响应时间,并发用户负载,服务器吞吐量等)下测试和报告
应用程序的当前性能。
什么是性能调优?性能调整有哪些类型?
性能调整是一个专注于提高系统性能的过程。
有两种类型的性能调整。
1.硬件调优:优化,添加或替换系统的硬件组件以提高系统性能的过程称为硬件调优。
2.软件调优:通过对代码,数据库等进行概要分析来确定软件级别的瓶颈。
借助微调或修改软件来解决瓶颈的方法称为软件调优。
性能测试中的配置文件是什么?
通过优化代码,性能分析有助于微调应用程序。
必须对代码进行分析,调试和审查,以确定使其运行更快的最有效方法。
列举一些常见的性能瓶颈?
性能测试的目的是消除性能瓶颈。一些常见的性能瓶颈如下
CPU利用率
内存利用率
网络利用
软件限制
磁盘使用情况
性能测试的进入和退出标准是什么?
进入标准:明确定义的服务水平协议(SLA)/性能目标
退出标准:实现SLA /性能目标
性能测试过程涉及什么
识别测试环境:
确定物理测试环境,生产环境,并知道可用的测试工具。
在开始测试过程之前,请了解硬件,软件和网络配置的详细信息。
必须在项目的整个生命周期中定期重新审查此过程。
确定性能验收标准:
这包括响应时间,吞吐量和资源利用率的目标和约束。
响应时间是用户关心的问题,吞吐量是业务问题,资源利用率是系统问题。
还必须确定那些目标和约束可能无法捕获的项目成功标准。
计划和设计性能测试:
确定关键方案以测试所有可能的用例。
确定如何模拟该可变性,定义测试数据以及建立要收集的指标。
配置测试环境:
在执行之前准备测试环境,安排工具和其他资源
实施测试设计:
根据测试设计进行性能测试
执行测试:
执行和监控测试
分析结果,报告并重新测试:
合并,分析和共享测试结果。
微调并重新测试以查看性能是否有所提高。
当所有度量标准值都在可接受的范围内时,就说明您已经在该特定配置上测试了
该特定方案。
我们什么时候应该使用性能测试?
性能测试应该在开发过程中,质量保证过程中,产品发布之前,新版本发布之后以及市场计划中进行。
简单的答案是在系统更改时的任何时候。
为什么要自动化性能测试?
市场上许多性能测试工具都包含用于执行自动化测试的组件。
我们的构建系统使用自动化来完成重复性任务,因此我们有更多时间花在分析结果上。
由于执行了这些重复性的自动化任务,因此更容易定期进行测试,并且可以及早发现问题。
给出一些性能测试用例的例子
与编写功能测试用例相比,编写用于性能测试的测试用例需要不同的心态。
验证应用程序是否能够处理一定数量的同时用户
当网络连接缓慢时,验证负载下应用程序的响应时间是否在可接受的范围内
验证应用程序在低,正常,中等和重负载条件下的响应时间
检查服务器在高负载下是否仍可正常运行而不会崩溃
验证峰值负载后应用程序是否恢复到正常行为
验证峰值负载下的数据库服务器以及应用程序的CPU和内存使用情况
性能测试生命周期涉及哪些阶段?
性能测试生命周期的各个阶段如下
非功能需求分析
性能测试策略
性能测试设计
性能测试执行
性能测试结果分析
基准和建议
功能测试和非功能测试之间的区别?
功能测试 | 非功能测试 |
---|---|
系统实际执行的是功能测试 | 系统的性能如何是非功能测试 |
确保您的产品符合客户和业务要求,并且没有任何重大错误 | 确保产品符合客户期望 |
验证软件与预期输出的准确性 | 验证软件在各种负载条件下的行为 |
在非功能测试之前执行 | 在功能测试后执行 |
功能测试用例的示例是验证登录功能 | 非功能测试用例的示例是检查是否在不到2秒的时间内加载了主页 |
测试类型为 •单元测试 •冒烟测试 •用户接受度 •集成测试 •回归测试 •本地化 •全球化 •互操作性 | 测试类型包括 • 性能测试 •容量测试 •可伸缩性 •可用性测试 •负载测试 •压力测试 •一致性测试 •可移植性测试 •灾难恢复测试 |
可以手动或自动执行 | 如果自动化,则可以高效执行 |
性能测试,负载测试和压力测试之间的区别
性能测试 | 负载测试 | 压力测试 |
---|---|---|
它是负载和压力测试的超集 | 它是性能测试的一部分 | 它是性能测试的一部分 |
性能测试的目标是为应用程序设置基准和标准 | 负载测试的目标是确定系统的上限,设置应用程序的SLA并检查系统如何处理重负载 | 压力测试的目的是发现系统在极端负载下的行为以及如何从故障中恢复 |
负载极限在中断阈值之上和之下 | 负载极限是突破的门槛 | 负载极限高于中断阈值 |
性能测试中检查的属性是速度,响应时间,资源使用,稳定性,可靠性和吞吐量 | 在负载测试中检查的属性是峰值性能,服务器吞吐量,各种负载级别下的响应时间,负载平衡要求等。 | 在压力测试中检查的属性是稳定性响应时间,带宽容量等, |
有哪些不同类型的性能测试?
性能测试的类型如下
负载测试
压力测试
浸泡/耐力测试
峰值测试
量测
可伸缩性测试/容量测试
什么是负载测试?
进行了负载测试,以验证系统/应用程序可以处理预期的事务数量,
并验证系统/应用程序在正常和峰值负载条件(用户数量)下的行为。
负载测试是性能测试的子集,是一种非功能测试。
什么是可伸缩性/容量测试:
容量测试用于确定系统/应用程序在性能目标变得无法接受之前可以成功处理多少用户。
这使我们能够避免将来出现潜在问题,例如增加的用户群或增加的数据量。
它可以帮助用户确定扩展策略,从而确定系统是应该向上扩展还是向外扩展。
它主要在电子商务和银行网站上完成。有一些例子。这种测试有时称为可伸缩性测试。
什么是压力测试?
压力测试用于在负载增加超过系统设计预期的情况下验证系统的行为。
该测试解决了当我们通过施加超出设计预期的负载给系统施加压力时,哪些组件首先会失败。
这样我们就可以设计出更强大的系统。
什么是浸泡/耐力测试?
浸泡测试又名耐力测试。长时间在高负载下运行系统以识别性能问题称为“浸泡测试”。
这是为了确保该软件可以长时间处理预期的负载。
什么是峰值测试?
峰值测试用于确定系统负载突然增加(大量用户)时系统的行为。
用户的面孔有哪些常见的性能问题?
用户面临的一些常见性能问题是
加载时间更长
响应时间短
可扩展性差
诸如编码错误或硬件问题之类的瓶颈
列出性能测试考虑的一些参数?
性能测试的一些参数是:
内存使用情况
处理器使用率
带宽
内存
网络输出队列长度
响应时间
每秒CPU中断
承诺的内存
线程数
等待
选择性能工具时应考虑哪些因素?
选择最佳性能测试工具进行性能测试时需要考虑的一些因素。
预算(许可费用)
牌照种类
简易安装
协议支持
客户偏爱负载测试工具
培训员工使用所选工具的成本
加载工具的硬件/软件要求
工具供应商支持和更新政策
详细报告
云端整合
列举一些流行的性能测试工具?
一些流行的性能测试工具如下
Web加载
LoadRunner
NeoLoad
Apache JMeter
LoadUI专业版
什么是性能测试中的吞吐量?
吞吐量是性能测试中的关键指标之一。
它是指在给定时间段内在客户端和服务器之间传输的数据量,通常以每秒位数(bps)表示。
它是根据每次请求数计算的。
吞吐量=(请求数)/(总时间)
示例:每秒比特,每秒字节(Bps),每秒千字节(KBps),每秒兆字节(MBps)和每秒千兆字节(GBps)。
如果服务器在一分钟内收到60个请求,则吞吐量为每秒一个请求。
如果它在一分钟内收到120个请求,则吞吐量为每秒两个请求。等等。
并发用户在性能测试中意味着什么?
并发用户数是给定时间与应用程序交互的用户数。
所有用户可能都处于某种会话的中间,但是他们都在执行不同的操作。
性能测试中的协议是什么?
性能测试中的协议是一种用于客户端和服务器之间通信的语言。
通过在性能测试工具中选择协议,指示该工具捕获所选客户端与其服务器的所选语言的通信。
一些协议是:
HTTP
HTTPS
FTP
Web Services
Citrix
什么是性能测试中的参数化?
参数化用于用参数替换脚本中的硬编码值。
性能测试之间有什么关联?
关联用于在性能测试中捕获测试脚本中的动态值,并防止脚本在执行期间失败。
如果在相同或不同用户重放操作时,每个用户操作的值都发生变化,则称为动态值。
性能测试中的基准测试是什么?
在得出任何结论之前,应在应用程序上进行此测试,以获取我们进一步测试的参考。
这些测试应有助于我们确定服务器的正常响应。
然后,我们可以使用这些值在其他测试中设置断言。
性能测试中的基准测试是什么?
基准测试是将软件或硬件的性能与其他组织设定的行业标准进行比较的过程。
在这里,我将结束本性能测试面试问题帖子。
如果您发现我没有涵盖某些问题,请在下面的评论部分中告诉我。
我将尝试更新此性能测试面试问题与解答。
往期推荐
评论