【软件测试】软件测试学习笔记(三)

软件测试学习笔记

  • 软件测试学习笔记(一)
  • 软件测试学习笔记(二)
  • 四、性能测试
    • 4.1、性能测试概念
    • 4.2、性能测试目标
    • 4.3、性能测试种类
    • 4.4、性能测试流程
  • 五、安全测试
    • 5.1、安全测试概念
    • 5.2、常见的安全漏洞
      • 5.2.1、SQL注入
      • 5.2.2、xss注入
  • 六、自动化测试
    • 6.1、自动化测试概念
    • 6.2、自动化测试流程
    • 6.3、自动化测试策略
    • 6.4、自动化测试的优势和劣势
    • 6.5、自动化测试常见技术
      • 6.5.1、录制与回放
      • 6.5.2、脚本测试
        • 6.5.2.1、线性脚本
        • 6.5.2.2、结构化脚本
        • 6.5.2.3、共亨脚本
      • 6.5.3、数据驱动测试
  • 七、移动App测试
    • 7.1、移动App测试概述
    • 7.2、移动APP测试要点
      • 7.2.1、UI测试
      • 7.2.2、功能测试
      • 7.2.3、专项测试

软件测试学习笔记(一)

软件测试学习笔记(一)

软件测试学习笔记(二)

软件测试学习笔记(二)

四、性能测试

4.1、性能测试概念

所谓性能测试就是通过性能测试工具模拟正常、峰值及异常负载状态下对系统的各项性能指标进行测试的活动。性能测试能够验证软件系统是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的性能瓶颈及缺陷,从而优化系统的性能。

性能测试目的:

  • 验证系统性能是否满足预期的性能需求,包括系统的执行效率、稳定性、可靠性、安全性等。
  • 分析软件系统在各种负载水平下的运行状态,提高性能调整效率。
  • 识别系统缺陷,寻找系统中可能存在的性能问题,定位系统瓶颈并解决问题。
  • 系统调优,探测系统设计与资源之间的最佳平衡,改善并优化系统的性能。

4.2、性能测试目标

  1. 响应时间
    响应时间( Response Time )指系统对用户请求作出响应所需要的时间。I这个时间是指用户从软件客户端发出请求到用户接收到返回数据的整个过程所需要的时间,包括各种中间件(如服务器、数据库等)的处理时间。
  2. 吞吐量
    吞吐量( Throughput )是指单位时间内系统能够完成的工作量,它衡量的是软件系统服务器的处理能力。
  3. 并发用户数
    并发用户数是指同一时间请求和访问的用户数量。
  4. TPS
    TPS是指系统每秒钟能够处理的事务和交易的数量,它是衡量系统处理能力的重要指标。
  5. 点击率
    点击率是指用户每秒向Web服务器提交的HTTP请求数,这个指标是Web应用特有的一个性能指标,通过点击率可以评估用户产生的负载量,并且可以判断系统是否稳定。点击率只是一个参考指标,帮助衡量Web服务器的性能。
  6. 资源利用率
    资源利用率是指软件对系统资源的使用情况,包括CPU利用率、内存利用率、磁盘利用率等,资源利用率是分析软件性能瓶颈的重要参数。

4.3、性能测试种类

  1. 负载测试
    负载测试是测试软件在各种不同负荷下的表现。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
    负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关的方面。

  2. 压力测试
    压力测试是为了发现系统性能在可以接受的范围内能支持的最大负载的测试,是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个 Web站点在大量的负荷下,何时系统的响应会退化或失败。

  3. 基准测试
    基准测试是一种测量和评估软件性能指标的活动,通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定这些变化对性能的影响。

  4. 疲劳强度测试
    疲劳强度测试是采用系统在要求支持的最大并发用户数情况下持续执行一段时间,通过综合分析交易执行指标数据和系统资源监控数据来确定系统处理要求最大工作量强度性能的过程,以验证系统是否能够稳定运行。

  5. 大数据量测试
    大数据量测试主要针对数据库有特殊要求的系统进行的测试,可以分为实时大数据量测试和极限状态下的测试。实时大数据量测试主要目的是测试用户较多或者某些业务产生较大数据量时,系统能否稳定运行;极限状态下的测试,测试系统使用一段时间即系统累计一定量的数据时能否正常的运行业务。

