精华内容
下载资源
问答
  • 稳定性测试

    千次阅读 2018-08-28 17:04:00
    于是我搜集网络资源,罗列一些稳定性测试,只为分享。 1 关于软件稳定性测试的思路 如何测试软件的稳定性其实是很难的,按照常规思路,只有长期的用户场景测试才能一定程度上保证软件的稳定性是可靠的,但并不能百...

    最近工作过程中没少开会,产品总监与研发总监就产品可用性和稳定性开始了一轮大战。

    于是我搜集网络资源,罗列一些稳定性测试,只为分享。

    1       关于软件稳定性测试的思路

    如何测试软件的稳定性其实是很难的,按照常规思路,只有长期的用户场景测试才能一定程度上保证软件的稳定性是可靠的,但并不能百分之百确定软件就是稳定的。软件测试本身就是由局限和尽头的,无穷的测试只能带来高成本的投入和无限期的计划延长。

     

    其实,可以从反面角度来看待软件的稳定性,我们从一个简单的数学定理入手:

     

    原命题成立,则逆否命题也成立。

     

    原命题:软件没有明显缺陷,所以是足够稳定的

    逆否命题:软件并不是很稳定,所以有明显的缺陷

     

    假设原命题是正确的,那么你否命题应该也是正确的。

     

    我们从原命题出发,很难说服团队去相信软件是足够稳定的,因为稳定的软件是没有明显缺陷的,没有数据的支撑和客观的事实,简单的例子就是,一我们不可能发现软件中所有的缺陷;二我们不可能花2~3个月不定地运行软件然后生成报告说经过长时间的实验软件十分稳定,时间不允许,就算时间允许我们也不敢保证3个月后程序是否还继续稳定如初。

     

    从逆否命题出发会简单许多,我们可以短时间内投入足够的精力去想办法证明软件很不稳定,比如让软件在高负荷下持续运行,给不同的压力和并发请求,进行破坏操作等等,如果软件没有出现明显的缺陷那么说明原命题也是成立的,从这个角度思考就可以从容地解决软件稳定性验证的问题。

     

     

    2       app测试--稳定性测试

    稳定性测试的概念有2种,

    一, 稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试。包含:

      1 交互性测试,被打扰的情况,如来电,短信,低电量等。这些其实在上章的功能测试中有提到。

      2 异常性测试,断网,断电,服务器异常等情况

    二,稳定性测试指的是性能测试,压力测试

      1 基准性能测试,通过压服务器端口及客户端在不同网络环境下响应速度

      2 大数据测试,在特定环境下,客户端一次性更新大量数据及人员列表

    另有其它文章,提到性能测试,为评估APP的时间和空间特性(真是高深啊,时间和空间,再来个4维,5维?),包括:

      1 极限测试:在各种边界压力情况下,如电池,存储,网速等,验证app是否能正确响应

      --内存满时安装app

      --运行app手机断电

      --运行app时断掉网络

      这几点倒是与第一条的内容重复

      2 响应能力测试:测试app中的各类操作是否满足用户响应时间要求

      --app安装 ,卸载的响应时间

      --app各类功能性操作的影响时间

      3 压力测试:反复、长期操作下,系统资源是否占用异常

      --app反复进行安装卸载,查看系统资源是否正常(弄个几次就行吧,正常人,谁反复安装卸载啊)

      --其它功能反复进行操作,查看系统资源是否正常(这倒是应该的)

      4 性能评估:评估典型用户应用场景下,系统资源的使用情况

      这里要定义,什么是典型用户应用场景

      5 benchmark测试(基线测试),应该不是基准性能测试:与竞争产品的benchmarking,产品演变对比测试等(没有多大意义)。

    简要步骤:adb devices---了解包名--adb shell monkey -p 包名 -v 运行次数(多个参数的组合形成不同的用例以求最大的覆盖)--当崩溃或无响应时分析monkey日志

    常规monkey命令(可直接在项目里使用):

    adb shell monkey -p com.jiochat.jiochatapp --throttle 100 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 1000000>d:\b.log

    重现bug:monkey日志搜索关键词ANR exception,将之前的事件重新操作,尤其是seed值要一模一样,如monkey -p 包名 -v seed 0 500

    日志分析:查看是否有crash等关键字,找上下文,进行简单分析将你所能定位的错误信息发给开发。

    该工具用于进行压力测试。 开发人员结合monkey 打印的日志 和系统打印的日志,修改测试中出现的问题。Monkey 是SDK中附带的一个工具,所有的事件都是随机产生的,不带任何人的主观性。

     

     

    3       软件稳定性测试

    1 稳定性测试就测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。

    2 测试场景:模拟平常的压力,模拟实际中日常的用户数进行操作。数据库要存有一定的数据。

    3 稳定性测试是概率性的测试,就是说即使稳定性测试通过,也不能保证系统实际运行的时候不出问题。所以要尽可能的提高测试的可靠性。可以通过多次测试,延长测试时间,增大测试压力来提高测试的可靠性。

    4 稳定性测试的测试时间和压力存在一定的关系。在测试时间不能保证的情况下,可以通过增强压力在一定程度上来挽救。

    观察系统的各种监控指标曲线,预测系统的发展状况。响应时间是否有增长,可用内存是否在减少,CPU利用率是否在上升等等都可以说明系统是否存在问题

     

     

    4       系统稳定性测试之基础知识

    一、定义     

    稳定性测试是在保证基本功能完整正确的前提下,软件或系统在一定时间或压力下,检验功能稳定运行的情况及性能优劣趋势,以减少系统或软件崩溃的发生。

     

    二、关注点

    稳定性测试直接的关注点,就是软件或者系统功能特别是用户常用功能的稳定性;其次关注的是性能指标的变化;在测试过程中,我们需要特别考虑多线程进程及不同测试环境问题。

     

    三、工作的内容

     

     

     

     

    5       软件测试---软件性能测试和可靠性测试

    1.软件性能测试的基本概念

     

    软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是软件在完成该功能时展示出来的及时性。

    (1)软件性能的指标

    1)响应时间:是指系统对请求作出响应的时间,并且这个时间被人们的接收程度是随着系统的不同而不同的(一个游戏相应3秒无法忍受,一个编译程序编译3分钟也是可以接受的)

    2)系统相应时间和应用延迟时间:前面的响应时间主要是指用户感受到的响应时间,其中还可以具体分为系统响应时间和呈现时间,性能测试比较关注系统响应时间

    而系统响应时间又可以具体分为网络传输时间和应用延迟时间,性能测试比较关注应用延迟时间

    3)吞吐量:吞吐量是指系统在单位时间内处理请求的数量,但是并不是访问人数越多吞吐量越高,因为随着访问人数的增多系统的可分配的资源会减少造成吞吐量下降等

    4)并发用户数:是指系统可以同时承载的正常使用系统功能的用户数,与1秒钟几十万吞吐量相比上千用户的并发量是一个更直观但也更笼统的性能指标

    5)资源利用率:反映在一段时间内资源平均被占用的情况

     

    (2)软件性能的角度

    用户视角:对于用户而言,性能就是响应时间,对于大量的数据,如果一边返回数据一边呈现对于用户而言响应时间也是很快的

    管理员视角:管理员可以通过使用软件提供的管理功能等手段来对系统性能进行优化,但是一般不涉及到源代码的修改

    开发人员视角:开发人员的角度和管理员的角度基本是一致的,但是开发人员更需要深入的关注软件的性能

     

    (3)性能测试的目标

    发现缺陷

    性能调优

    能力检验与规划

     

    (4)性能测试的分类

    性能测试

    并发测试

    压力测试

    可靠性测试

    负载测试

    配置测试

    失效恢复测试

    性能测试类型包括负载测试,强度测试,容量测试等。

    • 负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
    • 压力测试(Stress Testing):强度测试也就是压力测试,压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
    • 容量测试(Volume Testing):确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。

    性能测试中包含以下测试类型:

    • 基准测试 - 比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
    • 争用测试:- 核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。
    • 性能配置 - 核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
    • 负载测试- 核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。
    • 强度测试- 核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。
    • 容量测试- 核实测试用户同时使用软件程序的最大数量。
    • 性能评价通常是和用户代表一起协作并且以多级方法执行的。

    性能分析的第一级涉及单一主角/用例实例的结果评价和多个测试执行的结果比较。例如,在测试对象上没有其他活动的情况下,记录单一主角执行单一用例的性能行为,并将结果与相同主角/用例的其他几个测试执行进行比较。第一级分析有助于确定可以表明系统资源中存在争用的趋势,该趋势将影响从其他性能测试结果所得出的结论的有效性。

    分析的第二级检查特定主角/用例执行的摘要统计信息和实际数据值,以及测试对象的性能行为。摘要统计信息包括响应时间的标准偏差和百分位分布,这些信息显示了系统响应的变动情况,正如每个主角所见到的一样。

    分析的第三级有助于理解性能问题的起因和加权值。该详细分析采用低级数据并且使用统计方法,帮助测试员从数据中得出正确的结论。详细分析为决策提供客观和定量的标准,但是它耗时较长,并且要求对统计学有基本的理解。

    当性能行为差异确实存在,或是由于某些与测试数据收集相关的随机事件引起时,详细分析使用统计加权值的概念来帮助理解。即认为在基本级上,任何事件都具有随机性。统计测试确定是否存在无法用随机事件解释的系统差异。

     

    2.软件性能测试的执行

     

    与功能测试相比,性能测试更复杂,执行难度更大,对测试工具的依赖也更强,更需要过程模型的指导(如:PTGM性能测试通用模型)

    PTGM模型主要包括6个步骤:

    (1)测试前期准备,通常要求软件已经通过功能测试并修正了缺陷

    (2)引入测试工具

    (3)指定测试计划,需要明确性能测试的目标

    (4)测试设计和开发,准备好软件运行的软硬件环境,用户并发使用软件的测试场景,每个用户具体如何使用该软件

    (5)测试执行和管理

    (6)测试结果分析

     

    SEI负载测试计划过程:

    测试负载主要考虑一下六个方面

    (1)目标,指的是商业目标而不是技术目标,明确软件达到什么样的负载能力才能满足项目的商业目标

    (2)用户,是指可能产生负载或使用资源的人和软件过程

    (3)用例,是指用户对软件的不同使用方式

    (4)使用环境,软件在实际交付的运行环境中

    (5)测试环境,在测试中的环境

    (6)使用场景

     

    LoadRunner的性能测试过程:

    这是一个针对LoadRunner工具进行设计的测试过程,总体上是满足PTGM的

    (1)指定测试计划

    (2)设计测试用例

    (3)设计测试脚本(将测试用例转换成可以执行的测试脚本)

    (4)创建测试环境(测试脚本运行的测试环境)

    (5)运行测试脚本

    (6)分析测试结果

     

    3.性能分析

     

    (1)性能下降曲线的分析

    主要包括三个区间:性能平坦区,性能轻微下降区,性能急剧下降区

    (2)快速性能瓶颈识别:优先考虑吞吐量,优先考虑简单的测试用例,优先考虑基础系统的性能

    (3)性能计数器的分析:内存,处理器,I/O磁盘,进程等分析

     

    4.性能测试的自动化

     

    包括创建进程或者线程来模拟用户产生压力

    对性能进行监控

    对结果进行分析

    依赖一些性能测试工具

     

    5.软件可靠性的概念

     

    (1)错误,缺陷,故障和失效

    错误:指的是软件在生命周期中各个阶段的状态和行为与人们的期待不一致的偏差,不单单是软件系统本身,中间产品的偏差也算是软件错误

    缺陷:指的是软件中一切不好的方面,比错误的范围更广,如,一个不易理解的软件不是错误的,但是可以归为缺陷

    故障:是指软件代码中的错误

    失效:是指由故障引起的在软件运行期间的错误

     

    (2)软件可靠性的定义

    在规定的条件下,在规定的时间内,软件不引起系统失效的概率

    在规定的时间周期内,在所述条件下程序执行所要求的功能的能力

     

    6.软件可靠性测试的执行

     

    软件可靠性测试的目的是收集软件测试时揭示的软件故障的情况,并对其进行整理

    主要包括5个步骤:

    (1)确定可靠性目标

    (2)定义软件运行剖面

    (3)设计测试用例

    (4)实行可靠性测试

    (5)分析测试结果

     

    7.软件可靠性分析

     

    (1)失效模式影响分析

    (2)严酷度分析

    (3)故障树分析

    (4)事件树分析

    (5)潜在路线分析

     

    转载于:https://www.cnblogs.com/jianfeijiang/articles/9549465.html

    展开全文
  • 稳定性测试是通过运行状态和资源指标的2个方面来分析及评估系统的稳定性,请求记录项响应的时间平均值、最小值、最大值、标准偏差、异常(百分比)、吞吐量、接收、发送、平均字节数,服务器资源指标CPU、Memory,在...
  • corecycler:用于AMD Ryzen处理器的PBO和Curve Optimizer稳定性测试稳定性测试脚本
  • App稳定性测试 稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。 指标:  异常的次数  异常的频率 App的稳定性测试如何实施? 首选Monkey Monkey是向系统发送随机的用户...

    App稳定性测试

    稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。

    指标:
      异常的次数
      异常的频率

    App的稳定性测试如何实施?

    首选Monkey

    Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。

    Monkey运行原因

    1、Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;

    2、Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
    3、Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。

    4、命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试

    Monkey原理图:

    在这里插入图片描述

    一、所需软件:

    Python3.7
    Pycharm社区版
    SDK 下载网址:http://www.androiddevtools.cn/
    雷神模拟器
    58同城apk

    二、SDK环境搭建

    1、下载 android-sdk,这个是做 android 测试和开发的必备环境,如果不

    会下载的话,在 QQ 群:902061117 群文件下载

    1、解压后,里面有个 SDK manager.exe 双击打开
    在这里插入图片描述
    3.勾选你要现在的 API 版本和对应的 android 版本,后面模拟器会用到,然后坐等下载
    在这里插入图片描述
    在系统变量新建:ANDROID_HOME,对应变量值:
    E:\android-sdk-windows(sdk 安装路径)在这里插入图片描述
    2.path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里
    在这里插入图片描述
    path下添加如下两个路径:

    E:\android-sdk-windows\tools 和 E:\android-sdk-windows\platform-tools在这里插入图片描述
    adb环境

    1.因为 adb 是在 D:\androidsdk\android-sdk-windows\platform-tools

    这个目录下的,所以上面添加了环境变量后,可以直接在 cmd 里面运行了。

    2.在 cmd 输入 adb 可以查看对应版本号
    在这里插入图片描述
    三、连接雷神模拟器—adb connect 127.0.0.1:5555

    首先要打开USB调式选项(默认是没有开启调式模式的)

    开启调式模式操作步骤:依次打开设置–关于-连击5次版本号,再返到我设置主页就可以看到开发者选项
    在这里插入图片描述
    雷电模拟器:adb connect 127.0.0.1:5555

    使用指令:adb devices
    在这里插入图片描述
    连接信息解释
    手机设备:显示设备的序列号,即b2355f8a

    模拟器:显示ip地址和端口,即127.0.0.1:62001

    device:已识别的设备,连接成功

    unauthorized:没有授权,需要手机上授权后才能连接

    unkown:未识别的设备

    offline:离线设备

    主流安卓模拟器连接方式:
    夜神模拟器:adb connect 127.0.0.1:62001
    逍遥安卓模拟器:adb connect 127.0.0.1:21503
    天天模拟器:adb connect 127.0.0.1:6555
    海马玩模拟器:adb connect 127.0.0.1:53001
    网易MUMU模拟器:adb connect 127.0.0.1:7555 MacOS:adb connect 127.0.0.1:5555
    genymotion模拟器:adb connect 127.0.0.1:5555
    谷歌原生模拟器:adb connect <设备的IP地址>:5555

    Monkey

    Monkey命令-事件数
    Monkey支持的所有命令

    adb shell monkey
    在这里插入图片描述

    必选的命令

    COUNT:事件数
    通过事件数量来测试稳定性
    adb shell monkey 次数 即,adb shell monkey 50在这里插入图片描述
    注:可能小伙伴发现这速度也忒快了,我看都没看清,这人的速度也没这么快,不合理。哈,那接着,控制每一次操作的间隔时间

    Monkey命令-事件间隔
    –throttle 在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms(毫秒)1000毫秒=1秒

    例1:发送10个事件,持续执行时间1分钟

    adb shell monkey --throttle 6000 10,即10个事件,做完一个事件就等待6秒后再执行
    在这里插入图片描述
    备注:扯了半天,小伙伴想知道我要去检测公司的app倒 底要怎么整

    Monkey命令-指定包

    p 此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity

    -p -p 如果用此参数指定了多个包,Monkey将只允许系统启动这些包里的Activity
    例3:对58同城进行稳定性测试,执行100次事件
    adb shell monkey -p com.wuba 100
    在这里插入图片描述

    获取包名

    adb shell pm list packages
    在这里插入图片描述
    知识点:

    有可伙伴可能会问,我压根不知道我学习的app的名包叫啥那怎么找呢?
    aapt dump badging D:\test\xxx.apk(APK的全名),如手机淘宝.apk
    在这里插入图片描述
    Monkey命令-日志设置
    -v Level 0 除启动提示、测试完成和最终结果之外,提供较少信息

    -v-v Level 1 提供较为详细的测试信息,如逐个发送到Activity的事件

    -v-v-v Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

    例4:对58同城进行稳定性测试,执行100次事件,分别查看不同日志级别记录的信息情况

    adb shell monkey -p com.wuba -v 100
    adb shell monkey -p com.wuba -v-v 100
    adb shell monkey -p com.wuba -v -v -v 100

    日志导出到本地

    adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt
    在这里插入图片描述
    Monkey命令-seed值
    在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现呢?

    -s 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

    使用场景:

    复现bug,回归测试(验证bug)
    adb shell monkey -s 1593077384911 -p com.wuba -v-v-v 100 >d:\wuba4.txt
    adb shell monkey -s 100 -p com.wuba -v-v-v 50

    在Monkey运行过程中,我们可以通过结束进程的方式来终止Monkey的执行,当然在运行过程中遇到异常、奔溃等情况Monkey也会停止。为了保证执行的事件数执行完整,我们可以通过调试选项的设置来防止在运行过程中Monkey命令的提前结束。

    –ignore-crashes 忽略在应用程序出现crash时导致的monkey停止

    –ignore-timeouts 忽略在应用程序出现ANR问题时导致monkey停止

    –ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止

    例5:对58同城进行稳定性测试,执行50次事件,忽略过程中遇到的异常,直到50次事件完成

    adb shell monkey -p com.wuba --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50

    部份参数:

    –pct-touch:触摸事件 --pct-trackball :轨迹事件

    –pct-motion:动作事件(手势) --pct-nav :基本导航事件

    –pct-appswitch:启动activity事件 -pct-majornav:主要导航事件

    –pct-rotation:屏幕旋转事件 --pct-syskeys:“系统”按键事件

    总结:

    1、Monkey是对安卓apk进行随机事件的操作,通过报告来查看apk是否稳定

    2、只适用安卓平台

    3、根据公司不同产品的特性可设置不同概率来针对性测试或回归(如抖音他的滑动频率高)

    如果对软件测试、接口测试、自动化测试、性能测试、持结集成、面试经验交流。感兴趣可以902061117,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。

    展开全文
  • Android稳定性测试APK

    2017-08-15 11:57:28
    Android稳定性测试APK,可以进行稳定性测试和平板耗电测试。
  • 服务端稳定性测试

    千次阅读 2019-05-12 20:48:05
    二、稳定性测试方法 方法一:线下稳定性测试通常的做法 关注指标: 测试注意事项 方法二:线上监控/线上巡检 三、故障模拟测试在提升系统稳定性中的实际应用 四、客户端稳定性测试 一、什么是稳定性 稳定性...

    目录

    一、什么是稳定性

    二、稳定性测试方法

    方法一:线下稳定性测试通常的做法

    关注指标:

    测试注意事项

    方法二:线上监控/线上巡检

    三、故障模拟测试在提升系统稳定性中的实际应用

    四、客户端稳定性测试


    一、什么是稳定性

    稳定性定义:系统长期稳定运行能力,需要时间累积才能度量

    潜在的问题:某些系统问题,只有在一天、一星期甚至更长的时间才会暴露的问题。比如:内存泄漏问题

    二、稳定性测试方法

    稳定性测试整体思路:一定负载下,持续运行长时间,验证系统是否可以正常提供服务。

    稳定性测试的边界:稳定性测试本质上仍然属于概率测试。即即使稳定性测试通过了,也不能保证系统100%没有稳定性问题了。实际项目中,要尽可能的提高测试的可靠性,可以通过多次测试,延迟测试时间、加大流量/并发等,来尽可能多暴露问题,来提高测试的可靠性。

    影响稳定性测试的考虑因素:

    • 时间:是否需要不间断连续运行?长时间运行是否会有数据累积或者资源泄露?如测试稳定性,推荐测试时间 8小时以上

    • 大流量:哪些模块、数据和流量有关?极限流量下系统还能正常吗?

    • 大并发:正常逻辑业务的大并发以及操作冲突任务的并发下是否都能正常?

    • 环境:系统运行的环境如何?负载高、网络延迟、抖动等是否会影响系统正常工作?

    • 使用方式:用户真正的配置及使用模式和测试是否类似?

    • 极端情况:宕机、服务被kill等系统是否高可用?

    方法一:线下稳定性测试通常的做法

      长时间对系统施压,观察系统的各种性能指标,以及服务器的指标。例如,观察系统的各种监控指标曲线,预测系统的发展状况。响应时间是否有增长,可用内存是否在减少,CPU利用率是否在上升等等都可以说明系统是否存在问题

    1)模拟线上长时间运行的情况:模拟平常的压力,模拟实际中日常的用户数进行操作

    2)模拟的具体工具:可以使用通常的性能测试工具

    3)测试的时间:每次有影响稳定性方面的修改时,上线前进行,并将稳定性测试作为一项常规测试。比如:为了管理稳定性测试的整个生命周期,上线前回归自动触发稳定性测试脚本,平台展示和通知稳定性测试结果

    4)故障演练

    目标:模拟强依赖,弱依赖服务异常情况下,本系统可正常提供服务的能力

    模拟异常情况:

    • 模拟下游超时,延时情况下不被下游依赖服务拖垮
    • 强依赖的服务异常/超时时,其他非依赖的核心服务仍然正常
    • 系统实现合理性。比如,sso数据是否需要实时获取,可以模拟SSO挂掉了,公司wiki业务还正常,但系统完全不可用了
    • 中间件的异常(消息服务、数据库服务、缓存服务)
    • 模拟集群中一台主机突然出现CPU飙升、物理内存不足、网络不通等问题,是否还可以稳定地对外提供服务

    关注指标:

    关注系统指标:

    如果是CPU密集型,重点关注CPU占用率,e.g.报价系统

    如果是内存密集型,重点关注内存占用率,e.g.搜索引擎Elastic Search

    如果是网络IO密集型,关注网络IO情况,e.g.消息队列相关系统,是否存在消息堆积等

    测试注意事项

    ps: 稳定性测试、性能测试均需要注意

    1)内部数据污染

    该服务对数据库的依赖、缓存依赖, 是否只读, 会不会对线上数据造成污染

    如涉及写操作,请提前联系DBA准备数据源

    2)外部数据污染

    该服务对外部接口/服务有依赖,是否只读, 会不会对线上数据造成污染

    3)业务方影响

    外部服务(业务方)对本服务的依赖,压测过程中是否影响业务方,是否周知到业务方

    4)降级方案&监控报警

    当压力过大时,降级方案或措施是什么,是否有监控报警 

    5)压测基本信息

    明确机器、具体接口、并发数、测试时间段(必须在业务流量低峰期)、预期目标、关注的指标

    方法二:线上监控/线上巡检

    监控/巡检属于后置行为了,即保证如果问题发生,可以及时发现/暴露出来。

    三、故障模拟测试在提升系统稳定性中的实际应用

    目标:通过故障模拟测试发现很多影响系统稳定性的问题

    分类

    具体问题

    依赖服务

    1.事务中包含外部调用

    2.弱依赖服务故障影响交易核心链路,不符合预期(代码缺陷)

    3.超时问题:只设置读超时未设置连接超时、上下游超时时间设置不合理、超时重试次数不合理

    4.熔断参数设置不合理,未按照预期熔断

    5.限流后未正常触发报警

    基础组件(消息队列、缓存等)

    1.缓存降级方案失效,未按预期降级到本地缓存(代码缺陷)

    2.消费者未对错误、过期、重复的MQ进行处理

    3.Leaf、MQ等存在单点风险,没有容灾处理

    4.缓存恢复后放量没有预热,一次性放量导致响应超时

    数据库

    1.全部强制读主库(允许延迟的场景需要优先读从库,减轻主库压力)

    2.主从延迟敏感的场景未强制读主库(交易核心链路中的回调场景)

    核心全链路系统验证

    1.系统未对下游的回调请求进行限流,下游故障恢复后,大量请求涌入,将系统打挂了(故障恢复后,服务无法自恢复

    四、客户端稳定性测试

    通过Monkey测试App稳定性:它通过发送一系列伪随机的用户事件流进行压力测试

    例如,将IOS云测上的稳定性测试接入jenkins,可以持续地进行IOS稳定性测试,便于更好地发现问题

    展开全文
  • 显卡稳定性测试

    2014-08-18 03:26:30
    显卡稳定性测试
  • App稳定性测试

    2020-08-15 19:32:42
    一、什么是稳定性测试 1:稳定性测试概念 稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。 稳定性测试其实也是性能测试范畴中的一种方式。 2:稳定性测试指标 异常的次数 ...

    一、什么是稳定性测试

    1:稳定性测试概念

    稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。

    稳定性测试其实也是性能测试范畴中的一种方式。

    2:稳定性测试指标

    异常的次数
      异常的频率

    3:稳定性测试工具

    1:首选Monkey
       Monkey是向系统发送随机的用户事件流(如按键输入、触摸屏输入和手势输入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确保App的稳定性。

    通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常
      2:MonkeyRunner

    monkeyRunner 对monkey 命令进行封装后的api

       3:Monkey 局限性
    

    1)发送的事件无法指定,是随机发送的

    2)测试的应用只能是app

              3)Monkey虽然可以通过指令来发送事件,但是没有支持条件判断,也不支持读取待测界面的信息来执行验证操作
    

    4:Monkey原理

    Monkey 程序是由 Android 系统自带,使用 Java 语言写成,其本身是安卓系统下的一个monkey.jar文件。在Android文件系统中的存放路径是: /system/framework/monkey.jar;
    Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
    Monkey 启动方式:在 cmd 命令提示符里面输入命令行来启动 monkey 测试。
    命令行:adb shell monkey——monkey.shell——monkey.jar——安卓进程——设备上执行测试

    二、如何用Monkey进行稳定性测试

    1:Monkey环境搭建

    1)Android SDK环境:下载网址:http://www.androiddevtools.cn/

    2)设备(真机/模拟器)
        夜神、mumu等都可以

    2:Monkey支持参数

    1)连接设备

    连接设备
      设备:开启USB调试选项
      通过在命令行输入adb devices来进行连接

    2)事件数

    Monkey支持的所有命令:adb shell monkey查看
      必选的命令:COUNT:事件数  通过事件数量来测试稳定性

    3)事件间隔时间设置

    –throttle 在事件之间插入固定延迟。通过这个选项可以控制Monkey发送事件的频率。时间单位是ms
    例1:发送10个事件,持续执行时间1分钟
    adb shell monkey --throttle 6000 10
    例2:模拟用户操作,持续执行时间1分钟
    adb shell monkey --throttle 500 120
    4)指定执行apk包

    -p 此参数指定了一个包,Monkey将只允许系统启动这些包里的Activity
    -p -p 如果用此参数指定了几个包,Monkey将只允许系统启动这些包里的Activity

    例3:对58同城进行稳定性测试,执行100次事件
    adb shell monkey -p com.wuba 100

    获取包名
    adb shell pm list packages
    5)日志

    -v Level 0 除启动提示、测试完成和最终结果之外,提供较少信息
    -v-v Level 1 提供较为详细的测试信息,如逐个发送到Activity的事件
    -v-v-v Level 2 提供更加详细的设置信息,如测试中被选中的或未被选中的Activity。

    例4:对58同城进行稳定性测试,执行100次事件,分别查看不同日志级别记录的信息情况
    adb shell monkey -p com.wuba -v 100
    adb shell monkey -p com.wuba -v-v 100
    adb shell monkey -p com.wuba -v -v -v 100

    日志导出到本地
    adb shell monkey -p com.wuba -v-v-v 100 >d:\wuba.txt

    6)seed值

    在Monkey运行过程中,肯定会发现异常、奔溃、无响应等问题,对于此类问题如何进行复现呢?
    -s 伪随机数生成器的seed值。如果用相同的seed值再次运行Monkey,它将生成相同的事件序列。

    使用场景:
    复现bug,回归测试(验证bug)
    adb shell monkey -s 1593077384911 -p com.wuba -v-v-v 100 >d:\wuba4.txt
    adb shell monkey -s 100 -p com.wuba -v-v-v 50
    7)调试选项
    在Monkey运行过程中,我们可以通过结束进程的方式来终止Monkey的执行,当然在运行过程中遇到异常、奔溃等情况Monkey也会停止。为了保证执行的事件数执行完整,我们可以通过调试选项的设置来防止在运行过程中Monkey命令的提前结束。
    –ignore-crashes 忽略在应用程序出现crash时导致的monkey停止
    –ignore-timeouts 忽略在应用程序出现ANR问题时导致monkey停止
    –ignore-security-exceptions 忽略应用程序发生许可错误时导致monkey停止

    例5:对58同城进行稳定性测试,执行50次事件,忽略过程中遇到的异常,直到50次事件完成
    adb shell monkey -p com.wuba --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v-v-v 50

    三、Monkey事件类型

    1:操作事件简介

    monkey所操作的随机事件流中包含11大事件,分别是触摸事件、手势事件、二指缩放事件、轨迹球事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动activity事件、键盘事件、其他类型事件

    2:操作事件简要说明

    触摸事件:指在屏幕某处按下并抬起的操作,可通过–pct-touch参数来配置其事件百分比。
    手势事件:指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作;可通过–pct-motion参数来配置其事件百分比
    二指缩放事件:二指缩放事件是指在屏幕上的两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作;可通过–pct-pinchzoom参数来配置其事件百分比。
    轨迹球事件:轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击,即一系列的曲线滑动操作;可通过–pct-trackball参数来配置其事件百分比。
    屏幕旋转事件:模拟的Android手机的横屏和竖屏切换;可通过–pct-rotation参数来配置其事件百分比。
    基本导航事件:现在手机上很少有上、下、左、右按键,这种事件一般用得比较少;可通过–pct-nav参数来配置其事件百分比。 – 用的比较少
    主要导航事件:主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键,可通过–pct-majornav参数来配置其事件百分比。
    系统按键事件:系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。
    启动activity事件:启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。可通过–pct-appswitch参数来配置其事件百分比。
    键盘事件:键盘事件主要是一些与键盘相关的操作。比如点击输入框键盘弹起、点击输入框以外区域键盘收回等。可通过–pct-flip参数来配置其事件百分比。
    其他类型事件:其他类型事件包括了除前面提到的10种事件外其他所有的事件,如按键、其他不常用的设备上的按钮等。可通过–pct-anyevent参数来配置其事件百分比。 – 用的比较少
    指定执行触摸事件–pct-touch 100次 adb shell monkey -v -v -v -s 6789 --throttle 300 --ignore-crashes --ignore-timeouts --pct-touch 100 -p com.android.calculator2 100 > 日期.log

    展开全文
  • 稳定性测试调研

    2020-09-09 14:56:10
    1.网易易测:稳定性测试实践篇 2.极客时间-服务端稳定性测试 3.关于软件稳定性测试的思考与实践 1.网易易测:稳定性测试实践篇 稳定性测试的设计思想,主要包含以下6个方面: 时间:是否需要不间断连续运行?...
  • 软件稳定性测试的测试点

    千次阅读 2019-02-04 14:54:59
    参考:软件稳定性测试的测试点 app测试–稳定性测试
  • 从而团队提出对平台进行稳定性分析,通过给系统施加一定业务压力大情况下,使系统持续运行一段时间,以此来检测系统是否稳定运行(下统称稳定性测试或测试)。 1.2 服务说明 平台运行的服务包括系统服务和业务服务,...
  • 软件稳定性测试的测试点:...稳定性测试(亦可称可靠性测试)通过给系统加载一定的业务压力,让系统持续运行一段时间(一般为7x24小时),检测系统是否能够稳定运行 如何做好稳定性测...
  • 最近在做网口稳定性测试,使用iperf软件测试,其中一台pc灌压,另一台pc收压,测试网口收压稳定性,系统Ubuntu,亲测可用,已经整理成文档
  • 最近在做工控机集成显卡压力稳定性测试,在网上找了下资源,整理了测试文档,针对Ubuntu系统进行压力测试;通过Visual Profiler进行浮点数运算压力稳定性测试;(分配90%的内存)
  • 稳定性测试中可以按下“i”键关闭/开启画面上的信息显示 稳定性测试中可以按下空格键开启/关闭渲染模式 稳定性测试模式下可为多个GPU显示各自的温度曲线 稳定性测试模式下可F9键截图 性能测试模式下可将测试得分发送...
  • 客户端稳定性测试

    2017-11-18 16:37:00
    客户端稳定性测试 稳定性测试是在保证功能完整正确的前提下,必不可少的一项测试内容,通过对软件稳定性的测试可以观察在一个运行周期内、一定的压力条件下,软件的出错机率、性能劣化趋势等。进而大大减少软件上线...
  • 压力测试和服务器稳定性测试
  • 稳定性测试浅谈

    2019-10-06 21:42:35
    什么是稳定性测试? 简单来说,就是测试系统在不同程度的环境下稳定运行的能力。 稳定性测试可分为针对客户端和服务端的。 客户端常见的是测试程序长时间运行,或某个功能长时间不断重复的运行的稳定性。 ...
  • 电脑稳定性测试软件

    2012-09-03 15:29:59
    电脑稳定性测试软件
  • 图解测试之稳定性-了解稳定性测试

    千次阅读 2015-08-28 16:40:16
    我的观点稳定性测试是在保证基本功能完整正确的前提下,软件或系统在一定时间或压力下,检验功能稳定运行的情况及性能劣化趋势,以减少系统或软件崩溃的发生。 二、关注点 我的观点稳定性测试直接的关注点...
  • 软件稳定性测试

    万次阅读 2016-02-24 06:23:39
    稳定性测试就测试系统的长期稳定运行能力。在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。 2 测试场景:模拟平常的压力,模拟实际中日常的用户数进行操作。数据库要存有一定的...
  • Android平台车机稳定性测试--2016top100主题分享,PPT和文字版 案例简述:智能硬件是继智能手机后的一个新领域,Android车机是智能硬件中的一个新秀,相比传统车机有更丰富的应用程序和更强大的功能,但稳定性方面比...
  • Monkey 稳定性测试

    万次阅读 2018-04-16 12:23:52
    一、什么是稳定性测试?通过随机点击屏幕一段时间,看看app会不会奔溃,能不能维持正常运行二. Money是什么?Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等...
  • 稳定性测试包括哪些 阿里巴巴技术团队在程序测试中的最佳实践 测试环境是任何软件研发过程的重要方面,并提供了一个在发布之前有效测试新功能的系统。 这种系统的稳定性是影响研发效率的最大因素之一。 本文...
  • monkey之稳定性测试

    2020-07-16 12:50:32
    Monkey稳定性测试执行流程 一、专项执行 测试目的 通过长时间模拟用户随机操作事件,暴露应用内Crash,降低Crash率,提高Android客户端 稳定性 测试场景选择 游戏的典型的核心业务必须纳入测试范围,如主...
  • 1、具备性能测试TSE或稳定性测试TSE成功实践,主持过版本性能测试或稳定性测试技术交付; 2、负责版本性能、稳定性测试方案、测试用例设计; 3、负责关键性能、稳定性测试技术研究。 任职资格: 1、具备3年以上版本...
  • 基于光学法进行了镜架结构稳定性测量技术研究, 编写了光学稳定性测试软件,开展了对不同透镜和反射镜镜架结构稳定性测量。实验得到了镜架调节及调节后长时间的漂移量及漂移规律, 比较了不同种类和不同调节量情况下...
  • App稳定性测试稳定性测试就是指软件长时间的持续运行,系统版本是否稳定,是否能否持续的为用户提供服务。指标: 异常的次数 异常的频率App的稳定性测试如何实施?首选MonkeyMon...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,901
精华内容 5,960
关键字:

稳定性测试