某文件占10个磁盘块处理读取或写入请求的时间百分比进程与性能里不一样,

大家好,我是飘渺。听多了架构优化,接口优化,数据库优化,今天我们来聊聊服务器优化。

我们开发的软件服务需要在服务器上运行,所以服务器性能代表了软件的性能上限,因此服务器性能调优是个十分重要的环节,然而大部分同学对服务器性能调优关注的较少,今天从3个部分对服务器性能调优进行介绍,分别是:服务器配置选择,服务器负载分析,服务器内核参数调优。

云原生实战系列正在热更中,赶紧进来学习吧~

服务器一般是由CPU、内存、磁盘和网卡组成,因此选择服务器配置就是选择CPU核数、内存大小、磁盘大小及类型、网络带宽。但是,服务器配置的选择是很难标准化的,也就是说很难推断出“一台需要达到1000TPS的后端服务器”的配置应该是什么样的。因为软件的最终运行性能与软件的实现方式是紧密相关的,即使是同一个后端应用程序中的两个接口,由于具体功能的差别,性能也会有所差别。

因此,服务器配置的选择应该基于具体的测试结果。一开始可以选用配置较低的服务器做调优和测试,并以该服务器的测试结果作为选择服务器的依据。

以一个订单业务为例,经过测试后,一台配置为4核 CPU 、16GB内存、10Mbps带宽、50GB机械磁盘的服务器的测试结果为:支持50并发量和300TPS吞吐量(增大并发量后会出现超时报错)。而在压力测试过程中, CPU 的使用率接近75%,内存使用率在 50%以下,带宽使用率在50%以下,除去日志以外无磁盘操作。

因此可以认为,一台配置为4核 CPU ( CPU 使用率需要在75%以下)、8GB内存(内存使用率可以接近100%)、 5Mbps 带宽(带宽使用率可以接近100%)的服务器,可以满足订单接口支持50并发量、300TPS吞吐量的压力。

如果需要达到200并发数、2400TPS吞吐量的目标的话,则需要8台配置为4核 CPU 、8GB内存、5Mbps带宽的服务器,或者1台配置为32核 CPU 、64GB内存、40Mbps带宽的服务器。当然,最终的服务器配置还是需要通过测试来验证。

注意:在以上订单接口的例子中,后端服务器和数据库等服务器需要一起调试,避免后端服务器性能过剩,而数据库等服务器性能不足的情况发生。另外,以上选择服务器配置的方法不一定适用于所有场景,请斟酌参考。

在性能调优时,需要先对服务器负载进行分析,通常而言,我们主要分析CPU使用率、内存使用率、磁盘I/O,服务器负载和带宽使用情况。

CPU使用率反应的是CPU的忙碌情况。当CPU达到100%时,部分进程会进入等待状态,CPU暂时不会对其进行处理。在实际情况下,为了应对一下突发性的请求压力,服务器CPU使用率一般需要在75%以下。如果一台服务器的CPU使用率多次高于75%,这时候就考虑增加新的服务器。

监控CPU使用率我推荐大家使用htop工具,可以非常直观看到CPU使用率、内存使用率、及负载等信息。

首先我们需要安装htop,以centos为例,安装命令如下:

安装完成后我们就可以通过htop命令观察CPU负载了

输入htop命令后我们可以很直观的看到CPU负载情况,该命令的CPU使用率会以多个核作为单位进行显示。操作系统机会自动分配多个核的负载,当所有核的CPU使用率都超过75%时才能认为服务器的CPU使用率已经超过75%。

如上图所示,这是一个4核CPU服务器,在截图的时候其中3核CPU使用率都超过了75%,再观察一会发现所有CPU的使用率都在85%左右徘徊,说明CPU负载很高了,需要考虑增加新的服务器。

内存使用率反应的是内存的使用情况。内存用于存放程序的代码及数据,一般分为物理内存和虚拟内存,其中物理内存指的是服务器的内存,而虚拟内存指的是硬盘的一块空间。当物理内存使用率达到100%时将会使用虚拟内存。需要注意的是,虚拟内存的读写速度远远低于物理内存,如果程序被放在了虚拟内存执行,那么程序的执行效率会变得很低。

一般而言,服务器的物理内存应该保持在80%以下,虚拟内存使用率保持在0%。

服务器内存使用情况还是可以通过hop工具进行查看

上面显示了服务器的内存使用情况:总内存16G,使用了10G左右,内存使用率62%,可以继续使用,同时关闭了Swap虚拟内存。

在下MEM%栏中显示了单个进程的内存使用率。

磁盘I/O指的是磁盘的读写,在软件系统中,日志、文件操作、数据库操作都会造成磁盘读写压力,其中又以数据库操作为甚,在高并发情况下往往数据库会首先成为系统的瓶颈。

磁盘监控我推荐大家使用iostat工具,可以很方便查看磁盘的使用情况。

首先我们需要安装iostat,以centos为例,安装命令如下:

安装完成后我们就可以通过iostat命令磁盘使用情况了。