4.4、性能测试流程

【软件测试】软件测试学习笔记(三)_第1张图片

五、安全测试

5.1、安全测试概念

安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。

【软件测试】软件测试学习笔记(三)_第2张图片
常规测试与安全测试的不同︰
(1)测试目标不同
普通测试以发现Bug为目标;安全测试以发现安全隐患为目标。
(2)假设条件不同
普通测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面;安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。
(3)思考域不同
普通测试以系统所具有的功能为思考域;安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等。
(4)问题发现模式不同
告通测试以违反功能定义为判新依据∶安全测试以违反权限与能力的约束为判新依据。

5.2、常见的安全漏洞

5.2.1、SQL注入

所谓SQL注入就是把SQL命令人为的输入URL、表格域、或者其他动态生成的SQL查询语句的输入参数中,最终达到欺骗服务器执行恶意的SQL命令。
‘or 1=1

5.2.2、xss注入

xss本质上是黑客通过对网页的HTML注入,篡改了原本服务器发给客户端的数据包,在其中插入了恶意脚本,从而在用户浏览网页的时候控制用户的一种攻击。xss长期因此被称为客户端Web安全的头号大敌,因为xss破坏力强大,产生情景复杂,一年才针对不同场景产生的xss漏洞,应该区分情景对待。

六、自动化测试

6.1、自动化测试概念

自动化测试,是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架,编写自动化测试脚本,来模拟手工测试过程。

通常情况下,引入自动化测试需要满足以下条件:

  • 项目需求变动不频繁
  • 项目周期足够长
  • 自动化测试脚本可重复使用

6.2、自动化测试流程

【软件测试】软件测试学习笔记(三)_第3张图片

  1. 分析测试需求
    测试需求其实就是测试目标,也可以看做是自动化测试的功能点。自动化测试是做不到100%覆盖率的,只有尽可能提高测试覆盖率。一条测试需求需要设计多个自动化测试用例,通过测试需求分析判定软件自动化测试要做到什么程度。

  2. 制定测试计划
    明确测试对象、测试目的、测试的项目内容、测试的方法。此外,要合理分配好测试人员的安排以及测试所需要的硬件、数据等资源。制定测试计划后可使用禅道等管理工具监管测试进度。

  3. 设计测试用例
    在设计测试用例时,要考虑到软件的真实使用环境,例如对于性能测试、安全测试,需要设计场景模拟真实环境以确保测试真实有效。

  4. 搭建测试环境
    自动化测试人员在用户设计工作开展的同时即可着手搭建测试环境。因为自动化测试的脚本编写需要录制页面控件、添加对象。测试环境的搭建,包括被测系统的部署,测试硬件的调用、测试工具的安装和设置、网络环境的布置等。

  5. 编写测试脚本
    根据自动化测试计划和测试用例编写自动化测试脚本。编写测试脚本要求测试人员掌握基本编程知识,并且需要和开发人员沟通交流,以便于对软件内部结构了解从而设计编写出有效的测试脚本。测试脚本编写完成之后需要对测试脚本进行反复测试,确保测试脚本的正确性。

  6. 分析测试结果、记录测试问题
    7建议测试人员每天抽出一定时间,对自动化测试结果进行分析,以便更早发现缺陷。如果软件缺陷真实存在,则要记录问题并提交给开发人员修复,如果不是系统缺陷,就检查自动化测试脚本或者测试环境。

  7. 跟踪测试Bug
    测试发现的Bug要记录到缺陷管理工具中去,以便定期跟踪处理。开发人员修复后,需要对问题执行回归测试,如果问题的修改方案与客户达成一致,但与原来的需求有偏离,那么在回归测试前,还需要对脚本进行必要的修改和调试。

