简述软件测试流程体系

软件测试是软件开发过程中贯穿整个软件生命周期的重要组成部分。

一、什么是软件测试

1、目的

        尽快尽早的发现软件产品中所存在的问题,与用户需求、预先定义的不一致性。

        基本目标就是发现软件产品中的错误,保障软件质量

2、依据

                             

  • 需求:
    明确产品规格说明书、详细的接口文档、定稿的UI设计图
  • 研发:
    功能实现逻辑(抽象),修改代码可能影响的范围
  • 用户:
    实际可能使用的场景、用户的类型(操作习惯、使用水平)
  • 经验:
    类似产品或功能测试经验参考,个人生活体验,脑补用户可行性、易用性(头脑风暴、探索性测试)

测试依据的详尽和明确,才能更好的覆盖到有可能发现问题的位置,优质的测试用例,在不浪费测试资源的情况下,尽可能多的发现Bug,提升测试效率。

3、用例设计方法

        测试技术相当于软件测试人员的武器,只有掌握了多种技术才能更好选择通过哪种方式去保障软件质量,用例设计方法就是测试技术最基本最核心的技术手段。

  • 等价类
    适用场景:测试资源有限,测试数据是无限的,按可拆分的类别选取有效和无效数据。
  • 边界值
    适用场景:在可划分的边界,选取有效数据和无效数据,发现缺陷的概率更高。
    以输入框取值1-100数字为例,
    类型;长度;取值范围;是否为空;是否重复;组成规则;其他条件限制;
  • 判定表
    适用场景:多个独立输入且相互之间没有前后依赖关系,有逻辑关系的组合;
    缺点:输入条件过多时,用例数呈指数增加
    以等腰、等边三角形判定为例,
  • 正交试验
    适用场景:当考虑维度较多且每个维度均有多个常量组合时,核心是用最少的用例对两两组合进行覆盖,压缩测试组合数(72->12),而非全组合覆盖测试。allpairs工具。
  • 流程分析法
    适用场景:针对多步操作,多个界面完成一个功能,主要用于有先后操作顺序的测试,不同操作会进入其他的流程分支。画出业务流程,用路径覆盖所有流程分支,每条路径即是一条用例。
  • 状态迁移法
    适用场景:可提取出,一个状态到若干个状态的转换,和需要的触发条件;状态迁移的路径即是用例。保证每一个状态的所有可达状态都覆盖到。
    例如缺陷管理流程。
  • 因果图
    适用场景:输入条件之间有大量的逻辑关系,影响着结果;需要依据需求分析画出因果图,结合判定表整理出测试用例。
    优点,高效的选择测试用例,还能分析出需求逻辑中的问题
  • 输入域覆盖
    在等价类、边界值的分析的基础之上深层次挖掘特殊值测试等其他情况。
  • 输出域覆盖
    针对输出可能得到的等价类、边界值,反推得到应该的输入。
    能保证所有的输出结果都被覆盖。
  • 异常分析法
    结合可能出现的场景,软硬件缺陷,极端情况(中断)、平台特性等引起的异常设计用例。
  • 错误猜测法
    根据个人经验
     

        掌握测试用例设计方法,面对不同产品功能时选取最适合的一种或几种方法组合在一起,从而在不产生大量冗余测试用例的前提下,多角度覆盖测试路径。项目周期紧张时也可选出最能够发现问题的用例设计方法。

4、核心公式

                                         

无论是需求分析,还是用例设计,各类产品功能都离不开这个核心公式,输入、处理、输出哪一部分都可以拿出来单独分析、用例设计,用例设计的起点是它,终点也是它。

5、软件质量

        一个实体的全部特性满足需求的程度  =  软件质量

质量模型可以从以下六大类、20子类分析,

   

功能性:提供满足用户功能的能力

  • 适合性,功能是否有用
  • 准确性,对不对
  • 保密安全性,安不安全

可靠性:出现特殊情况能否正常运行的能力

  • 成熟性,系统内部出现故障仍能正常运行的内部容错防范。
  • 容错性,系统外部出现故障仍能正常运行的外部容错防范。
  • 易恢复性,故障后数据恢复。

易用性:便捷的被理解、学习、使用

  • 易理解性,容易理解
  • 易学性,学习成本低
  • 易操作性,简单容易上手
  • 吸引性,产品特性和卖点

效率性:提供的性能

  • 时间特性,时间段速度快
  • 资源利用性,资源占用少(CPU、GPU、内存、磁盘、网络、带宽等)

可维护性:系统可被修改迭代的能力

  • 易分析性,快速分析定位问题
  • 易改变性,快速修复缺陷
  • 易测试性,快速回归验证缺陷
  • 稳定性,检验系统被修改后是否稳定