# 查看磁盘总体读写情况, 1代表每1秒读取一次数据
iostat -x 1

输入iostat命令后,磁盘总体读写情况如上所示。磁盘负载主要关注2个指标:%idle,%util

  • %idle:表示CPU除去等待磁盘I/O以外的空闲时间百分比,这个指标应该要保证在70%以上
  • %util:该设备用于I/O操作的时间百分比,这个指标需要保证在70%以下,当到达100%时表示已经满负载。为了降低磁盘负载,可以采用性能更高的磁盘(OSD,PCIE)或者降低磁盘的操作频率(异步写、合并写)

平均负载指的是单位时间内平均的活跃进程数,是一个表示服务器负载的指标。一般情况下需要保证平均负载的值小于当前服务器的CPU核数。

同样的,查看服务器平均负载我们也可以使用htop命令

在这里我们主要关注Load average指标,上图有3个数字,分别代表1分钟,5分钟,15分钟的平均负载。

一般情况下服务器的平均负载需要小于当前服务器的CPU核数,为了应对突发状况,服务器的平均负载应该在75%即3 以下,很显然,上图这台服务器平均负载超过了75%,需要考虑提升性能了。

网络使用情况也是监控的重要指标。当带宽不足时会大大增加请求的响应时间。为了防止突发性并发压力,应该保证服务器的带宽使用率在80%以上。这里需要注意的是,物理网卡限制了服务器所能使用的最大宽带。

查看网络使用情况我推荐使用nload工具。

使用nload查看网络

安装完成后我们直接运行nload

输入nload命令后,网络使用情况如上图所示。其中,网络使用情况分为流入网卡的数据与流出网卡的数据。流入网卡的对应下行带宽的网速,流出网卡的数据对应上行带宽的网速。如果 “当前网速” 持续接近 “最大网速” 时,代表带宽使用率已经接近100%。

光有强大的物理性能是不够的,还需要对内核参数进行调优,这样才能在高并发压力下充分体现服务器应有的性能。当然,并不是所有的服务器都需要做高并发性能调优,一般来说,只需要对要处理高并发请求的服务器进行内核参数调优即可,常见的包括:前端服务器,后端服务器,数据库服务器。

服务器常见的调优参数主要有两个:单个进程最大打开文件数 和 TCP相关设置。

单个进程最大打开文件数

修改单个文件最大打开文件数,只需要编辑/etc/security/limits.conf文件,在文件末尾加上以下四句

其中* 代表所有用户,65536代表修改的值,重启后生效。

修改TCP相关参数,可以优化TCP高并发通信,编辑/etc/sysctl.conf文件,添加以下内容

·项目启动后,我们拿到需求规格说明书,产品人员对我们进行需求的澄清,

 然后对需求规格书进行细化和分解,得到我们测试需求分析思维导图;

·测试组长根据测试需求分析结果和项目计划估算项目的工作量和人力,来编写测试计划,我们参与评审;

·根据测试需求分析要点,按照测试组长分配的模块进行测试用例编写,编写完成后进行组内测试用例的评审;

·开发完成编码,我们会拿到一个安装包,然后就搭建测试环境,搭建完成后首先进行冒烟测试,

  冒烟测试通过后进行正式测试用例的执行,我们执行一般分三轮,第一轮执行测试用例,后两轮主要进行回归测试;

·等测试执行通过后,开发修改完bug,组长编写测试报告,项目准备上线

·上线我们参与做上线后的功能验证。

每个公司,每个项目组 测试结束条件不一样,说一下我们公司的:

所有测试用例全部执行,版本稳定,缺陷遗留率达到预定质量目标

新建→确认(驳回)→解决(驳回)→验证→关闭(激活)

一个Bug(缺陷)的描述包含哪几部分?

你觉得提交bug需要包含哪些因素才算完整?

(代码错误,设计优化,设计缺陷,性能问题,测试脚本)

每个公司定义的bug 级别标准都不一样,我们公司把bug 分为 提示,一般,严重,致命四类

每个公司定义的标准不一样,我们公司一般分为 高 中 低

每个公司用的缺陷管理工具不尽相同,一般测试用例执行结果有:

测试用例的设计一般采用哪些方法?或者 换一个提问方式,黑盒测试技术设计测试方法有哪些?

一般常用的测试用例设计方法有等价类,边界值分析方法,因果图法,场景法,错误推测法

最容易发现错误的是—— 边界值

测试计划你觉得有哪几部分比较重要?

测试报告哪几部分比较重要?

你写过测试报告吗?如何写?

系统测试的测试策略有哪些?/系统测试范围?

你门公司的测试类型有哪些?

16种测试策略,性能测试,,容量测试,安全性测试,GUI测试,安装测试,配置测试,异常测试,备份测试,,,在线帮助测试,网络测试,稳定性测试在:正常情况下测试;

功能测试,界面测试,安全测试,本地化/国际化测试,数据库测试,可靠性测试,集成测试,兼容性测试,自动化测试,性能测试,回归测试

你们公司兼容性测试怎么做的?