6.3、自动化测试策略

【软件测试】软件测试学习笔记(三)_第4张图片

(1)单元测试
单元测试要求在开发中对每个功能模块(函数类方法)进行测试,如检测其中某一项功能是否按预期要求正常运行,单元测试中通常采用白盒测试,主要对代码内部逻辑结构进行测试。

(2)接口测试
接口测试要求对数据传输、数据库性能等进行测试,从而保证数据传输以及处理的完整性。接口功能的完整运作对整个项目功能扩展、升级与维护有着重要的作用,接口测试通常使用黑盒测试和白盒测试相结合的方式进行。

( 3)UI测试
UI测试以用户体验为主,软件的所有功能都是通过这一层展示给用户,因此UI测试的工作也很重要。由于UI界面以最终的用户体验为主,因此在UI测试中并不是100%的使用自动化测试,其中需要人工操作来确定UI界面的易用程度。

6.4、自动化测试的优势和劣势

优势:

  • 自动化测试具有一致性和重复性特点,而且测试更客观,提高了软件测试的准确度、精确度和可信任度。
  • 自动化测试可以将任务自动化,能够解放人力去做更重要的工作。
  • 自动化测试只需要部著好相业的切京,同文多小l文"i_数据交互、动态响应请求等要求,测试就可以在无人值守的状态下自动进行,并对测试结果进行分析反馈,手工测试很难实现复杂的测试。
    劣势∶
  • 相对手工测试,自动化测试对测试团队的技术有更高的要求。
  • 自动化测试无法完全替代人工测试找到Bug,也不能实现100%覆盖
  • 自动化测试脚本的开发需要花费较大的时间成本,错误的测试用例会导致资源的浪费和时间投入。
  • 产品的快速迭代,自动化测试脚本将不断迭代,时间成本很高。自动化测试能提高测试效率,却不能保证测试的有效性。
    【软件测试】软件测试学习笔记(三)_第5张图片

6.5、自动化测试常见技术

6.5.1、录制与回放

录制是指使用自动化测试工具对桌面应用程序或者是Web页面的某一项功能进行测试并记录操作过程。
录制过程会生成对应的脚本。

6.5.2、脚本测试

测试脚本是测试计算机程序执行的指令集合,脚本可以使用录制过程中生成的脚本,这些脚本一般由JavaScript.Python、Perl等语言生成。

6.5.2.1、线性脚本

线性脚本是指通过手动执行测试用例得到的脚本,包括基本的鼠标点击事件、页面选择、数据输入等操作,线性脚本可以完整的进行回放。

6.5.2.2、结构化脚本

结构化测试脚本在测试过程中具有逻辑顺序以及函数调用功能,如顺序执行、分支语句执行、循环等。结构化测试脚本可以灵活的测试各种复杂功能。

6.5.2.3、共亨脚本

在测试中,一个脚本可以调用其他脚本进行测试,这些被调用的脚本就是共享脚本,共享脚本可以史脚本被多个测试用例共享。

6.5.3、数据驱动测试

数据驱动模式实现了数据和脚本分离,相对于录制回放测试方法,数据驱动测试极大的提高了脚本利用率和可维护性但是对于界面变化较大的情景不适合数据驱动测试。

七、移动App测试

7.1、移动App测试概述

移动App特性:

  • 设备多样性
  • 网络多样性
  • 平台多样性

移动App测试与传统软件测试的区别

  • 页面布局不同
  • 使用场合不同
  • 输入方法不同
  • 操作方式不同

7.2、移动APP测试要点

7.2.1、UI测试

移动App的UI测试主要测试App界面(如窗口、菜单、对话框)布局、风格是否满足客户要求,文字表述是否简洁准确、页面是否美观、操作是否友好等。

  1. 界面布局
    界面布局合理且友好,符合用户习惯。
    列表型界面有滚动条。
    功能入口明显,容易找见。
  2. 图形测试
    图片大小合适,显示清晰。
    页面字体与风格一致。
    背景颜色和字体、图片颜色搭配得当,让用户视觉体验良好。
  3. 内容测试
    文字表达准确,符合App功能。
    文字没有错别字。
    文字用语简洁友好。

