软件测试面试题整理(七)之性能安全篇

https://blog.csdn.net/weixin_45912307/article/details/109523627
1. 安全测试怎么测试的?

安全测试我们常用的方法是:
1,sql注入;
2,xss脚本攻击;
3,数据加密;
4,权限控制运用扫描工具appscan扫描web系统。扫描app的一般用腾讯wetest 等平台测试。

  • 测试前端(web)时我们首先检查检查一下用户的感敏信息有没有进行加密显示,通过Fiddle抓包工具检查一下用户的感敏信息有没有进行加密后传输如:用户密码,相应的银行卡,个人信息等,再到日志中搜索关键信息,搜索到,就泄密,存在安全漏洞,数据库中是否做了加密处理。还有就是把发送请求的数据篡改例如:打开fiddler工具,设置过滤器,设置断点把商城里的支付订单的1000完金额修改成1块钱,再放行发送数据,看是否,支付1块钱,订单支付成功,如果成功则是bug,预期结果是支付金额不对才行。
  • Sql语句注入和xss脚本攻击,把sql语句或xss脚本编缉成csv文档通过jmeter工具添加“CSV 数据文件设置”来调用里面的语句来在所有的查询位置、所有的接口请求、url请求链接参数中,进行sql语句注入或xss脚本攻击:模拟sql语句xss脚本攻击数据库,看它是否把sql注入代码或xss脚本当成字符处理、,如果不是就是bug,再看功能不能正常使用、系统是否崩溃,错误弹出框,界面是否变形。还有在所有可以保存的地方,都添加xss脚本攻击代码,看看是否出现异常。
  • 权限控制(用户的校验)校验用户安全认证信息是否正确,如没有权限的界面不能进入,不能提供操作入口或不能通过url直接去访问:例如;把所有需要权限的界面,全部复制一份出来然后退出用户再通过url链接去访问功能如果可以访问,就是bug,如有提示登录,属于正常。还有登陆用户再退出用户后,点击浏览器的后退不能进入原来的界面。
    • 通过appscan扫描工具去扫描,我们一般是这样操作的;
      • 1.启动软件进入主界面—>选择创建新的扫描:
      • 2.在弹出的新建扫描对话框中选择常规扫描:
      • 3.在弹出的扫描配置向导对话框中选择AppScan(自动或手动),点击下一步:
      • 4.在此页面中填写需要扫描系统的网址,点击下一步:
      • 5.选择登陆方式为记录,点击下一步:
      • 6完成系统登录操作后,关闭浏览器,选择登录管理中的“详细信息”;
      • 7.在“详细信息”中,取消“激活会话中的检测”,同时在“登录会话标识中”,对变量参数值进行跟踪以确保参数的正确处理而获得系统访问权限;
      • 8.把密码修改页面URL、用户权限删除URL等页面添加至排除测试范围,防止Appscan的请求产生相应影响(防止Appscan修改密码或删除用户帐号);
      • 9.在“自动表单填充”中,填入用户名和密码参数,并填写参数值,其余不做修;
      • 10.如果测试过程中,应用服务出现性能响应过慢的问题,适当调整测试线程数为2~5;
      • 11.测试策略选择为“严重性”进行过滤只勾选关注的严重性级别,把“高”、“中”和“低”选上。
      • 13.点击确定按钮,结束扫描配置工作;
      • 14.点击扫描按钮,选择“仅探索”,Appscan开始执行探索工作;
      • 15.探索自动结束后,点击“手动探索”按钮,此时,在弹出的IE浏览器窗口中登录系统,手工的任意访问系统页面(1~10个),关闭浏览器;
      • 16.在弹出的参数添加窗口中,点击“确定按钮”;
      • 17.点击扫描按钮,选择“完全扫描”,Appscan开始执行测试工作;
      • 18.测试执行结束后,点击报告按钮,选择关注的测试结果信息,勾选“报告内容”里的所有勾选;
      • 19.“保存报告”,保存类型建议选择为html;然后分析报告。(只需辽解面试尽量不要提及)