答:兼容性测试(Compatibility Test Suite )简称CTS .是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。

Web 浏览器兼容性测试需要测试场景有:

搜狗和360 浏览器 不用再次进行测试因为用的是 IE chrome 双内核

移动端 兼容性测试需要测试的场景有:

备注:主流分辨率: 普通机型  高端机型

冒烟测试,是对软件基本的功能进行测试

目的是确认软件基本的功能正常,保证软件系统能跑的起来可以进行后续的正式测试工作

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

(引入自动化回归测试将大幅降低、维护升级等阶段的成本)。

作为测试的话,你的优势在哪里?

一名测试人员所具备的素质?其中有哪些是您认为最重要的

我觉得最为测试人员,承担的是找出软件存在的问题,确保软件产品在发布之前达到一定的质量目标的职责,因此,他首先必须有很强的责任感,对软件质量负责,对客户的质量期望负责。拥有交强责任感的测试人员,才不会出现大面积的漏测,才能坚持重复地进行回归测试,持续全面的测试。

其他的素质也很重要,例如较强的沟通能力,刨根问底,不轻易放弃的精神等。

你们公司项目的工作量,人力 怎么估算的。

我们公司 一般是按照 测试点对比 项目计划去规划的

测试点 分三个难易程度

难得测试点,根据经验我们预估是 4小时左右,中等程度测试点 为2小时,低的预估1小时。

难易程度  :业务流程复杂,测试场景难构造的

还有就是云测试你了解多少

1、SIT、UAT测试都有做过吗?怎么做的?

2、回归测试怎么回归的?涉及到用自动化回归的,也会问到自动化回归的一些问题,怎么回归?策略、下发周期等

6、假如你是测试经理,你要怎么展开测试的工作?在这个过程中有哪些需要关注的点?

7、云测平台有了解吗?云测平台和用真机测试各自的优缺点?

10、那些因素会影响产品的质量?

你们公司Linux用的哪个版本?

Linux常用命令 (先说高大上命令)

pwd 显示当前目录的绝对路径

cd ~ 切换到家目录

ls -a 显示当前目录下的所有文件和目录

修改配置文件,或者 分析日志时候常用的命令

Linux下如何搭建测试环境? 细

每个系统(项目)由于开发语言不同,服务器类型不同,服务器操作系统不同,使用数据库不同,搭建测试环境的方法不尽相同;

我在测试工作中搭建过 LAMP 模型测试环境;

根据开发人员给的《安装指导文档》启动测试环境的搭建;

搭建的顺序是 :先搭建平台包(apache,mysql,php),在搭建 业务包

首先 使用FTP 工具(xftp) 把从开发那边获取的平台包,业务包上传的linux 下指定目录里面

解压平台包,使用 rpm -ivh 命令依次安装 apache,mysql,php 安装的顺序,严格按照安装指导文档的要求来搭建

由于APACHE默认不支持PHP,需要修改配置文件才能支持,需要在配置文件 httpd.conf 下设置依赖关系

平台包是否搭建成功,我们可以重启对应的服务器来判断,比如 我想知道我的mysql 装的是否正确,那么我就启动一下mysql 只要不报错就证明安装成功(sevice mysqld start);

平台包搭建完毕后,启动搭建 业务包

赋予 业务包 755权限

LAMP 环境的搭建基本这样子

Linux 下搭建测试环境有没有遇到什么问题,如何解决的?

在安装指导里面,解压安装包之后,给安装脚本赋予权限不足,导致安装脚本执行报错;

安装指导参数说明,上下位置调换了,导致参数错误。

测试环境下,防火墙没有关闭,导致环境搭建完毕后,去访问ecshop ,访问失败;

开发人员通宵归档,上传到SVN 上的对应版本 安装指导文档版本不匹配,导致我在搭建测试环境时候,无法进行操作。

Linux 如何截取日志?

2. 去前台业务进行操作,后台生成日志

根据关键字定位, 查看上下文

如果系统运行运行着 突然崩溃了,此时你们处理?

这种情况造成突然间系统崩溃的原因很多,我们还是从 查看后台日志,分析后台日志,来开启定位问题。

Linux下如何备份环境?

使用tar 命令在家目录下把这个目录备份

Linux 是服务器上用操作系统,那么你们公司服务器的规格是啥?

linux操作系统,哪个目录最耗内存,动态查看日志命令

:写出查询的骨架 加分

delete方式可以恢复删除的数据,但是提交了,就没办法了

delete删除的时候,会记录日志 ,删除会很慢很慢

删除所有数据 ,不会影响表结构,不会记录日志,数据不能恢复 , 删除很快

删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复,删除很快

oracle字符,数字,日期 转化成时间的格式

你用过那些哪些oracle 函数 如:

已左表为基准表,右表显示与左表有交集的数据

内连接,也被称为自然连接,等值链接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了表中有交集的数据

索引是创建在表上的表,是对数据库表中一列或者多列的值进行排序的一种结构。索引可以提高查询的速度; 优点:查找速度快  缺点:存储索引占用磁盘空间