7.2.2、功能测试

  1. 切换测试
    后台切换:当并行运行多个程序时,在程序之间进行切换,要确保再次切换回来时App还保持在原来的页面上。
    删除进程︰测试从后台直接删除进程,当再次打开App时是否符合概要设计描述,同时测试删除进程时是否将App建立的会话一起删除。
    锁屏︰锁屏包括手动锁屏和自动锁屏,测试锁屏之后App响应是否符合概要设计的要求,例如再次打开时App还保持原来的页面可以继续使用,当锁屏达到一定时间后就自动退出程序。
  2. 推送测试
    在使用计算机时,经常会收到推送信息,这些推送有的是系统推送,有的是软件推送。在移动端,移动App也会推送,例如支付宝推送一个红包、今日头条推送实时热点新闻等,移动App的推送功能也需要进行测试,确保App推送及时,并且用户可以及时收到推送。

7.2.3、专项测试

移动App专项测试

  • 安装测试
  • 卸载测试
  • 升级测试
  • 交互性测试
  • 弱网测试
  • 耗电量测试
  1. 安装测试
    1). 移动App的安装渠道比较多,如谷歌应用商店、应用宝等,甚至可以通过扫码安装,对于多渠道的安装方式,在测试时每个渠道都要进行测试,以确保通过每个渠道都能正确安装软件。对于已经安装的软件,如果再次安装,要弹出已安装或更新提示,而不是产生冲突。
  2. 卸载测试
    1). 在卸载时,有卸载提示信息。
    2). App在卸载过程中是否支持取消卸载,如果支持取消卸载,要确保取消卸载的处理与App概要设计描述一致。
    3). 卸载软件的过程中如果出现意外情况,如死机
    4). 重启、电量耗尽关机等,要有相应的处理措施,如进行回滚,当再次开机时需要重新卸载;
    5). 中断卸载,当再次开机时继续卸载;启动后台进程守护卸载,当再次开机时提示卸载完成。
    6). 卸载过程要进行UI测试,例如给用户提供进度条提示。
    7). 卸载完成之后,App相应的安装文件是否要全部删除,应当给用户一个提示信息,提示相应文件全部删除或者让用户自己选择是否删除。
  3. 升级测试
    1).如果有新版本升级,打开软件时要有相应提示。
    2).升级包下载中断时要有相应处理措施,支持继续下载或者重新下载。
    3).App安装渠道有多种,相应的升级渠道也有多种,要对多渠道升级进行测试,确保每个渠道的升级都能顺利完成。
    4).测试不同操作系统版本时软件升级是否都能通过。
  4. 交互性测试
    移动设备大多具有电话、短信、蓝牙、手电筒等功能,在使用App时难免会受到干扰,例如使用App时,如果需要拨打/接听电话、启动蓝牙、相机、手电筒等,App要做好相应的处理措施,确保App不会产生功能性错误。
  5. 弱网测试
    移动App使用移动网络,移动网络的情况比较复杂,网络信号会受到环境的影响,容易发生网络不稳定的情况,而很多App的一些隐藏问题只有在复杂的网络环境下才会显现出来,例如正在使用的App遇到网络信号切换或变弱时,App不能响应或产生功能性错误,因此在测试时要特别对App进行弱网测试,及早发现问题。
  6. 耗电量测试
    移动设备电量一直是困扰用户的一个问题,同时也是移动设备发展的一个瓶颈,如果App架构设计不好,或者代码有缺陷,就可能导致电量消耗比较高,因此App耗电量测试也很重要。如果App耗电量较高,改进App使其在电量不足的情况下,让App释放掉
    部分性能以节省电量。

你可能感兴趣的:(笔记,学习,软件测试)