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、性能测试中测试环境和生产环境的配置必须一样嘛?为什么?

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

软件测试—Day2的更多相关文章

  1. 高级软件测试技术(测试管理工具实践day2)

    今天在紧张的学习之余,我们小组选定了bugzilla,并且打算在今天晚上刚进行下载安装. 在安装bugzilla需要的软件有MySQL数据库软件,activeperl软件,bugzilla安装包,II ...

  2. 【从零开始学BPM,Day2】默认表单开发

    [课程主题]主题:5天,一起从零开始学习BPM[课程形式]1.为期5天的短任务学习2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开放免费下 ...

  3. 小公司0成本基于Pythony的单元\GUI\Web自动化\性能的几个开源软件测试工具

    以下是当前流行的几款适合小公司0成本的几个开源软件测试解决方案: 1.单元测试 a.unittest :Python自带的单元测试框架 b.pyunit:Junit的Python版本 2.使用Pyho ...

  4. NOIp2016 Day1&Day2 解题报告

    Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...

  5. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  6. IEEE829-2008软件测试文档标准介绍

    1998版中定义了一套文档用于8个已定义的软件测试阶段: 测试计划: 一个管理计划的文档 包括:   测试如何完成 (包括SUT的配置).   谁来做测试   将要测试什么   测试将持续多久 (虽然 ...

  7. day2

    三级菜单: ))))))))))] last_levels.pop() ]]]]]]]]:] information = : ch = msvcrt.getch() ][][: : password= ...

  8. java day2一个模拟双色球的代码

    package day2; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt ...

  9. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏

    1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...

随机推荐

  1. 眼见不一定为实:调用链HBase倾斜修复

    hello,大家好,我是小楼. 今天给大家分享一个关于HBase数据倾斜的排查案例,不懂调用链?不懂HBase?没关系,看完包懂~ 背景 最近HBase负责人反馈HBase存储的调用链数据偶尔出现极其 ...

  2. Apache Kafka 集群部署指南

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ Kafka基础 消息系统的作用 应该大部分小伙伴都清楚,用机油装箱举个例子. 所以消息系统就是如上图我们所说的仓库,能在中间 ...

  3. .NET性能优化-使用结构体替代类

    前言 我们知道在C#和Java明显的一个区别就是C#可以自定义值类型,也就是今天的主角struct,我们有了更加方便的class为什么微软还加入了struct呢?这其实就是今天要谈到的一个优化性能的T ...

  4. Go语言学习——函数二 defer语句

    函数 package main import "fmt" // 函数:一段代码的封装 func f1(){ fmt.Println("Hello 中国!") } ...

  5. kNN-准备数据

    在上一小节,我们大概了解了kNN算法的基本原理,现在我们要进行数据的处理 本小节所用数据集来自[机器学习实战]:Machine Learning in Action (manning.com) 下载数 ...

  6. 基于.NetCore开发博客项目 StarBlog - (5) 开始搭建Web项目

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  7. Java注解Annotaton

    1.三种基本的Annotaton @Override : 限定某个方法,是重写父类方法 , 该注解只能用于方法 @Deprecated : 用于表示某个程序元素 ( 类 , 方法等 ) 已过时 @Su ...

  8. 好客租房24-react中的事件处理(事件绑定)

    3.1事件绑定 React事件绑定语法和DOM事件语法相似 语法:on+事件名称={事件处理程序} 比如οnclick={()=>{}} //导入react     import React f ...

  9. 今天才发现ThinkPad的触摸板简直好用!傻乎乎的自己

    最近经常看到这句话,天下武功,唯快不破. 今天才发现ThinkPad的触摸板简直好用! 今天才发现,傻乎乎的自己. 前一阵鼠标不好用了,没有滚轮,一直傻瓜式操作点击浏览器的滚动条... 遇到没有滚动条 ...

  10. 编程语言与python与pycharm的下载

    目录 编程语言的发展史 编程语言的分类 python解释器 python解释器的下载与安装 环境变量 执行python程序方式 pycharm编辑器 编程语言的发展史 机器语言是最开始的编程语言,之后 ...