存储过程是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程来执行已经定义好的SQL语句。存储过程可以避免开发人员重复的编写相同的SQL语句。

银行经常需要计算用户的利息了不同类别的用户的利率是不一样的聊着就可以将计算利率的SQL代码写成一个存储过程。

视图是是从一个或者多个表中导出来的表,是一种虚拟存在的表。

成绩表tb(字段有:姓名、课程、成绩)

请用你所知道的语言编写冒泡算法?

Python你用到了哪些模块?这些模块的主要解决了那些问题?

Python的标准的数据类型有哪些?

Python常用的断言方式有哪些?

断言我们一般在Unittest单元测试框架中使用,常用的有assertIn(模糊匹配)和assertEqual(完全匹配)

在python中主要有三大类:

assert类:断言通过才执行下面的代码,失败则停止;

waitfor类:等待断言的元素出现,可以设置等待时间;

verify类:断言失败时会抛出错误异常,但不会影响代码的执行。

说一下你们公司自动化测试流程

在项目成型基本稳定,不会出现大规模的需求变动之后,就可以考虑自动化的启动;

首先要考虑的就是自动化工具的选择,像常用的自动化工具就有QTP、selenium IDE、RobotFramework等,但是这样的工具使用起来不够灵活,一般为了与项目贴合,最好自己写一套框架,

然后在手工用例转化自动化用例之前,我们需要进行评审和决策,将能实现自动化或难度低的模块、用例优先进行自动化,不能实现自动化的用例给出具体原因,在回归时指派手工覆盖,防止漏测;

自动化用例我们要有一定的规范和要求,便于脚本的调用和后期的维护,比如一个功能的用例写在一个目录下,每一条用例写一个脚本,命名要统一格式;

我们用python的unittest框架加载测试用例,用HTMLTestRunner运行测试套并生成测试报告,报告出来后我们要第一时间去分析测试结果,对失败的用例要详细定位失败的原因,到底是脚本错误呢还是这就是bug?再进行处理,修改用例或者就是提交bug问题单;

自动化用例执行全部完成后,对测试结果进行汇总并给出测试结论。

我们公司自动化的流程大概就是这个样子!!

介绍下你们公司的自动化测试框架?

我们公司的自动化框架基于python+Selenium,我们会有一个测试用例目录用于存放测试用例;一个公共的第三方lib库,因为我们实现自动化的过程中会有很多经常用到的方法,做成公共模块放在lib库里面,可以提高代码的复用率,便于代码的维护;还会有一个data数据目录,存放自动化测试中的数据,在进行数据驱动时,数据与代码分离,便于自动化用例数据的准备和脚本的维护;还会有一个执行和报告目录,执行的策略和报告的生成在这个目录下进行,可以调整自动化测试中的下发策略,查看运行的结果。

你们用的测试框架是自己写的吗?

定位元素的方法有哪些?

如果有个元素总是定位不到,怎么办?

你在做自动化测试过程中遇到的最大的困难是什么?如何解决的?

一般出现这种问题的话要先分析脚本中的代码是否与html源文件中元素的属性值一致,经常会因为空格、特殊字符、编码格式等问题导致脚本中代码与html源文件不一致;再查看HTML源文件中是否使用了frame,如果有了则需要特殊处理(使用switch_to_frame跳到frame再定位元素);如果都不是以上的情况,则要检查浏览器的配置,是不是拦截了一部分功能,导致需要定位的html页面的元素不能正常加载;还有一种情况是系统使用的协议不是标准的http协议,而是用了自定义的协议,那就没办法了。

你们公司自动化测试的流程是什么样的?

我们的项目是比较稳定的项目,做了好久了,现在主要是运维修改一些BUG和做一些新需求,所以我们公司的自动化测试是用于本次新版本上线前做回归测试用的。脚本是前两年就已经做好了的,每次新版本上线前一周会花两三天的时间进行脚本更新与维护,脚本调试通过再使用测试框架执行测试,测试完成会生成报告,我们再对测试结果进行分析,如果发现了BUG,进行BUG的跟进,关于BUG的跟进就跟手工测试试试跟进BUG是一样的了。

定位一组元素和定位单个元素有什么区别?

定位单个元素返回的是一个元素对象,可以直接进行操作;而定位多个元素返回的是一个元素对象列表,需要做二次定位后才可以进行操作,如下拉框中的元素,需先定位到下拉框,再用Select方法进行二次定位

你们公司自动化用例大概多少条?会对那些进行自动化测试?

占总系统测试用例的30%-50%左右,根据自己总用例数来估算吧!一般跳窗口,调第三方接口以及一些业务场景比较复杂的用例不适合实现自动化。

server解析请求,完成相应操作并返回response;客户端接受response,并分析其返回值来决定是接着执行下面的代码,还是停止操作。简单的说webdriver就是在自动化脚本与浏览器之间建立一种沟通(交互),脚本中的代码以请求的形式发给浏览器,浏览器执行后返回结果。

模拟对第一步定位到的元素进行点击、输入、选择等操作

