压力测试

Android压力测试命令monkey详解

╄→гoц情女王★ 提交于 2019-11-30 05:21:49
一、Monkey 是什么? Monkey 就是SDK中附带的一个工具。 二、Monkey 测试的目的? :该工具用于进行压力测试。 然后开发人员结合monkey 打印的日志 和系统打印的日志,结局测试中出现的问题。 三、Monkey 测试的特点? Monkey 测试,所有的事件都是随机产生的,不带任何人的主观性。 四、Monkey 命令详解 1).标准的monkey 命令 [adb shell] monkey [options] <eventcount> , 例如: adb shell monkey -v 500 --------产生500次随机事件,作用在系统中所有activity(其实也不是所有的activity,而是包含 Intent.CATEGORY_LAUNCHER 或Intent.CATEGORY_MONKEY 的activity)。 上面只是一个简单的例子,实际情况中通常会有很多的options 选项 2).四大类—— 常用选项 、 事件选项 、 约束选项 、 调试选项 1:常用选项 复制代码 代码如下: --help:打印帮助信息 -v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0 。 2:事件选项 复制代码 代码如下: -s:指定产生随机事件种子值,相同的种子值产生相同的事件序列。 如: -s 200 --throttle

使用测试工具解决产品问题(译)

拈花ヽ惹草 提交于 2019-11-29 13:45:18
标准的网站监控工具能接通网页并证明他们正在响应,而他们不会向你警告一个问题。但是你能使用压力测试技术去监测你的网站,通过跑一个交互脚本能检测出问题并生成必要的邮件。它像一位安静的哨兵持续运行,从来不睡觉或者休一个假,提升了你的网站可靠性。 我们的网站包含了一个用户登录,用户认证过程偶尔被停止。我们标准的网站监控工具能接通主页并验证网页在响应,但是可能与不在我们适当放置的工具外的网页交互。当客户向我们警告一个真实的问题时我们只能了解它。这是不可接受的,我们不得不找到一个更好的办法。 我们之前使用一个压力测试工具开发并执行一系列的压力测试,允许我们运行很大数量的用户在测试网站上做很多不同的动作。但是我们需要一种方法在重复的基础上去运行一个简单的用户去做简单的脚本,24/7,在它在我们的产品系统上影响我们真实客户前警告我们一个问题。我们的压力测试工具会作为一个单一用户做这种测试,但是当一个问题被检测出来时,它缺少一种生成警告的方法。 与我们的供应商一起工作,我们发现他们提供了一个简单的解决方案:作为一个单一用户以重复的流程并有某些出错时发出警告的方式使用一个不同的应用去执行压力测试脚本。我们现在有这种适当的流程有3年了,并且它有一个极好的解决方案。这儿是我们如何操作它。 设计测试 第一步是做一些业务分析去决定什么被测试和失败看起来像什么。当与压力测试类似

解决高并发的新姿势(通过线程安全的set集合来实现,使用压力测试模拟器检验)

喜你入骨 提交于 2019-11-29 06:38:49
关于高并发时的线程安全问题 在项目开发的过程中,一次偶然的测试(当时网络环境不好),模拟出了高并发的问题。出现了数据的脏读。 虽然项目的定位在实际使用过程中,高并发的情况很少,但是在测试的环境中已经发现了这个问题,还是有必要把这个潜在的问题给解决了。 为了解决这个高并发的问题,前后选择了三种方式: 第1种是通过关键字synchronized来对代码块进行加锁;但是这种方式的加锁性能比较低下,最终也是没有采用; 第2种方式是通过redis来实现;redis的加锁性能是比synchronized的性能好了很多,但是在该微服务中,没有用到redis,考虑到如果只是为了加锁来维护一个redis,不太划算,也就放弃了;最终采用了第3种方式。 第3种方式是通过线程安全的set集合来实现。 使用线程安全的set集合具体的加锁,解锁的解读 首先在成员变成获取一个私有的线程安全的集合,获取方式可以使用以下两种方式,我在项目中才用的第一种方式获取 /** * 成员位置初始化线程安全的set集合 */ //方式1: 该方式是在1.8中出现的,比较新的获取方式 private Set<String> lock = ConcurrentHashMap.newKeySet(); //方式2: 该方式是在1.6中出现的,相比上面的一种方式比较老 private Set<String> oldStyle =

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