2. 性能测试怎么做的?

  • 接口性能测试其实就是通过工具模拟多种正常,峰值,异常的负载条件来对系统的各项性能指标进行测试
  • 性能指标主要考虑:平均响应时间,吞吐量,吞吐率还有每秒事务数,以及系统的资源使用率,CPU,内存等。
  • 接口性能测试主要考虑硬件配置和组网方面
  • 接口性能分析的对象有包括:
    • 网络传输的快慢,我们可以用ping命令来查看;
    • 还要考虑服务器的硬件配置:内存、CPU、磁盘读写,可以用top命令来监控;
    • 网络传输快慢和硬件配置的:CPU、men、磁盘读写这几个我们平时还会用nmon来监控,nmon会把监控的数据形成表格形式,更方便我们查看。
    • 还要考虑Apache中间件,要考虑中间件设置的最大连接数,看设置的合不合理,连接数太少了,当会话数超过了设置的最大连接数会导致等待时间变长可能会导致超时;
    • 还要考虑数据库的最大连接数和SQL语句的执行时间以及执行的计划有没有用索引,还要考虑索引的命中率;
    • 最后还要考虑代码写的好不好,处理的时间长不长的问题。
  • 做性能测试我们平时都是用排除法一个一个的去排除(一般代码方面的问题我们是最后去考虑的)
  • 在我以前的公司我们主要是会考虑用户操作使用比较频繁的模块,比如借贷,充值,投资模块,我们一般会通过增加并发数来压测,观察CPU ,mem 磁盘读写 还有吞吐量和每秒事务数等性能指标
    • 以前我老大呢是要求我并发100个用户,我用jmeter 把线程数设为了100,永久循环,持续时间半个小时,启动延迟5s,
    • 我在Linux上用nmon监控了网络快慢和CPU和mem,
    • 当我运行脚本的时候我看聚合报告90%的平均响应时间达到了6s吞吐量也比较小,
    • 在Linux上用nmon监控CPU,mem还有网络,但是发现CPU差不多到了100%,也有用top命令监控资源,
    • 并且我还在Navicat用SQL命令show full processlist去抓取当前运行的SQL语句,发现有很多语句是用的多次左关联,在查看了这条SQL语句的执行计划发现没有用索引,再查看了索引的命中率,命中率到是还行,运行完了我首先看了下nmom生成的报告,发现CPU一直是处于爆满状态,其中主要是mysql的占比很大,这个时候我基本上判断数据库的问题,
    • 我呢就照着前面的在运行了一次,同样还是用 nmom命令去监控CPU,mem,网络问题,
    • 这次我是主要在Navicat上用命令去抓取SQL语句,还是一样有很多语句都是左关联,并发现很多空连接(sleep)我就用show global variable like "wait_time"命令查看了设置的休眠时间(等待时间) 发现时间很长28800s ,然后我就把这个休眠时间改成了20s,因为SQL语句有用很多左连接并用show variables like "tables_size"查看了临时表的空间大小,发现临时表只有16m 我就改成了1个G在去跑了一下发现CPU只是降了10%左右,nmom上监控的数据还是mysql占的CPU很大,
    • 然后运行的时候用top命令监控,发现有的时候有很多mysql进程同时运行(因为没有设置连接池)
    • 我就用命令查看了下mysql的最大连接数,因为SQL语句的执行速度还是挺快的,所以就把mysql的连接数调小到50,再去跑了一遍发现CPU降到了40%左右并且其他的性能指标也都还不错。最后把聚合报告的数据以nmom的数据整理成性能报告给老大。
  • 其实做接口性能主要就是用排除法一个一个去排除,发现性能问题就要先解决了这个性能问题在压测,不然其他的性能问题也可能是这个性能问题导致的。基本上就是观察各个性能指标都在范围之内就差不多了。