元素的定位用的是什么方法?

定位元素有三种方式:通过属性定位、通过xpath定位、通过css定位

你觉得Selenium的缺陷是什么?

首先Selenium是一种自动化测试框架,它就存在自动化测试的缺陷:不稳定、可靠性、不易维护、成本与收益;而且它只支持B/S架构的自动化。

开源、轻量级、支持多种语言、提供的SeleniumIDE工具录制脚本易于上手,支持多种浏览器,可以很好的测试兼容性。

如何去定位属性动态变化的元素?

- xpath或者css通过同级、父级、子级进行定位

selenium中如何保证操作元素的成功率?

如何提高selenium脚本的执行速度?

1、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们可以直接通过网址来打开,减少不必要的操作

2、中断页面加载,如果页面加载的内容过多,而加载的内容不影响我们测试,就设置超时时间,中断页面加载

3、在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度(可以用try + isElementPresent,或者try + find_element_by)

4、多线程执行脚本,在编写测试用例的时候,要尽量实现松耦合,然后在服务器允许的情况下,设置多线程运行,提高执行速度(remote起多节点做分布式,需要先设置hub和node,threading做多线程)

怎么提高脚本执行的稳定性?

- 多用 try 捕捉,处理异常

- 多线程的时候,用例之间相互影响,所以设计用例的时候,尽量降低用例的耦合度;

- 多线程的时候,如果用例执行的先后数序有要求,那么在用例命名的时候要加0-9或a-z排序,因为用例的执行顺序是按照ASCII码表排列的(数字--》大写字母--》小写字母)

自动化测试的时候需要连接数据库做数据校验?

- 接口测试会需要(修改了数据库中的数据就需要,也就是对数据库中的数据进行了增、删、改)

使用什么工具进行的自动化测试

Selenium用的是哪个版本的的?Python用的是哪个版本的?

你有自动化测试脚本吗?

有写,因为一方面我们的系统每个版本都会有新功能上线,等这些新功能运行三四个月基本稳定后,这些功能会就会加入到自动化测试的范围内,所以我们几乎每个版本都会有新自动化脚本要写。另一方面,原有的功能总会有一些新的调整,所以每个版本都需要对原有的自动化脚本进行更新与维护。

我们一般是先使用selenium IDE进行录制后生成脚本,再对工具自动生成的脚本进行修改、优化。

Python常用的模块、函数有哪些

你所测试的核心模块是怎么用自动化实现的,对于验证码的情况如何处理

自动化实现原理 把自动化测试流程说了,对于验证码,验证码,我们用的是万能验证码,开发后台代码写死的。

你们公司的性能测试是如何开展的?

介绍下你们公司的性能测试流程?

你们公司性能测试通过的标准 (答案:第6条)

1.首先明确哪些功能需要性能测试,我们测试 注册,登录,投保,充值,提现,添加购物车(结合自己项目里面的性能部分去展开说)

2.基本功能稳定后,我们使用LR工具进行性能测试,录制脚本;

3.录制脚本后,会做脚本增强,包括插入事务,检查点,参数化,设置集合点;

4.脚本录制完成后,我么会在controller模块加载脚本,设置运行模式,设置并发用户数,添加负载机,设置RTS,设置集合点策略;

5.运行脚本,运行结束后,对性能测试结果分析;

6脚本没有error,事务通过率100%,CPU,内存,资源小于80%,响应时间小于5s,性能测试通过;

7如果性能测试没有通过,让开发优化后继续测试,我们性能测试并发是在 100-300 之间

以上就是我们公司性能测试流程

在性能脚本开发中主要做了哪些事情?

1、选择协议,录制脚本(一般多用于web架构的,选择http协议,基于url);

2、简介和注释,增强脚本的可读性;

3、事务(一般在录制的时候插入事务,注意事务的完整性);

4、检查点(现在多用文本检查,函数为lr_web_reg_find());

5、关联(了解什么时候需要做关联,手动关联与自动关联的区别,需要关联的典型场景:登录的session动态变化,订票的订单号、交易流水号、账户的余额也是动态变化的);

6、参数化(两种参数文件属性:file、date/time,date/time类型的参数要注意时间的有效性,比如订票只能定当前时间以后的票,查询订单只能查询当前时间以前的订单;file类型的参数要注意参数的选择策略:顺序、随机和唯一,更新策略:每次迭代、每次出现、一直是,参数迭代超出时处理(只在参数做唯一选择时需要设置):停止迭代、参数循环迭代、参数以最后一个值迭代);

7、运行时设置(这里指的是脚本调试时的RTS,要与场景设置时的RTS区分开,关键是区别日志类型和迭代次数);

8.集合点(注意设置集合点的位置,在一个事务结束之后,下一个事务开始之前,要了解场景设置中集合点的三种策略:占总虚拟用户数的百分比、占运行总用户数的百分比、达到多少用户数时);

9、错误处理(一般对文本检查的结果进行处理,文本检查中会加一个计数,通过计数来做事务成功或失败的判断);

性能测试中主要的指标有哪些?