可移植性:不同环境的适应能力,迁移能力

  • 适应性(兼容性),适应不同平台
  • 易安装性,快速简洁安装或部署
  • 共存性,同一系统中安装相同类型的两套不同软件
  • 易替换性,同一系统中一个软件可以被相同功能的另一个软件替代

具体项目不同、阶段不同、客户对象不同,质量模型的侧重点就有所不同。

二、软件测试分类

1、按测试对象划分

                          

  • 黑盒测试
    也叫功能测试,检查软件功能是否与需求规格说明书一致,优点简单,缺点,非界面bug难以发现。
  • 白盒测试
    也称为结构测试,利用程序内部的逻辑结构及有关信息,通过在不同点检查程序状态,检验程序中每条路径是否都能按照预定要求进行工作。优点,能尽早的发现bug,能发现隐藏较深的问题,缺点,工作量和投入成本大,难度高。
  • 灰盒测试
    介于黑盒和白盒测试之间,通常用在集成测试阶段,关注于输出对于输入的准确性,也关注内部逻辑,但不像白盒测试那样详细完整。优点,可以准确定位bug,缺点,工作量和投入成本大。

白盒针对的是代码实现层面,灰盒更加侧重于模块之间,黑盒则更在于用户层面、产品设计。

2、按测试手段划分

                             

  • 功能测试
    优点,可以主动去发现新的bug;缺点,效率会受到各种影响(用例、经验、状态、持久度);适用范围,任何场景必做的。
  • 自动化测试
    优点,效率高,可重复使用的成本低;缺点,不能主动发现bug,只能按程序步骤验证;
    适用范围,功能稳定不易发生变更的场景,主要功能流程上
  • 性能测试
    优点,能够发现系统瓶颈;缺点,工作量投入成本大;
    适用范围,功能稳定且用户易频繁操作、访问的部分
  • 安全测试
    测试系统防止非法入侵的能力,各种攻击手段,如SQL注入、XSS(跨站脚本攻击)等
  • 兼容性测试
    检测系统与其他软件或硬件是否兼容,能否正确的高效率的工作
  • 安装测试
    测试程序的安装、卸载、更新。
  • 探索性测试
    可以说是一种测试思维技术,它没有具体的方法、工具,却是大多数测试人员应该掌握的一种测试思维技术。探索性强调测试人员的主管能动性,抛弃繁杂的测试计划和用例设计,强调在碰到问题时及时改变测试策略。发散性的、逆向的思维。
     
3、按测试阶段划分

               

  • 单元测试
    针对软件基本组成单元测试,验证符合《详细设计说明书》的程度,对应白盒测试
  • 集成测试
    针对基本单元组成的模块或功能,验证符合《概要设计说明书》的程度,对应接口测试
  • 冒烟测试
    对基本功能进行测试,保证基本的功能和流程畅通,通过则进行下一步测试,不通过开发返工
  • 系统测试
    针对集成好的软件系统,验证在实际运行中符合《需求规则说明书》的程度,对应黑盒测试
  • 回归测试
    验证缺陷得到了正确修复,同时对系统的变更没有影响到其他功能。
    有几种策略,完全重复回归测试,选择性重复回归测试(覆盖修改法、周边影响法),指标达成法
  • 验收测试
    让客户验收软件产品是否满足所有需求
  • α测试
    在开发环境下的验收测试,非正式的验收测试
  • β测试
    内测后的公测

三、缺陷管理

缺陷管理的意义,除了详细的描述复现步骤,还要让每一个bug都能得到处理,通过缺陷情况了解软件产品的质量情况(遗留问题),有一个合理的缺陷管理流程很重要,让项目人员参与进来更重要。

1、理想型的缺陷管理流程

2、ITS

同样重要的还有缺陷管理的工具 

ITS主要状态流程转换,

创建Issue(新建):分配(已分配)

已分配:重新分配,解决(分派给),反馈(分派给),关闭

反馈:重新分配,解决(分派给),分配(分派给),关闭

已解决:关闭,重启问题(反馈)

关联问题:需求的子需求,关联需求,关联的bug

                                                        

四、自动化测试

自动化测试一般是指使用工具或代码脱离手工的一种测试,可以细分为界面自动化测试、接口自动化测试,界面自动化又可以根据不同平台细分为,Web自动化测试,移动端自动化测试和PC应用自动化测试。

适合开展自动化的项目,要具有一些特点。

系统稳定,已上线运行并长期运行的项目,开发过程中需求变动较少,UI结构不频繁变动的项目。