3. 你是怎么使用monkey测试稳定性的?

  • Monkey这个工具是针对Andriod系统来测试稳定性。一般我们是在功能测试完成的情况下,再用monkey对其稳定性进行测试,主要是晚上下班前进行测试
  • 一般我们主要是检查软件长时间运行,看看会不会出现崩溃(crash)、超时无响应(anr)、异常(exception)
  • 原则上是monkey的工具,可实际上就是一条命令。一般情况下我们都是在下班时运行,我们一般设置的事件数是100W次,大概八小时这样,一般间隔时间25毫秒,等到第二天早上去看结果。然后分析monkey运行的日志看是否包含 crash,anr,exception,找出问题,问题给开发去修复解决。提交bug,等开发修复完成之后我们会根据上次运行的种子数 -s ,进行回归测试。执行命令例如:
    • 命令中包含几个点:事件数、打印日志级别(-v -v -v)、忽略机制、指定事件比例(–pct-touch 50)以及设置间隔事件(–throttle 25)(25表示25毫秒)。
adb shell monkey -p app安装包名 --throttle 25 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v 执行事件次数 >保存在pc的路径\日志名.log
  • 回归测试命令:
adb shell monkey -p app 安装包名 --throttle 25 --ignore-crashes --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -v -v -v -s 种子数 执行事件次数 >保存在pc的路径\日志名.log

4. 性能测试包含了哪些软件测试(至少举出3种)

  • 负载测试、压力测试、容量测试
    • 负载测试(Load Testing):负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
    • 压力测试(Stress Testing):强度测试也就是压力测试,压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率,磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
    • 容量测试(Volume Testing)确定系统最大承受量,譬如系统最大用户数,最大存储量,最多处理的数据流量等。
  • 或者在下面选择几项:
    • a. 并发测试 - 测试多用户并发访问同一个应用、模块、数据时是否产生隐藏的并发问题
    • b. 基准测试 - 比较新的或未知测试对象与已知参照标准(如现有软件或评测标准)的性能。
    • c. 争用测试:- 核实测试对象对于多个主角对相同资源(数据记录、内存等)的请求的处理是否可以接受。
    • d. 性能配置 - 核实在操作条件保持不变的情况下,测试对象在使用不同配置时其性能行为的可接受性。
    • e. 负载测试- 核实在保持配置不变的情况下,测试对象在不同操作条件(如不同用户数、事务数等)下性能行为的可接受性。
    • f. 强度测试- 核实测试对象性能行为在异常或极端条件(如资源减少或用户数过多)之下的可接受性。
    • g. 容量测试- 核实测试用户同时使用软件程序的最大数量

5. 请问什么是性能测试、负载测试、压力测试?
答:性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试、压力测试参考答案如上题。

6. 在给定的测试环境下进行,考虑被测系统的业务压力量和典型场景?
负载测试。负载测试是用来测定系统饱和状态、确定阀值
其特点有:

  • 01.这种方法的目的找到系统处理能力的极限;通过“检测、加压、阀值”手段找到如“响应时间不超过10秒”,“平均CPU利用率低于65%”等指标。
  • 02.这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景、另外HP Mercury LoadRuner在使用该方法进行“加压”的时候必须选择典型场景。
  • 03.这种性能测试方法一般用来了解系统的性能容量,或者是配合性能调优的时候来使用。特别是该的Weblogic 和库的性能调优。

7. 什么时候可以开始执行性能测试?
答:在产品相对比较稳定,功能测试结束后。灵活性比较强。

