进阶篇—软件测试

本文详细介绍了软件测试的多种类型,包括界面测试、可靠性测试、容错性测试、文档测试、兼容性测试、易用性测试、安装卸载测试、安全性测试、性能测试和内存泄漏测试。同时,文章还讨论了黑盒测试、白盒测试和灰盒测试的区别,以及按照开发阶段的单元测试、集成测试、系统测试和验收测试的流程。此外,提到了静态测试、动态测试、手工测试和自动化测试的比较,以及软件国际化和本地化测试的重要性。
摘要由CSDN通过智能技术生成

1.按照测试对象划分

1.1界面测试(UI测试)

(1)界面是直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受
(2)测试内容:
保证界面和UI设计稿的一致性和正确性
②测试界面的每一个功能的正确性(从上到下,从左到右保证)
③界面的布局排版合理(字体大小,是否斜体,图片的布局排版,清晰程度等等)
④界面的控件功能是否正常(滚动条、按钮、CheckBox、文本框)
⑤要进行界面的不同分辨率的测试
⑥界面上的控件的有效状态高亮展示,无效状态置灰
⑦界面的自适应测试,页面从小到大,文字图片展示正常,功能展示全面,可以正常使用
⑧页面的状态(颜色,排版)和当下节日,实时结合
(3)同一个web页面不同的页面大小下测试:
①页面从小到大变化过程中衔接丝滑,让用户可以接受
②页面的字体,不模糊,不消失,不重影
③页面的图片不消失,排版布局合理
④页面的功能可以正常使用
(4)界面测试常见错误:
①不适合的快捷键:键盘不可以打印出来的
②文字丢失
③文字截断:显示不清楚,有遮挡
④文字没有对齐
⑤文字的自动换行
⑥文字重叠
⑦重复的快捷键

1.2可靠性测试

可靠性指系统正常运行的时间,一般使用百分比表示
(1)可靠性 = 正常使用的时间 / (正常运行实际 + 非正常运行时间)
(2)一般软件,可靠性要求99.99%;特殊软件,可靠性要求99.999%;非实时性软件的可靠性要求更低一点
(3)如何进行软件的可靠性测试:让软件运行一段时间,记录其正常运行时间和非正常运行时间,计算其可靠性
(4)软件可靠性的影响因素软件本身、外界因素(电、网络、硬件设备、软件系统)(不可控)

1.3容错性测试

(1)定义:系统因为自身或者外部一些异常的操作使得系统发生异常,系统能自我处理这种错误操作或者异常的能力
(2)容错性测试是检查软件在异常条件下自身是否具有防护性的措施或某种灾难性恢复的手段。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统
(3)测试内容:
数据级别:时间,日期等
校验级别:数字位数、大小下、空格、前后信息一致性的校验
界面级别:一些复杂的操作或者危险性较高的操作,会给用户提示信息(危险的按钮直接屏蔽,禁言)
环境级别:断电,断网,硬件设备处理问题了,是否可以无缝切换(让用户五感知)到备用服务用
(3)灾难恢复性测试:人为让系统发生故障,测试系统是否能够很快恢复稳定,恢复数据,不丢失用户的信息

1.4文档测试

(1)整个开发过程中产生的各种文档,需求文档,设计文档,功能文档,用户使用手册进行测试
(2)文档的正确性,一致性,专业术语,完整性
(3)文档和软件功能对比

1.5兼容性测试

(1)定义:兼容性主要是指软件之间能否很好的运做,会不会有影响、软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃
(2)平台的兼容性(web网页:各种浏览器,操作系统的兼容性;APP:不同系统iOS/Android,不同品牌,不同系统版本)
(3)软件本身兼容性:软件对本身功能前后的兼容性,比如开发的新功能不能影响老功能,也不能影响后续功能的开发
(4)软件对用户数据的兼容性:比如数据库中某一张表增加字段不能影响用户之前的数据存储
(5)软件对第三方软件的兼容性:不能影响其他软件的使用,如果和第三方软件有交互,数据要有兼容性

1.6易用性测试

(1)定义:易用性(Useability)是交互的适应性、功能性和有效性的集中体现,是用户使用软件的体验,也叫作用户体验测试
(2)必须符合标椎和规范:严重错误、警告、提示
(3)直观性:让用户直接看到自己期望的操作或者预期的结果
(4)灵活性:用户可以根据自己的习惯选择适合自己的操作方式(灵活性 == 复杂新)
(5)舒适性:让用户对自己的操作有感知,不产生焦虑情绪
(6)实用性

1.7安装卸载测试

(1)软件可以正常的安装和卸载
(2)安装更新
(3)安装软件是断网,断电,死机等正常情况下,软件的响应
(4)安装软件内存不足是否有提示
(5)卸载软件暂停,是否可以继续卸载
(6)卸载软件到一半,取消卸载,看软件是否可以继续使用
(7)卸载过程中异常情况的测试(断网、断电、死机等)
(8)卸载后软件的数据文件信息是否清理干净

1.8安全性测试

(1)防病毒,防黑客攻击
(2)xss注入,sql注入
(3)防爬虫

1.9性能测试

(1)内存泄漏
(2)资源瓶颈
(3)系统运行速度越来越慢
(4)系统运行受外界的影响越来越大
(5)死锁
(6)查询、加载信息速度很慢
(7)关注点:对资源利用进行的精确度量;对执行间隔;日志事件;相应时间;吞吐量(TPS)

1.10内存泄漏测试

(1)内存泄漏会导致系统运行越来越慢
(2)导致的原因:内存分配后没有回收;API函数使用不正确,无法回收;内存分配方式有问题,无法回收