系统指标:内存(70%以下)、CPU(70%以下)、网卡使用率、磁盘I/O速度

业务指标:TPS、吞吐量(业务不同,并发用户数不同,吞吐量会有很大的差异,所以单看吞吐量没有太大的意义,常用于配置调优时进行对比分析)、响应时间(3s,5s,10s)、事务成功率

你觉得可能存在性能瓶颈的地方有哪些?

1.配置,web服务器作为前端与后台服务器交互的中轴,在整个系统运行中起着重要作用,它的最大进程数和活动进程数要合理配置,不能太多,也不能太少,太多则对服务器产生过大压力,太少则浪费资源;中间件的调优,如mysql数据库配置的调优,配置数据库连接池(与web服务器配置调优类似);

2.后台服务器代码调优:有逻辑上的算法调优和SQL语句调优;

3.提高服务器硬件配置(如CPU、内存等)或服务器数量:服务器集群和负载均衡。

如何判定cpu存在性能瓶颈?

通过交叉结果来对比分析,也就是同样的并发场景,只改变系统配置中的CPU,对两次性能监控的指标进行对比分析,如果提高CPU配置后,cpu占比和系统的性能表现得到提高,那么可以判断cpu存在瓶颈(不一定是唯一的瓶颈,只能说是瓶颈之一,系统的性能是由多个因素共同决定的,要注意的是,性能的优化不一定只是代码上的优化,还可以是硬件上的优化,具体怎么做,还要分析成本与收益,毕竟代码的优化是有极限的)。

如果注册这个业务响应时间过长,你能想象到优化的方案有哪些?

从前端来说:可以减少请求的次数,请求的次数越多,自然响应时间就越长;对传输的比较大的数据进行压缩处理;

从服务端来说:sql语句的调优,一个插入动作,可能插入的不仅仅是一张表,而是对多张有关联的表进行操作,那么可以从代码层面对sql语句进行优化;

从业务来说:对应请求的响应数据过大时,可以对响应数据进行分割,先响应一部分数据,如淘宝查询操作,每次只响应10条数据。

你们公司性能测试用的是什么工具?

自动监控制定的URL或应用程序所发出的请求及服务器返回的响应。它作为一个第三方监视客户端与服务器的所有对话,然后把这些对话记录下来。生成脚本。再次运行时模拟成千上万的虚拟用户发出的请求,捕获服务器端的响应并监控性能指标数据。通过对性能指标数据的统计与分析输出报告。

录制脚本,脚本调试与优化、设置场景,执行场景,分析结果

脚本调试与优化包括:参数数、关联、检查点、集合点、思考时间、测试数据准备

做性能测试时候,有自己写过脚本吗?

写过,我们测的一般功能都比较简单,比如新增数据、搜索、导入导出这些功能

导出、下载功能需要写脚本,使用C语言。首先使用关联函数将服务器返回的数据获取并保存,使用C语言中的fopen函数把数据保存到本地。

做的最多的是新增数据(需要关联,关联内容一般有时间、ID)、搜索(参数化、参数取值方式随机并且运行时需要设置清空缓存run-time settings)的脚本。

性能测试分析结果是怎么做的?

我只做一个表象的分析,对比实际测试的性能指标数据与预期指标是否相符、观察测试结果中的图像是否稳定。

其他的交由开发人员处理,把报错的信息发到开发人员处,后续分析以及调优由开发人员处理

你做过性能测试,你有没有遇到什么问题?怎么处理的?

1.我有测出过一个死锁,后来加了一个超时的设置,就可以处理这个问题了。

2. 测搜索功能的时候响应时间非常慢?怎么处理?

数据库加索引,这个是开发人员去处理的

性能测试中,并发用户数怎么估算?

有两种情况  一种是新系统,需要产品人员去调研业务量,业务的峰值,

第二,得到这些数据后,在用8020原则计算系统当前业务强度(TPS、点击率等等)

第三,由产品部门或从数据库调研得出业务增长趋势(比如估算未来三年业务增长为现在的1.5倍),计算出本次测试的系统业务强度

第四,用目标场景估算并发用户数

你们公司的性能测试用多少用户并发?

OA系统或者企业内部用的系统,一般是50~200并发用户数

淘宝双11一般是百万级别的并发用户数

APP(饿了么) 并发一般用几万

性能测试工作都干啥(初级测试):

负责某某功能的性能测,主要工作内容有 场景的设置与执行,测试结果分析,并协助开人员优化系统,性能测试报告。

写脚本的过程当中经常用的函数有哪些?

性能测试中监控服务器资源实现的原理

LR 主要利用系统的服务和协议来监控,比如说RPC和tcp udp等

Jmeter 是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去

性能测试时候使用什么工具检测服务器性能指标

Jmeter 用的是一个插件教 server agent ,原理是通过调用特定系统服务手机服务器数据,在通过本身的代理和特定的协议,端口发送数据出去

说一下你们公司接口测试是怎么做的?