1、自动化工具选取
  • QTP(Quick Test Professional)
    企业级的商业自动化测试工具,提供了强大易用的录制回放功能,同时兼容对象识别模式和图像识别模式,仅支持Windows平台下B/S、C/S应用。
  • Selenium
    一款应用于Web应用程序自动化的工具,当今Web自动化测试的首选。
    它是直接运行在浏览器上的测试,支持多种浏览器(IE、Chrome、Safari、FireFox、Opera)及不同版本,并对应不同的webdriver。
    WebDriver(C/S架构)用remote-server连接浏览器,等待client端请求并作出相应指令,并在http的响应中返回执行状态、返回值等。
    特点,免费,跨平台,支持多浏览器,支持多语言(Java、Python、Ruby、C#、JS、C++),几乎可以操作浏览器做任何事,支持录放,支持分布式。
  • Appium
    一款移动端自动化测试开源工具,支持IOS和Android平台,支持Java和Python语言,一套脚本可在IOS和Android上运行,它是一个C/S架构的服务,提供一套Restful接口。当收到客户端的连接后就会监听命令,然后再移动设备上执行这些命令,最后将执行结果放在HTTP响应中返还给客户端。
  • AirTest,网易推出的基于airtest图像识别和Poco对象识别,两个模式组合的UI自动化测试工具,组合的方式解决了前端UI对象识别不到和图像识别不准的问题。支持Windows、Android和IOS平台,基于Python语言开发,且有详细的文档和资源,免费
  • Minium,微信小程序自动化工具,官方推出的自动化框架,支持Python和JS。可直接调用小程序提供的测试自动化api,但目前问题较多,该工具维护升级较慢,社区资源有限,免费
2、测试框架
  • unittest,python自带的最基础单元测试框架
  • pytest,基于unittest开发,易用性好,信息更详细,插件众多
  • nose,基于unittest开发,易用性好,有许多插件
  • testNG,    Java测试框架
  • robot framework
    基于Python编写的自动化测试框架,具备良好的扩展性,有界面,使用关键字驱动,支持多种类型的客户端和接口,可进行分布式测试。

优缺点对比

项目支持unittestpytestnoserobot framework
用例需继承test开头即可test开头即可robot格式
执行自己写pytestnosetests pybot
跳过用例支持支持多种支持
Fixtures支持灵活支持(多种作用域及参数)支持支持
标签支持灵活支持)支持支持
超时自己写支持支持支持
参数化结合ddt支持结合ddt支持
采集用例支持支持
失败重跑支持支持支持
并发改造协程pytest-xdist分发命令行命令行
Seleniumpytest-selenium支持

 总体来说,

unittest比较基础,方便二次开发,适合高手使用;

pytest/nose,更加方便快捷,效率更高,灵活性强;

robot framework,有界面易用性更好,灵活性和可定制性略差。

五、性能测试

性能测试是一种对软件、系统或设备的性能进行评估的方法。与其他测试不同,性能测试的目的不是检查功能是否正常,而是评估它们在高负载或高压力下的表现。通过这种测试,我们可以了解系统性能、稳定性和可靠性,以及在面对不同负载条件时的表现。

1、类型
  • 负载测试,通过逐步增加系统负荷,测试系统的性能变化,并最终确定在满足性能指标的条件下,系统所能承受的最大负载。
  • 压力测试,模拟超过系统承受能力的负载,测试系统的性能变化,并最终确定在什么负载条件下系统处于失效状态,从而得出系统能承受的瓶颈。
  • 持久性测试,模拟最佳用户数持续负载,从而测试系统的长期可持续性,监控关键指标在持续使用中的变化。
  • 峰值测试,压力测试的子集,模拟终端用户突然大幅增加时的场景,以测试系统能否处理激增的压力负载,负载均衡或自动增加服务的策略是否生效。
  • 容量测试,模拟系统指定容量(数据库、带宽、连接数、缓冲池)下的,性能表现。
2、指标

服务端关键性能指标:

  • 负载用户数,参与性能测试中的虚拟用户数量。
  • 吞吐量,TPS,每秒事务数。
  • 响应时间,即发送请求开始,到收到服务器响应为止的时间。
  • 资源利用率,CPU、内存、磁盘、带宽等。

移动端核心性能指标:

  • 内存占用量
  • CPU使用率
  • 页面刷新帧率(FPS)
  • 网络状况
  • 流量消耗
  • 卡顿
  • 崩溃
  • 启动时间

移动端常见的性能问题,包括崩溃、网络请求失败或超时、响应速度慢、滚动卡顿、发热、耗电等。导致移动端性能低下的问题有很多,除去硬件的问题,大部分是错误的使用线程、锁、系统函数、编程范式、数据结构等等导致的。尽早的发现问题,可以在软件编码方面优化解决。

六、测试工具