2.按照是否查看代码划分

2.1黑盒测试

(1)定义:黑盒测试就是把被测试的软件当成一个黑盒子,不关心软件内部的实现,不关心代码的逻辑结构(相当于代码这一部分是看不见的),只关心输入输出是否符合预期
(2)好处:不用看代码;黑盒测试测试系统的功能,站在用户的角度使用功能,有利于培养用户思维;黑河测试的测试用例是按照需求设计的,不容易遗漏需求
(3)设计测试用例的方法:等价类、边界值、因果法、错误猜测法、场景法、正交法

2.2白盒测试

(1)定义:白盒测试是针对代码进行测试,分析和测试代码的逻辑和结构,实现的功能,看是否符合用户的需求
(2)语句覆盖、路径覆盖(if else;try catch finally;switch case )
(3)判定覆盖(true、false)、条件覆盖(a>1,a==1,a<1)、判定组合覆盖(trueAndFalse falseAndFalse trueAndTrue trueAndFalse)、条件组合覆盖(无穷尽,用等价类和边界值)、判定和条件组合覆盖
(4)白盒测试怎么去测试某一个单元模块:Java中采用Junit框架去进行单元测试(Junit是Java中的单元测试框架)

2.3灰盒测试

介于黑盒测试和白盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况

3.按照开发阶段划分

金字塔模型:界面测试(UI)、集成测试、单元测试
在这里插入图片描述
越往下测试效率越高,定位问题越容易,耦合性越低

3.1单元测试(JUnit主要完成)

(1)定义:针对软件组成最小的单元模块进行测试(类,方法),目的是检验软件基本组成单元的正确性
(2)测试阶段:编码前(TDD)(测试驱动开发:测试人员先写测试代码,空跑,开发人员根据异常写代码,知道测试用例代码通过),编码后
(3)测试对象:组成软件的最小单元模块
(4)测试方法:白盒测试
(5)测试人员:白盒测试工程师或者开发人员
(6)测试依据:详细设计文档(软件测试V模型)
(7)测试内容:模块的接口,局部数据的测试,边界测试,异常测试,路径测试

3.2集成测试

(1)定义:将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试
(2)测试阶段:单元测试后
(3)测试对象:集成测试
(4)测试方法:灰盒测试
(5)测试依据:概要设计文档(V模型)
(6)测试人员:黑盒测试工程师或者开发人员
(7)测试内容:整个模块功能的正确性,单元模块之间接口的正确性,全局数据结构测试,单个模块的缺陷对整个功能模块的影响,模块之间功能的冲突

3.3系统测试

(1)定义:当软件开发完成,系统的全面的对软件的功能进行测试
(2)测试阶段:集成测试之后
(3)测试对象:整个系统
(4)测试方法:黑盒测试
(5)测试人员:黑盒测试工程师或者开发人员
(6)测试依据:需要设计文档
(7)测试内容:系统的功能,界面,易用性,可靠性,容错性,可移植性,安全性,性能,兼容
(8)回归测试:当系统引入了新的代码的时候,要查看新的代码是否影响了旧的功能,进行回归测试(采用自动化测试)
(9)冒烟测试:正式测试之前,对软件的基本流程和核心功能进行测试,如果测试通过,才能同意测试(准入原则)
(10)回归测试和冒烟测试属于系统测试

3.4验收测试

(1)定义:软件上线之前的最后一道测试,有由用户或者产品经理发起
(2)测试阶段:系统测试后
(3)测试对象:集成测试
(4)测试方法:黑盒测试
(5)测试依据:用户需求(V模型)
(5)测试人员:甲方/产品方
(6)测试内容:同系统测试(包含一些文档,用户是用手册,功能设计文档)

4.按照实施组织区划分

4.1α测试

(1)指让用户或者除了开发和测试人员之外的公司内部人员到开发现场进行测试
(2)测试环境:开发环境
(3)α测试先于β测试之前

4.2β测试

(1)实际用户在实际使用环境下进行测试,不限时
(2)α测试和β测试的区别:测试环境不同;时间集中程度不一样;α测试先于β测试之前

4.3第三方

介于开发方和用户方间的组织的测试,第三方软件测试机构对软件进行测试,业界的标准和规范进行测试

5.按照是否运行划分

5.1静态测试

(1)不运行代码,分析代码的风格是否符合公司的标椎规范。分析代码的结构,逻辑,算法,方法的实现是否满足用户的需求

5.2动态测试

运行代码,执行测试用例,进行测试

6.按照是否手工划分

6.1手工测试

(1)手工执行测试用例,查看测试结果
(2)缺点:量大容易出错,查看测试结果
(3)优点:不可替代的,无法被自动化测试代替,手工测试的过程人为可控的,有利于做探索性测试

6.2自动化测试

(1)机器按照预先设定好的条件去执行测试用例,这些条件包括正常和异常的方面
(2)UI自动化、接口自动化、性能自动化
(3)实施的步骤:
①完成功能测试,版本基本稳定
②根据项目特性,选择适合项目的自动化工具,并搭建环境
③提取手工测试的测试用例转化为自动化测试的用例
④通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期
⑤生成自动测试报告
⑥持续改进,脚本优化
(4)不是所有的项目都适合自动化测试
(5)自动化的价值和意义:节省人力
(6)自动化脚本运行运用率越高,价值越高
(7)自动化不适合于项目不稳定,功能频繁变动的项目

7.按照地域划分

7.1软件国际化测试

软件国际化:开发软件的时候使用了一种工程技术,使得软件在使用不同国家的语言,风俗使用习惯的时候不用去改变软件的原码就可以做到

7.2软件本地化测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值