8. 简述性能测试的步骤。
熟悉应用了解应用的架构、功能逻辑

  • 测试需求
    1. 需要将开发给定的需求转为吞吐量和响应时间
    2. 根据测试目的,细化需求
  • 测试准备:测试准备包括测试客户端机器准备、测试数据准备、测试脚本准备。
  • 测试执行:测试的执行中,需要监控测试客户端和服务器性能,监控服务器端应用情况:
    • a.客户端的系统资源(cpu、io、memory)情况
    • b. 服务端的系统资源(cpu、io、memory)情况
    • c. 服务器的jvm运行情况
    • d. 服务端的应用情况,看是否有异常
    • e. 响应时间、吞吐量等指标
    • f. 系统资源监控,linux下可以采用的工具有:vmstat、top、meminfo等。
    • g. JVM的监控,可以用jprofiler工具,linux下面的jmap、jhat等。
    • h. 响应时间、吞吐量等,由grinder提供。
  • 上述这些信息,一般在测试结束后,均需要归档整理,已备后续详细分析。
  • 我们自己开发一套脚本,用于以固定的频率获取测试客户端和服务器的vmstat和top输出、grinder的log,并从中截取有用信息保存,用于事后分析。
  • 每次测试运行完以后,肯定会增加很多数据,需要考虑本次执行对数据量的影响,如果数据量的变化对后续测试会有影响,则需要清理数据

9. 你如何识别性能瓶颈?

  • RBI方法:重点测试“吞吐量”指标,因为RBI认定80%的系统性能瓶颈由吞吐量造成。
  • 按照网络、硬件、数据库、应用服务器、代码的顺序自上而下分析性能工具:IBM、HP、OpenSource工具都支持。需使用分析模块、根据Weblogic、Oracle区别有专门的工具实现RBI。

10. 性能测试时,是不是必须进行参数化?为什么要创建参数?LoadRunner中如何创建参数?
答:是。模拟用户真实的业务操作。创建参数列表,用参数替换固定的文本。

11. 你如何设计负载?标准是什么?

  • 负载测试计划多少用户数量、使用什么类型的机器、以及在什么环境下进行。
  • 主要基于两个重要的文档,任务分布图和事务信息
    • 任务分布图告诉我们在负载时间段内,某一个事务使用的用户数,高峰使用率及低峰使用率均来自该文档;
    • 事务信息告诉我们事务名及优先级,在设计场景时可以参考。

12. 解释5个常用的性能指标的名称与具体含义。
响应时间、并发用户数,吞吐量,性能计数器,TPS,HPS

  • 响应时间:指的是“系统响应时间”定义为应用系统从发出请求开始到客户端接收到响应所消耗的时间。把它作为用户视角的软件性能的主要体现。
  • 最大并发用户数:有两种理解方式,
    • 一种是从业务的角度来模拟真实的用户访问,体现的是业务并发用户数,指在同一时间段内访问系统的用户数量
    • 另一种是从服务器端承受的压力来考虑,这里的“并发用户数”指的是同时向服务器端发出请求的客户数,该概念一般结合并发测试(Concurrency Testing)使用,体现的是服务端承受的最大并发访问数
  • 吞吐量:是指“单位时间内系统处理的客户请求的数量”,直接体现软件系统的性能承载能力。
  • 性能计数器(Counter): 是描述服务器或操作系统性能的一些数据指标。例如,对Windows 系统来说,使用内存数(Memory In Usage),进程时间(Total Process Time)等都是常见的计数器。
  • 思考时间(Think Time),也被称为“休眠时间”,
    • 业务的角度来说,这个时间指的是用户在进行操作时,每个请求之间的间隔时间
    • 自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间,体现在脚本中,具体而言,就是在操作之间放置一个Think 的函数,使得脚本在执行两个操作之间等待一段时间。
  • TPS:Transaction per second每秒钟系统能够处理的交易或者事务的数量。它是衡量系统处理能力的重要指标。
  • 点击率: HPS,每秒钟用户向WEB服务器提交的HTTP请求数

13. 描述不同的角色(用户、产品开发人员、系统管理员)各自关注的软件性能要点。

  • 用户: 重点关注打开速度及响应时间
  • 开发: 重点关注响应时间和数据库交互
  • 管理员 :重点关注用户感受到的软件性能;如何利用管理功能进行性能调优;如何利用其他软硬件手段进行性能调优

