第12.13.14次课-常用测试技术
几种常见系统测试
1.简要说明几种系统测试:
性能测试:是为获取或验证系统性能指标而进行的测试。
负载测试:是通过改变系统软件负载方式、增加负载等来发现系统 软件中所存在的性能问题。主要测试软件系统的性能。
压力测试:通常是在高负载情况下来对系统的稳定性进行测试,更 有效地发现系统稳定性的隐患和系统在负载峰值的条件下功能隐 患等。 目的虽不同,但方法类似,通常会用特定的测试工具,来模拟超 常的数据量、负载等,监视系统的各项性能指标。
安全测试、可靠性测试 兼容性测试
1.1性能测试
1.1.1概述
性能测试常常与负载测试、压力测试结合进行,确定在各种工作 负载下系统的性能,及系统能提供的最大服务级别的测试。并常常 要求同时进行硬件和软件检测。
1.1.1.1内容
评估系统的能力,识别体系中的弱点,系统调优 ,检测软件中的问题,验证稳定性(resilience)可靠性( reliability)等。
1.1.1.2依据
需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。
如用户没有提出性能指标,则根据用户需求、测试设计人员的经验来 设计各项测试指标。(需求+经验)
1.1.1.3主要的性能指标:
通常,对软件性能的检测表现在以下几个方面:服务器的各项指标 (CPU、内存占用率等),后台数据库的各项指标,网络流量,响应 时间,并发性能,辅助存储区(如缓冲区,工作区的大小等),处理 精度等。
为记录性能需要在系统中安装必要的量测仪表或是为度量性能而设置 的软件(性能测试工具)或程序段。如:IBM Rational Performance Tester、HP Loadrunner、Compuware QALoad等。
1.1.1.4性能测试要点
测试环境应尽量与产品运行环境保持一致,应单独运行尽量避免与 其他软件同时使用。
性能测试一般使用测试工具和测试人员编制测试脚本来完成。
性能测试的重点在于前期数据的设计与后期数据的分析。
性能测试的用例主要涉及到整个系统架构的问题,所以测试用例一旦生成,改动一般不大,所以做性能测试的重复使用率一般比较高
1.1.2性能测试的方法和技巧
1.1.2.1对于企业级的系统,性能测试的方法主要有:
基准测试 性能规划测试 渗入测试 峰谷测试
1.1.2.2两种负载类型
“flat”(平坦)测试 :一次加载所有负载,然后在预定的时间段内持续运行, 然后取测试性能指标的平均值。
eg:一次性加载100个用户来访问这个网站,看cpu使用率,网络吞吐率等性能指标。
ramp-up测试:负载是交错上升的(每几秒增加一些新负载)。rampup测试不能产生精确和可重现的平均值,这是因为由于负载的增加是 每次一部分,系统的负载在不断地变化。其优点是,可以看出随着系 统负载的改变,测量值是如何改变的据此选择要运行的flat测试的范 围。
1.1.2.3Flat测试 “波动”效应
Flat测试的问题是系统会遇到“波动”效应(必须拉平)。
如,当在网站测试中所有的用户都同时执行几乎相同的操作时,可能 会发生这种现象,这将会产生非常不可靠和不精确的结果,波动的出现,吞吐量不再是平滑的,获得的值也不精确。这在系统的各个方面都有所体现。
解决方法:
有两种方法可以从这种类型的结果中获得精确的测量值:
如果测试可以运行相当长的时间(有时是几个小时,取决于用户 的操作持续的时间),最后由于随机事件的本性使然,服务器的吞吐 量会被“拉平”。(一般用 这种)
或者,可以只选取波形中两个平息点之间的测量值。该方法的缺 点是可以捕获数据的时间非常短。(这种非常难)
1.1.3基准测试 (Benchmark Test, BMT)
基准测试是对测试对象的某些性能指标进行定量和可对比的测试。 基准测试强调要获得一致的、可再现的结果。如,假定测试的两个指标是服务器的响应时间和吞吐量,两指标会受到 负载的影响,而负载又受两个因素影响:
1.同时与服务器通信的连接(或虚拟用户)的数目,
2.每个虚拟用户请求之间间隔时间的长短。
与服务器通信的用户越多,负载就越大。同样,请求之间的间隔时间越 短,负载也越大。这两因素的不同组合会产生不同的服务器负载等级。 这时用基准测试,就可对响应时间和吞吐量 获得可再现的结果。
基准测试的工作重点是统计分析
当软件系统中增加了1个新模块,此时需要做基准测试,以判断新的模块对整个软件系统的性能影响。
1.1.4性能规划测试
如何加载用户以模拟负载状态?
什么是确定容量的最好方法?
1.1.5渗入测试
渗入测试是一种比较简单的性能测试。渗入测试所需时间 较长,它使用固定数目的并发用户测试系统的总体健壮性 。这些测试将会通过内存泄漏、增加的垃圾收集(GC)或系 统的其他问题,显示因长时间运行而出现的任何性能降低
1.1.6峰谷测试
兼有容量规划ramp-up测试和渗入测试的特征,目标是确定从高负载( 例如系统高峰时间的负载)恢复、转为几乎空闲、然后再攀升到高负 载、再降低的能力。查看系统是否显示了内存或GC性能降低的有关迹 象?
1.2负载测试
负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不 断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负 载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存 )等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、 内存泄漏、不能实时同步等问题。
1.3强度测试(压力测试)
检验系统能力的最高实际限度,是检查在系统运行环境不正常乃至发 生故障的情况下,系统可以运行到何种程度的测试。
进行强度测试时,让系统的运行处于资源的异常数量、异常频率和异常批量的条件下。 从本质上来说,测试者是想要破坏程序。关注这几方面:
测试压力估算、测试环境准备、问题的分析、累积效应 测试压力估算时遵循的一些准则为:
把输入数据速率提高一个数量级,确定输入功能将如何响应。
设计需要占用最大存储量或其它资源的测试用例进行测试。
设计出在虚拟存储管理机制中引起“颠簸”的测试用例进行测试。
设计出会对磁盘常驻内存的数据过度访问的测试用例进行测试。
问题分析
累积效应
压力测试类型
并发性能测试 疲劳强度测试 大数据量测试
1.4系统瓶颈分析
1.5性能测试举例
“新华社多媒体数据库 V1.0”性能测试
1.6安全性测试,可靠性
目的不同,其手段和方法也不同,但都属于系统测试的范畴,有一定 的联系,如软件可靠性要求通常包括了安全性的要求。
术语
二种级别的安全性
威胁模式分析
软件安全概述
安全性防护策略、测试方法
owasp top 10 -2017
A1-注入
注入攻击漏洞,例如SQL,OS以及LDAP注入。这些攻击发生在当不 可信的数据作为命令或者查询语句的一部分,被发送给解释器的时候 。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者 在未被恰当授权时访问数据。
A2 失效的验证和会话管理
与身份认证和会话管理相关的应用程序功能往往得不到正确的实现, 这就导致了攻击者破坏密码、密匙、会话令牌或攻击其他的漏洞去冒 充其他用户的身份。
A3 跨站脚本(xss)
当应用程序收到含有不可信的数据,在没有进行适当的验证和转义的 情况下,就将它发送给一个网页浏览器,这就会产生跨站脚本攻击( 简称XSS)。XSS允许攻击者在受害者的浏览器上执行脚本,从而劫持 用户会话、危害网站、或者将用户转向至恶意网站。
A4 –失效的访问控制
对于通过认证的用户所能够执行的操作,缺乏有效的限制。攻击者可 利用这些缺陷来访问未经授权的功能和/或数据,例如访问其他用户 的账户,查看敏感文件,修改其他用户的数据,更改访问权限等。
A5 安全配置错误
好的安全需要对应用程序、框架、应用程序服务器、web服务器、数 据库服务器和平台定义和执行安全配置。由于许多设置的默认值并不 是安全的,因此,必须定义、实施和维护这些设置。这包含了对所有 的软件保持及时地更新,包括所有应用程序的库文件。
A6 敏感信息泄露
许多Web应用程序没有正确保护敏感数据,如信用卡,税务ID和身份 验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡 诈骗、身份窃取,或其他犯罪。敏感数据值需额外的保护,比如在存 放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。
A7 –攻击检测与防护不足
大多数应用和API缺乏检测、预防和响应手动或自动化攻击的能力。 攻击保护措施不限于基本输入验证,还应具备自动检测、记录和响应 ,甚至阻止攻击的能力。应用所有者还应能够快速部署安全补丁以防 御攻击。
A8 跨站伪造请求(CSRF)
一个跨站请求伪造攻击迫使登录用户的浏览器将伪造的HTTP请求, 包括该用户的会话cookie和其他认证信息,发送到一个存在漏洞的 web应用程序。这就允许了攻击者迫使用户浏览器向存在漏洞的应用 程序发送请求,而这些请求会被应用程序认为是用户的合法请求。
A9 使用含有已知漏洞的组件
组件,比如:库文件、框架和其它软件模块,几乎总是以全部的权限 运行。如果一个带有漏洞的组件被利用,这种攻击可以造成更为严重 的数据丢失或服务器接管。应用程序使用带有己知漏洞的组件会破坏 应用程序防御系统,并使一系列可能的攻击和影响成为可能。
A10 –未受有效保护的API
现代应用程序通常涉及丰富的客户端应用程序和API,如:浏览器和 移动APP中的JavaScript,其与某类API(SOAP/XML、REST/JSON、 RPC、GWT等)连接。这些API通常是不受保护的,并且包含许多漏 洞。
- 计算机取证
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!