其实接口测试流程和功能测试流程差不多,首先熟悉业务流程,熟悉接口需求,然后根据开发提供的接口测试文档,编写并评审接口测试用例,开发人员接口开发完毕,提测后我们执行接口测试用例,发现问题提交bug问题单,回归接口测试问题单,整理接口测试报告。

我们公司接口测试流程大体就是这样

说一下你们公司接口测试都测啥?

如何进行接口测试用例设计?

我们公司接口测试目前没有自动化起来,主要还是手工测试,测试重点主要围绕着,接口的 通过性验证,参数组合验证,接口安全,接口异常验证 以及结合 接口本身业务逻辑来,展开接口测试的:

通过性验证:严格按照接口文档里面的规定传参数以及参数类型进行传参,也就是正常场景,先保证接口流程是通的,接口是好使的;

参数组合验证:多个参数的时候,有些参数是必选项,有些是非必选项,这部分我们主要对参数必选项,非必选项组合场景验证;

比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我把这个商品的价格改成-3元【通过抓包工具篡改金额】,验证后端有没有对金额有效性做验证。

比如充值场景,我们要向合作银行传递 客户ID ,已经用户ID ,我们把客户ID 改成不存在的客户ID,或者其他网贷平台客户ID ,看后端是否错了判断处理;

比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解

也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验    

根据你自己的业务逻辑来进行,接口测试

这部分会跟功能测试用例重复,但是通过接口测试可以发现很多在页面上操作发现不了的bug

你们主要测试哪些接口?基于什么协议,返回报文格式是什么样的?

你们公司接口测试只测与第三方的外部接口吗?是否系统内部接口是否测试?

接口分为程序内部接口,和程序外部接口,程序内部接口指的是:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口 ,例如  未登录状态浏览论坛,点击 '发帖子’,弹出 登录对话框,登录,发帖子两个模块,你要发帖子,就一定要先登录,那么这两个模块之间就要有交互,就会抛出一个接口,供内部系统调用

程序外部接口,主要是系统与第三方的接口常见的 是支付接口 与银行对接等;

我们公司 系统内部接口和外部接口都要测试

3.根据接口文档 ,配置 要测试接口对应 webservice请求消息报文

你用过哪些接口测试工具

开发给的接口文档,包括哪几部分

接口规范文档,也是我们测试最重要的一个依据

4、请求参数、参数类型、请求参数说明

说一下你们公司APP 怎么测的?

这是我们公司研发的APP ,你怎么展开测试?

APP 测试我们主要围绕这 安装卸载,功能测试,运行,登录,离线,消息推送,软件更新,异常测试,网络环境,兼容性,客户端性能 几个纬度展开测试,实际工作当中,我们对APP 测试主要聚焦点在 功能测试和兼容性测试

首先站在APP 的 安装卸载角度,考虑的测试点主要有:

站在功能测试的角度,考虑的测试点:

站在兼容性测试(适配测试)的角度,考虑的测试点主要有:

备注:主流分辨率: 普通机型  高端机型

站在APP 运行的角度,考虑测试点主要有:

站在APP 登录的角度,考虑测试点主要有:

站在APP 离线测试的角度,考虑测试点主要有:

站在APP 消息推送的角度,考虑测试点主要有:

站在APP 软件更新,考虑测试点主要有:

站在异常测试的角度,考虑的测试点主要有:

 站在弱网测试的角度,考虑的测试点主要有:

站在APP 前台性能测试的角度,考虑的主要测试点有:

安卓与ios 系统区别

什么原因会是CPU 占用率一下子飙升超过100%

FPS(流畅度卡顿)造成

cpu,mem 单位是 %(百分比),流畅度 英文缩写:FPS 单位是: 帧

原生:云服务器+客户端

原生:APP应用所有的UI元素、数据内容、逻辑框架均安装在手机终端上

web app:而应用的数据则是每次打开APP的时候,去云端取数据呈现给手机用户

h5 app  安装包小巧,数据都存放在云端

你看过app的日志没有,app的崩溃类型有哪几种

APP 接口类型,常用的就是URL 类型

内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用就会放生内存溢出

GT 客户端性能工具都监控哪些指标?

对App 进行CPU、内存、流量、电量等进行测试

客户端性能测试报告扩张名什么结尾?

我们一般通过纵横对比:

横向对比市场竞争对手产品APP 客户端各项性能指标

纵向对比产品之前的不同的版本

安卓的开发包  谷歌安卓官网上可以下载到的开源 ,没有二次开放之前的那个包 装一个 被测试APP

我们公司平日用真机测试的比较多,没怎么解除过Android 环境的搭建,但是 ,我知道大概的安装顺序是:先安卓 Android Studio ,然后在线 安装被测试版本的sdk,选择avd , 开启虚拟机,再安装 要测试APP 然后进行测试;

我必须要要使用安卓手机才能做手机测试吗?

手机,安装APP 进行测试。工作中,还是真机上测得多,测得准,使用模拟工具测试场景,通常是客户要指定机型太老,市面上很难采购到,我们才会用模拟工具测试;

