热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软件测试—Day2

day2Q:面试过程中,性能测试你测试什么?关注的点是什么?A:程序的响应时间,系统的吞吐量,以及并发用户数,和tps,qps,以及DB的IOPS,和服务器的系统资源(CPU和内存

day2

Q:面试过程中,性能测试你测试什么?关注的点是什么?

A:程序的响应时间,系统的吞吐量,以及并发用户数,和tps,qps,以及DB的IOPS,和服务器的系统资源(CPU和内存)。通过一定的工具或者代码的方式,来验证被测试的程序是否满足性能测试的目标,以及验证程序是否会出现OOM,系统崩溃,系统无响应等情况。

Q:性能测试过程中,开发说需要添加服务器性能测试才能继续,此时你会?

A:性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的。所以行不通,否则需要其他相关人员一起配合。


工作流程:

1、清楚性能测试的目标是什么?

2、怎么去做?

3、过程中需要收集数据

4、最后一定要有结论,汇报领导。


小扩展:主流的MQ消息队列服务器

Kafka:由LinkedIn公司打造,主要应用于大数据领域,在数据的实时流要求是非常高的,性能优越,但是在数据一致性方面表现很差劲。

RabbitMQ:对数据的一致性要求很高,对性能反而要求没那么高。


性能测试模型(性能测试步骤)

性能测试模型也可以理解为性能测试步骤,具体汇总为如下:


• 测试前期准备工作:

1、梳理清楚性能测试的目标(参考之前的历史数据,性能的目标由测试主导梳理出来,但是和大家一起沟通决定下来)

2、在目标清楚的基础上,梳理5出测试场景,和准备测试数据

3、准备测试资源(人力资源和机器资源)


• 测试工具技术引入

1、LoadRunner:HP公司研发,主要在工业级的性能测试中具备非常大的优势,收费使用。

2、JMeter Apache基金会顶级项目,是Java语言%开发的,它是开源的,在头部互联网公司基本都会进行二次开发,应用广泛。

3、Locust是python代码级别的性能测试工具,它是基于协程(微小的线程)


• 性能测试计划

1、具体测试场景执行的负责人,和执行的开始结束时间

2、前置工作内容

3、具体使用到的测试技术


• 测试设计与开发

1、编写测试脚本来执行验证具体的测似场景


• 测试执行与管理,数据收集

1、在脚本编写的基础上执行以及验证测试场景

2、我们在测试过程中需要收集数据(性能计数器)

A、服务器系统资源:CPU和内存

B、DB资源:IOPS,连接数

C、服务资源:响应时间(最大,最小,平均,中位数(50%),90%,95%,99%,吞吐量,并发数)

3、数据收集的思路:把这些数据写在InfluxDB(时序数据库),最后展示在  Grafana平台上。

场景:针对一码通的系统,需要做并发的测试,目标数据是每秒并发15万

1、5万  2、10万  3、15万  4、20万  5、25万


• 测试分析

1、结合收集到的数据分析是否和最初制定的性能测试目标吻合,如果达到了目标,输出性能测试的报告 2、如果没有达到目标,那么开发继续调整,优化,测试继续测试

相关工具下载地址

https://locust.io/

https://jmeter.apache.org/


安装jdk,配置Java环境


JVM监控工具

打开cmd ----->输入jvisualvm

 

 

 


性能测试的方法


验收负载测试:

在QA的环境模拟生产运行的业务压力和使用场景组合,测试系统的性能是否满足生产环境的性能诉求。 环境:



  1. 测试环境(QA)



  2. 预发布环境:介于测试环境和生产环境之间



  3. 生产环境(线上环境)




负载测试

在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已经达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量。


压力测试

该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut(超时),OOM(内存泄露),OverStackExpection(堆栈异常/堆栈溢出)。

压力测试的特点: • 检查系统在处于压力情况下时应用的性能表现 • 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上) • 这种方式一般用于测试系统的稳定性(系统的稳定性是指被测系统在系统资源饱和的状态下,依然能够很好的处理系统的业务逻辑,比如618等大促期间,淘宝流量饱和,依然能够正确处理订单和进行支付等)