14. 请分别针对性能测试、负载测试和压力测试试举一个简单的例子?

  • 性能测试例子:公司开发了一个小型项目管理系统,上线前需要做负载、压力、大数据量、强度测试等。
  • 负载测试:逐步加压,从而得到“响应时间不超过10秒”,“服务器平均CPU利用率低于85%”等指标阀值
  • 压力测试:逐步加压,从而使“响应时间超过10秒”,“服务器平均CPU利用率高于90%”等指标来确定系统能承受的最大负载量。

15. 请问您是如何得到性能测试需求?怎样针对需求设计、分析是否达到需求?

  • 查看需求文档,从中提取性能测试需求,与用户交流,了解实际使用情况。
  • 结合业务信息设计操作场景总结出需测试的性能关键指标
  • 执行用例后根据提取关键性能指标来分析是否满足性能需求

16. 什么时候开始进行性能测试?

  • 性能测试一般分前期阶段后期阶段
    • 前期阶段:是功能实现后还没有到系统集成时期。可以针对功能实现进行性能测试,看看单独功能实现的响应时间
    • 后期阶段:是指系统功能通过功能性测试完毕后,到整体的性能测试阶段。

17. 什么是性能测试、负载测试、压力测试?

  • 性能测试(Performance Test):通常收集所有和测试有关的所有性能,被不同人在不同场合下进行使用。关注点:how much和how fast
  • 负载测试(Load Test):是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。关注点:how much
  • 压力测试(Stress Test):又叫强度测试,也是一种性能测试,它在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。

18. 软件的安全性应从哪几个方面去测试?
软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

  • 用户认证安全的测试:
    • 明确区分系统中不同用户权限 、系统中会不会出现用户冲突 、系统会不会因用户的权限的改变造成混乱 、用户登陆密码是否是可见、可复制、是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)、用户退出系统后是否删除了所有鉴权标记,
    • 是否可以使用后退键而不通过输入口令进入 系统 、系统网络安全的测试要考虑问题 、测试采取的防护措施是否正确装配好,
    • 有关系统的补丁是否打上 、模拟非授权攻击,看防护系统是否坚固 、采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和IPhacker IP ) 、采用各种木马检查工具检查系统木马情况 、采用各种防外挂工具检查系统各组程序的外挂漏洞
  • 数据库安全考虑问题:
    • 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)、
    • 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据 的不完整,对于这个系统的功能实现有了障碍) 、
    • 系统数据可管理性
    • 系统数据的独立性
    • 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

19. 压力测试VS性能测试

  • 性能测试的目的不是去找bugs,而是排除系统的瓶颈,以及为以后的回归测试建立一个基准。而性能测试的操作,实际上就是一个非常小心受控的测量分析过程。在理想的情况下,被测软件在这个时候已经是足够稳定了
    • 性能测试是为了检查系统的反映,运行速度等性能指标,他的前提是要求在一定负载下,如检查一个网站在100人同时在线的情况下的性能指标,每个用户是否都还可以正常的完成操作等。
    • 概括就是:在不同负载下(负载一定)时,通过一些系统参数(如反应时间等)检查系统的运行情况;
  • 压力测试是为了发现系统能支持的最大负载,他的前提是要求系统性能处在可以接受的范围内,比如经常规定的叶面3秒钟内响应;概括就是:在性能可以接受的前提下,测试系统可以支持的最大负载。
  • 举例说明:针对一个网站进行测试,模拟10到50个用户就是在进行常规性能测试,用户增加到1000乃至上万就变成了压力/负载测试。如果同时对系统进行大量的数据查询操作,就包含了强度测试。

20. 一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?

  • a)300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。
  • b)线程之间可能发生干扰,而产生一些异常。
  • c)300个用户在一个客户端上,需要更大的带宽。
  • d)IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。
  • e)所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