1、网络请求协议
  • Fiddler
    免费的HTTP和HTTPS调试工具,提供了丰富的调试和分析功能。
    优点,易于使用,支持多种扩展,免费
    缺点,仅支持Windows系统,需要一定的理解和学习能力。 下载
  • WireShark
    免费开源的网络协议分析工具,可以捕获和分析网络数据包,支持多种网络协议解码。
    优点,免费开源,功能强大,支持多种协议解码,支持多平台(WIN、MAC、Linux),过滤器功能强大。
    缺点,学习成本较高。下载
  • Charles
    是一个HTTP代理服务器和反向代理服务器,可以捕获和分析HTTP和HTTPS流量,并提供了丰富的调试和分析功能。
    优点,易于安装,支持MAC、WIN和Linux等平台,功能丰富
    缺点,收费,价格高(免费试用30天,此后每次30min且启动10s延时)。 下载
  • HttpWatch
    专业的跨浏览器性能分析工具,它可以捕获和分析HTTP和HTTPS流量,并提供了丰富的性能分析和优化功能。
    优点,易于使用,支持多种浏览器,支持Win和MAC平台。
    缺点,收费,价格高。  下载
2、接口处理
  • Postman
    一款强大的调试HTTP接口工具,Chrome中最受欢迎的插件之一
    优点,基础版免费,界面简洁操作方便,跨平台,支持JavaScript。下载
  • SoapUI
    开源测试工具,通过SOAP/HTTP检查、调用、实现WebService功能/负载/符合性测试,提供了丰富的测试步骤(groovy脚本、数据库脚本、HTTP身份验证加密解密压缩等),内置了MockService方便服务器模拟。支持接口自动化测试和性能测试。
    优点,开源,跨平台,可调试SOAP协议(wsdl)和HTTP。 下载
3、性能测试
  • LoadRunner
    一款业界领先的性能测试工具,支持多种协议和技术,包括Web应用程序、数据库、ERP系统、移动应用程序等,并提供可视化的测试脚本编辑器、测试场景设计工具和分析报告等。
    优点,功能强大,丰富的报告分析,并发模拟能力强。
    缺点,收费,价格昂贵,学习成本高,较高的硬件要求,仅支持Windows平台。
  • Jmeter
    一款用于应用程序压力测试和性能测试的开源工具,也被广泛应用于接口测试。JMeter支持多种协议(REST、SOAP、HTTP、HTTPS、FTP、TCP等)
    优点,开源,支持多协议,丰富的插件支持,支持Java脚本
  • Gating
    基于Scala语言开发的性能测试工具,可以用于Web应用程序和WebSocket应用程序的负载测试。提供简单易用的DSL语言,编写测试用例,并提供实时统计数据和HTML报告。
    优点,性能高效,支持多种协议,报告强大,开源免费
    缺点,纯代码服务端工具无可视化界面,社区资源较少,文档不完善,部分功能不完善。
4、自动化测试
  • QTP(Quick Test Professional)
  • Selenium
  • Appium
  • AirTest
  • Minium
5、Android端
  • UIAutomator2,Android平台下的自动化测试框架,基本上支持安卓的所有事件操作。
  • Monkey,安卓自动化测试工具,发送随机事件。
  • MonkeyRunner,Monkey改进版,支持自己编写脚本测试,用Python语言。
  • Robotium,一款国外的Android自动化测试框架,基于Instrumentation框架,用法比较简单。
  • Espresso,google的开源自动化测试框架,规模小、简洁、api精确、代码简单,不能跨平台
  • Selendroid,基于Instrumentation框架,完全兼容Webdriver协议,支持原生、web和混合应用
6、IOS端
  • Instruments,IOS平台下的自动化测试框架。
  • UIAutomation,IOS平台下的自动化测试框架。
  • XCTest,IOS平台下的自动化测试框架,使用swift或Objective-c编写脚本。
  • libimobiledevice,一组开源的软件库和命令行工具,用于和苹果设备进行通信交互,可以在MacOS、Win和Linux系统上访问和管理IOS设备,应用程度的调试、安装、卸载等操作。
7、其他
  • AppScan,安全测试工具,指出应用漏洞和修复建议。
  • GT App,移动端App性能监测(CPU、内存、流量、电量、帧率/流畅度等),网络数据包抓取,App内部参数调试,真机代码耗时统计,Crash日志。--已停止维护
  • SoloPi,Android端App性能监测,实时录制&数据查看。
  • DevEco Testing, Android端 性能监测,下载地址https://devecotesting.huawei.com    需PC端辅助。
  • PerfDog,性能测试工具,支持多平台,内容丰富数据详细,收费软件。
  • VMOS Pro,Android端虚拟机软件
  • OBS,视频流模拟工具。
  • Snipaste,好用的截图贴图工具,辅助工具。

参考文献:

https://blog.csdn.net/m0_67696270/article/details/129190902

https://blog.csdn.net/yygg329405/article/details/106940171

《软件测试的艺术》

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值