配置测试

被测环境软硬件环境参数的调整,达到最优的分配原则。


并发测试

模拟用户的并发访问,测试多用户并发访问同一个应用时是否存在死锁或者其他的问题,并发测试的特点是:

• 发现系统中可能隐藏的并发访问的问题 • 关注系统可能存在的并发问题,如内存泄露,线程锁,资源争用情况 • 使用的测试工具如profiler等

























问题类别问题描述
内存问题    内存泄露/太多临时对象/超过太多设计生命周期对象
数据库问题数据库死锁/长事务
线程/进程问题

线程/进程同步失败


其他问题争用资源导致死锁 TimeOut

 


 


 


 


 


 


可靠性测试

给系统加载一定的业务压力,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。


故障演练


容灾恢复测试

去中心化

比特币: 1、资源有限 2、每个货币都在全球的不同节点中有记录

被测对象往往是一个服务,服务一般都会提供接口,那么我们直接访问这个接口可以来测试这个服务。

sdk

JMeter下载地址:https://jmeter.apache.org/download_jmeter.cgi


配置jmeter的环境变量

将JMeter的bin目录添加的path的环境变量中

检查是否配置成功:cmd --->输入jmeter -v,成功页面如下图所示:

 

 

 

打开jmeter方法:cmd --->输入jmeter

 

 

添加线程组:

 

 


作业:

1、怎么区分负载测试与压力测试

答:给被测系统上不断的施加压力,让数据在超负荷环境下运行,找到系统所能承受的最大负荷量。比如早上上班高峰期,一辆公交车能够正常工作所承载的最多人数是多少,重点是how much。压力测试是在系统资源(CPU和内存)饱和,也就是可用资源极度有限的情况下,系统能否正常工作,是否会出现一些OOM、TimeOut、OverStackExpection(堆栈溢出等)异常情况,考察的重点是在被测系统的稳定性。

2、怎么理解系统稳定性测试

答:稳定性测试也可以称作可靠性测试,是指给被测系统内施加一定的压力,让其持续运行一段时间,看能否正常工作稳定运行。

3、如果做性能测试过程中,开发要求增加服务器,此时你会? 答:首先说明性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的,否则测试出来的结果是不具备参考性的,若要增加服务器,还需要其他相关技术人员的配合,这样才能尽可能模拟真实情况。

4、做性能测试需要准备哪些工作,为什么?

答:性能测试是一个庞大的工程,需要在开始前做好相关准备工作。

①测试需求分析,确定测试目标。

②性能测试计划

1、具体测试场景执行的负责人,和执行的开始结束时间

2、前置工作内容:确定测试环境,准备数据(参考历史相关数据,人为设置生产环境的真实数据)、设计测试场景

3、具体使用到的测试技术

②编写测试脚本

执行验证测试场景,与相关人员分析可能会出现的问题

③收集数据

④测试分析,编写测试报告

根据收集到的数据捷星结果分析,判断与最初预想的性能测试目标是否一致,若一致就可以出给出性能测试报告。否则需要反馈结果给开发,优化后再次进行性能测试。

5、性能测试中测试环境和生产环境的配置必须一样嘛?为什么?

答:性能测试的过程中,测试环境的资源配置与生产环境的资源必须是一致的,否则测试出来的结果是不具备参考性的,例如骑自行车时,一个人单独骑行的平均速度和后座捎带一人的平均速度是不一样且相差很大。若要增加服务器,还需要其他相关技术人员的配合,这样才能尽可能模拟真实情况。



推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • DSP中cmd文件的命令文件组成及其作用
    本文介绍了DSP中cmd文件的命令文件的组成和作用,包括链接器配置文件的存放链接器配置信息、命令文件的组成、MEMORY和SECTIONS两个伪指令的使用、CMD分配ROM和RAM空间的目的以及MEMORY指定芯片的ROM和RAM大小和划分区间的方法。同时强调了根据不同芯片进行修改的必要性,以适应不同芯片的存储用户程序的需求。 ... [详细]
author-avatar
白变小樱啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有