久未见 提交于 2019-11-29 02:53:26
前言 表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了。要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了。但是在本篇只讲述如何利用JMeter来对Web网站和数据库进行压力测试,因为测试场景的复杂性,本篇实例讲述基于csv文件的参数化测试。 JMeter提供了对不同的协议、服务器及应用的测试支持,如下: ◦Web – 各种开发语言开发出的网站,比如ASP/ASP.NET/JSP/PHP/Python/Perl等 ◦SOAP / REST Webservices ◦FTP ◦Database via JDBC(基于JDBC对数据库进行压力测试) ◦LDAP ◦Message-oriented middleware (MOM) via JMS ◦Mail - SMTP(S), POP3(S) and IMAP(S) ◦Native commands or shell scripts ◦TCP ◦Java

性能测试:压力测试、负载测试、并发测试、强度测试及容量测试之间的区别

一曲冷凌霜 提交于 2019-11-28 23:29:13
性能测试又称多用户并发性能测试。 1、压力测试:压力测试的目标是测试在一定的负载下系统长时间运行的稳定性,尤其关注大业务量情况下长时间运行系统性能的变化(例如是否反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复);压力测试是测试系统的限制和故障恢复能力,它包括两种情况: a.稳定性压力测试:在选定的压力值下,长时间持续运行。通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏、有无功能性故障等; b.破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴露出其真实的原因。通过破坏性不断加压的手段,往往能快速造成系统的崩溃或让问题明显的暴露出来; 2、负载测试的目标是测试在一定负载情况下系统性能(不关注稳定性,也就是说不关注长时间运行,只是得到不同负载下相关性能指标即可);实际中我们常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载), 观察不同负载下应用程序响应时间、所耗资源,直到超时或关键资源耗尽,这就是所说的负载测试,它是测试系统的不同负载情况下的性能指标。 3、并发测试:主要指当测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄漏、线程锁、资源争用问题,几乎所有的性能测试都会涉及并发测试。 4、强度测试:强度测试检查程序对异常情况的抵抗能力

Linux Test Project(一)

南笙酒味 提交于 2019-11-28 11:09:41
Linux Test Project(一) http://www.vimlinux.com/lipeng/2014/09/12/ltp/ 五 12 九月 2014 By peng.lee Testing Linux, one syscall at a time. LTP是从SGI开始的,后由IBM 思科 富士通 SUSE Redhat等组织开发的.该工具的目标是建立一个测试套件用来验证linux的可靠性,健壮性及稳定性.LTP测试套件包含了linux内核及相关功能的工具. 本文主要介绍关于ltp的一些基本信息. LTP项目主页: ltp Github链接: ltp LTP是一个验证ltp内核功能和稳定性的测试集.用来支持linux开发过程中,通过更多的单元测试,减少bug的引入,降低bug对用户的影响.LTP并不是用来做benchmarking测试的,而是更专注与功能,问题回归及稳定性测试.LTP同样不是一个标准测试,标准测试有 LSB . 一 基本结构 LTP测试套件是由包含一个基本动作和一个确认基本动作工作是否正常的测试用例组成.这个测试用例通常的测试结果是PASS/FAIL.一个测试程序是包含一个或多个测试用例的可执行程序.测试程序包括相应的测试参数,这些参数包括内存测试容量,临时文件位置,网络测试类型等等.Test tags 是用于匹配测试程序和一组命令行参数.Test

go test test & benchmark

一曲冷凌霜 提交于 2019-11-28 00:03:42
开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让线上的程序能够在高并发的情况下还能保持稳定。本小节将带着这一连串的问题来讲解Go语言中如何来实现单元测试和性能测试。 Go语言中自带有一个轻量级的测试框架 testing 和自带的 go test 命令来实现单元测试和性能测试, testing 框架和其他语言中的测试框架类似,你可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例,那么接下来让我们一一来看一下怎么写。 如何编写测试用例 由于 go test 命令只能在一个相应的目录下执行所有文件,所以我们接下来新建一个项目目录 gotest ,这样我们所有的代码和测试代码都在这个目录下。 接下来我们在该目录下面创建两个文件:gotest.go和gotest_test.go gotest.go:这个文件里面我们是创建了一个包,里面有一个函数实现了除法运算: package gotest import ( "errors" ) func Division(a, b float64) (float64, error) { if b == 0