21. 您以往是否曾经从事过性能测试工作?如果有,请尽可能的详细描述您以往的性能测试工作的完整过程。

  • 是的,曾经做过网站方面的性能测试,虽然做的时间并不久(2个月吧),当时呢,是有位网站性能测试经验非常丰富的前辈带着我一起做。
  • 性能测试类型包括负载测试,强度测试,容量测试等
      负载测试:负载测试是一种性能测试指数据在超负荷环境中运行,程序是否能够承担。
      强度测试: 强度测试是一种性能测试,他在系统资源特别低的情况下软件系统运行情况
      容量测试:确定系统可处理同时在线的最大用户数
  • 在网站流量逐渐加大的情况下,开始考虑做性能测试了,首先要写好性能测试计划,根据运营数据得出流量最大的页面(如果是第一次的话,一般是首页,下载页,个人帐户页流量最大,而且以某种百分比),
  • Web服务器指标指标:
    • Avg Rps:平均每秒钟响应次数=总请求时间 / 秒数;
    • Successful Rounds:成功的请求;
    • Failed Rounds:失败的请求;
    • Successful Hits :成功的点击次数;
    • Failed Hits:失败的点击次数;
    • Hits Per Second :每秒点击次数;
    • Successful Hits Per Second:每秒成功的点击次数;
      -Failed Hits Per Second :每秒失败的点击次数;
    • Attempted Connections:尝试链接数;

22. 软件的安全性应从哪几个方面去测试?

  • (1)用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议
  • (2)加密机制
  • (3)安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描
  • (4)数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理
  • (5)防病毒系统

23. 如何理解压力、负载、性能测试测试?

  • 性能测试是一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容。
  • 压力测试对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。
  • 负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分
  • 100个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问8个小时就可以认为负载测试,1000个用户连续访问系统1个小时也可以看作是负载测试。
  • 实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。

24. 服务端安全分类

  • 生产环境安全
  • 网络安全
  • 系统安全
  • 应用安全(业务安全)
    • 应用代码:java、python、php、ruby
    • 应用框架:spring 、structs、Django、ThinkPHP 、rails
    • 应用容器:tomcat、jBoss、Apache、Ngnix

25. 安全测试关注的维度

  • 传输
    • 敏感信息传递加密
    • 链路加密
  • 接口
    • 访问控制
  • 参数
    • 注入:sql注入、命令注入、文件注入
    • 越权:越过更高权限、越过同级权限

26. 建立安全测试流程

  • 白盒代码分析:自动化
    sonar、findbugs
  • 黑盒扫描机制:自动化
    • zap、wvs、burpsuite、appscan、sqlmap
  • 业务流程安全探索: 人工检测
    • burpsuite、zap

27. burpsuite 重要特性

  • 代理工具(proxy)
  • 爬虫(swiper)
  • 暴力破解(intruder)
  • 漏洞扫描(scanner)
  • 重放请求(repeater)
  • 附属工具(decode comparer)
  • 扩展定制(Extender)
  • 应用场景:
    • 服务端攻击:篡改请求
    • 客户端攻击:篡改响应

28. 常见漏洞

  • 命令注入
    • 多语句分号: ;
    • 条件执行:&& ||
    • 管道符号:|
  • SQL注入
  • XSS注入(跨站脚本):js、html、xml
  • CSRF漏洞(跨站请求伪造)
    • 利用url
    • 利用图片
    • 利用伪造表单
    • 预防:增加token校验、检查referer

29. 什么是系统瓶颈?

  • 瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。
  • 严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。
  • 因此我们测试系统瓶颈主要是实现下面两个目的:
    • 发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。
    • 发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。

30. 什么是性能测试?

  • 模拟多个用户的操作对服务器硬件性能的影响
  • Tps 每秒处理的事务数(服务器)
    -QPS每秒处理的请求数(数据库)
  • RT:响应时间

31. 常见性能测试工具:

  • Jmeter、loadrunner、locust

32. 为什么做性能测试?

  • 满足用户使用需求:网站访问量大崩溃
  • 最小化成本:新服务器上线不知道部署多少台服务器
  • 评估应用系统性能,给运维做系统容量规划提供依据,给开发提供应用调优参考

你可能感兴趣的:(#,软件测试工程师面试合集,软件测试,安全)