adb (Android debug bridge) 是安卓开发的一个重要辅助工具,可以通过命令让PC机和手机通讯的,主要用于android 设备的控制;

常用的adb 命令有哪些?

monkey 是android 中的一个 命令行工具,它可以向系统发送 伪随机 事件,是一款很好的 测系统稳定性,健壮性的测试工具

monkey 用来模拟的伪随机事件的类型有哪些?

键盘事件  键盘弹出 和退出

常用的monkey 命令有哪些?

-v 指定日志的详细程度

500 向应用发送500个伪随机事件

100次随机用户事件)。

二组  日志相关操作

说明 缺省值,仅提供启动提示、测试完成和最终结果等少量信息

说明  提供较为详细的日志,包括每个发送到Activity的事件信息

说明  最详细的日志,包括了测试中选中/未选中的Activity信息

用于指定用户操作(即事件)间的时延,单位是毫秒

  测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件

数目达到1000为止;

【参数解释】 用于指定当应用程序崩溃时(Force &Close错误),Monkey是否停止运行。

如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件 计数完成。

手机测试的时候,如果模拟弱网的场景?要实地跑到电梯里去测试吗?

不用,现在手机里有'设置’ 里面'优先网络类型’在这个系统里面 可以设置切换的2G,3G,4G,

手机兼容性测试,机型如何选择的

第二种就是 客户指定的机型

你如何保证测试的质量或者你如何判断是否达到上线的条件?

如果开发延期,测试要求如期上线,你会怎么做?

介绍下你们的测试流程?

bug的生命周期有哪些?

项目的一个完整迭代要多久?

每一轮你们的侧重点是什么?

系统测试用例 功能 基本功能+这个版本新特性

一轮大概发现多少个bug?

你印象最深的bug有哪些?

你如何确定你发现的bug是有效的?

你觉得提交bug需要包含哪些因素才算完整?

作为测试的话,你的优势在哪里?

你觉得你们在测试的过程中有哪些是可以改进的地方?

针对某某(你项目中的)模块,你是怎么设计测试用例的?给你这样一个功能 你会怎么测试?

11.理财项目中涉及到的接口以及实现原理

12.提现模块是否将参数直接传给华瑞银行审核,那么华瑞银行审核的原理是怎样的

13.大致介绍一下最近的一个项目是用来干嘛的,你分几个维度进行测试

3、充值回调,银行这边超时了,怎么处理 我回答找到客服提供交易流水号,手动启动充值回调 面试官问如果是周末,你们怎么处理的?

4、金融类项目,安全测试一般面试官会问的比较多。

8、你觉得你们这个金融平台是靠什么挣钱的?客户为什么要选择你们的产品?

11、APP项目组有哪些开发?

测试过程中怎么判断是服务器出了问题,还是程序本身的问题?

404  找不到 — 服务器找不到给定的资源;文档不存在

500 内部错误 — 因为意外情况,服务器不能完成请求

501 未执行 — 服务器不支持请求的工具

502 错误网关 — 服务器接收到来自上游服务器的无效响应

301 已移动 — 请求的数据具有新的位置且更改是永久的

302 已找到 — 请求的数据临时具有不同 URI

post提交数据原则没有大小限制,get有大小限制(200k)

 1.当页面加载很慢的时候,不知道是什么原因导致页面加载很慢,我需要抓包分析一下;

 2.我发现 我们测试的APP,web 图片无法显示,视频无法播放,抓包分析一下;

 3.在做接口测试的时候,开发人员没有给我接口测试文档,我不知道请求参数,和返回参数都有哪些,支持的是什么协议,请求参数类型都是什么,这时候,我需要使用抓包工具 ,抓取接口报文信息,进行分析

·根据返回的请求的后缀(扩展名),来判断请求的类型

·通过返回码判断请求的状态,如果4xx和5xx需要提交bug

·查看请求的方式,是get还是post,如果post需要查看post的数据,是否加密

·查看页面的大小,我们公司要求,如果图片超过200k 提交bug

界面加载的时候先加载html 在加载css 最后加载js

一个完整的html 网页应当包括

列举出常用的10个HTML 标签

十一、安全性测试是什么?用什么工具?如何测试?

答:安全性测试是验证有关应用程序的安全服务和识别潜在的安全性的缺陷的过程。此节包括一些重要的测试建议,用来验证已创建安全的应用程序。

1.     认证模块必须采用防暴力破解机制。例如:验证码或者多次尝试连接尝试登陆失败后锁定账号或IP,账号冻结后,管理员可以手动解冻

2.     对于每一个需要授权访问的页面或servlet的请求都必须核实用户的会话标识是否合法、用户是否被授权执行这个操作,以防止URL越权。

3.     登录过程中,往服务器传递传递用户名和口令时,必须采用HTTPS安全协议(也就是带服务器端证书的SSL)

6.     密码需要满足一定长度和复杂度,,并且以高级的加密方法保存在数据库。

10.  日志中的密码不能以明文显示

我要回帖

更多关于 系统启动以后,需要占用()空间 的文章

 

随机推荐