当前位置:网站首页>【软件测试】进阶篇
【软件测试】进阶篇
2022-08-02 14:14:00 【零雨z】
一.软件测试分类
测试金字塔模型
金字塔测试策略要求在3个不同级别进行自动化测试,具体如图所示:
(1)单元测试
单元测试要求在开发中对每个功能模块(函数、类方法)进行测试,如检测其中某一项功能是否按预期要求正常运行。单元测试中通常采用白盒测试,主要对代码内部逻辑结构进行测试。
(2)接口测试/集成测试
接口测试要求对数据传输、数据库性能等进行测试,从而保证数据传输以及处理的完整性。接口功能的完整运作对整个项目功能扩展、升级与维护有着重要的作用,接口测试通常使用黑盒测试和白盒测试相结合的方式进行。
(3)UI测试
UI测试以用户体验为主,软件的所有功能都是通过这一层展示给用户的,因此UI测试的工作也很重要。由于UI界面以最终的用户体验为主,因此在UI测试中并不是100%地使用自动化测试,其中需要人工操作来确定UI界面的易用程度。
金字塔模型特点:
A.从下到上三层测试,投入相同的时间和人力物力,回报产出率越来越低;
B.从下到上,测试的效率越来越低;
C.从下到上,定位问题越来越难
1.按照开发阶段划分测试
单元测试
单元测试根据编码前后介入分为编码前测试(TDD,Test-Driven-Develop,测试驱动开发)和编码后测试。单元主要测试内容:对单元接口进行测试(按照接口设计文档),属于白盒测试,对局部数据结构测试、边界测试、路径测试和错误处理测试。
单元测试工具:Junit
步骤:1.在pom.xml中导入Junit依赖 2.在file-setting-Plugins中搜索Juint并安装 3.进行单元测试,选中要测试类的类名,ctrl+shift+T,生成单元测试类。集成测试
按照一定的策略把单元模块组装起来测试内容:模块之间的数据传输(输入输出、参数),模块之间的功能冲突,全局数据结构,单个模块对整个功能的影响;
系统测试
对被测试软件应用系统进行全面的系统的测试
测试内容:功能、界面、性能、安全、兼容性、可靠性、可移植性等
回归测试:当系统引入新的功能或者修改了BUG时,需要进行回归测试;大型系统一般需要不停迭代,每次都要进行回归测试,采用自动化回归测试方法。
冒烟测试:在正式测试之前对系统的主要流程和核心功能进行测试。验收测试
验收测试不仅仅对系统进行全面测试,还要验收文档(开发文档、软件设计文档、需求分析文档、功能使用文档、用户使用手册等)。
2.按照实施组织划分
3.按照是否运行程序划分
静态测试
不运行程序,根据需求规格和说明文档结合代码,查看代码的风格,语法,逻辑是否符合要求。动态测试
写测试用例,运行系统程序,执行测试用例
4.按照是否手工划分
手工测试
优点:比较灵活,属于发散性的测试
缺点:测试用例数量比较大时,很容易出错。
手工测试无法被替代自动化测试
自动化测试:按照预设的条件去执行测试,收集测试的结果,设置正常验证和异常验证。
应用自动化测试前提:项目的功能相对稳定
自动化测试什么时候最有价值:当脚本的重复使用率较高,自动化就越有价值。自动化测试有:
UI界面自动化:selenium,unittest,ddt,HTMLResultRepport
接口自动化:jmeter postman
性能自动化:loaderrunner
5.按照是否查看代码划分
黑盒测试
黑盒测试不去关注程序内部具体怎么实现,只关注功能的输入和输出是否满足要求。黑盒测试设计测试用例的方法有:等价类、边界值、因果图、正交法、错误猜测法、场景法。
系统测试与验收测试属于黑盒测试范畴
白盒测试
白盒测试关注程序内部的实现逻辑,结构,语法。白盒测试有哪些方法:
语句覆盖法
循环覆盖法:while(x == true)
路径覆盖法:if/else switch
逻辑覆盖法:判定覆盖、条件覆盖、判定组合覆盖、条件组合覆盖单元测试属于白盒测试范畴
灰盒测试
灰盒测试介于白盒与黑盒测试之间。
集成测试属于灰盒测试范畴
6.按照地域划分
软件国际化:开发软件时使用的一种工程技术,使软件可以适用不同国家的语言,文化,不用修改源代码,这种技术就叫软件国际化。
按照测试对象划分(重点)
1.1界面测试
界面直接和用户交互的,界面设计的好坏决定了用户使用软件的直观感受。
UI测试:
保证界面和UI设计稿一致性,正确性。
测试界面每一个功能的正确性。(从上到下,从左到右)
界面的布局排版合理。字体大小,是否斜体,图片布局排版,清晰程度。
界面的控件功能是否正常,滚动条,按钮,CheckBox,文本框。
界面上控件的有效状态高亮展示,无效状态置灰;
页面的自适应测试,页面从小到大,文字图片展示正常,功能展示全面,可以正常使用。
页面的状态(颜色、排版)和当下节日,时事相结合。
要进行界面不同分辨率的测试。
同一个web页面不同页面大小下的测试:
页面从小到大变化过程中衔接丝滑,让用户可接受;
页面的字体不模糊不消失,不重影。
页面的图片不消失,排版布局合理。
页面功能可以正常使用。
界面测试常见的错误:
a.不适合的快捷键:
快捷键键盘可以打出来,打不出来的都是错误的
b.文字丢失
c.文字的截断(就是显示不清楚,有遮挡或者没有对齐)
d.文字的自动换行
e. 文字重叠
f.重复的快捷键
1.2可靠性测试
可靠性计算:正常运行时间 /(正常运行时间+非正常运行时间)
一般软件,可靠性要求99.99%,一年时间,软件出现故障的时间52min
特殊软件,比如军事系统99.999%,5min
如何进行软件可靠性测试?(按照公式去计算)
软件可靠性影响因素:软件本身,外界因素(电、网络、硬件设备、软件系统)
如果是因为硬件原因发生故障使得软件系统故障无法正常运行,这个时间是否计算到软件可控性里面?
应该计算,服务是整体的,有客户端和服务端,服务端出现问题用户无法正常使用,所以也得负责。不能单单看软件,而要考虑整体。
1.3容错性测试
容错性:系统因为自身或者外部的一些异常的操作使得系统发生异常,系统能够自我处理这种错操作或者异常的能力。(而用户感知不到)
容错性测试种类:
1.3.1数据级别:
人民币 0.09(软件本身避免去输入这样的数字),25时30分(采取选时间的做法),年月日 5月32日。1.3.2检验级别:
输入账号6-16位(最多只能输入16位,输入17位就输不进去了)大小的校验、空格的校验、前后信息一致性的校验。
查询信息前后空格系统会自动过滤。
1.3.3界面级别:
一些复杂的操作或者危险性较高的操作,会给用户提示信息;危险的按钮,直接屏蔽,或者禁用;1.3.4环境级别:断电、断网、硬件设备出问题了,要看是否可以无缝切换(让用户无感知到备用服务器)。
1.3.5灾难恢复性测试
人为让系统出现故障,测试系统是否能够很快的恢复稳定,不丢用户的信息。环境的恢复,用户数据的恢复,以及恢复的时间
1.4文档测试(了解)
整个开发过程中产生的各种文档,需求文档,设计文档,功能文档,用户使用手册进行测试
检查文档的正确性,一致性,专业术语,易用性(易看易读)、完整性。
文档和软件功能对比。
1.5兼容性测试
平台的兼容性
(web网页:各种浏览器的兼容性,以及浏览器所在的操作系统的兼容性;APP:不同的系统IOS/Android,不同品牌,不同的系统版本)软件本身版本的兼容性
指软件对本身功能前后的兼容性,比如开发的新功能不能影响老功能,也不能影响后续功能的开发。软件对于用户数据的兼容性:如:数据库中某一张表增加字段,不能影响用户之前数据的存储。
软件对第三方软件的兼容性
不能影响其他软件的使用;如果和第三方软件有交互,数据要有兼容性。比如:淘宝和支付宝。
1.6易用性测试(用户体验测试)
用户使用软件的体验,也称为用户体验测试
a.必须符合软件的标准和规范,如:严重错误提示红色、警告提示黄色
b.直观性(日历的设计)
让用户直接看到自己期望的操作,或者预期的结果。
c.灵活性(支持灵活性等价于复杂性)
用户可以根据自己的习惯选择适合自己的操作方式。手机上的键盘,九宫格,全键盘,手写,五笔。要在灵活性和复杂性之间找个平衡点。
d.舒适性
让用户对自己进行的操作有感知,不产生焦虑情绪。如:安装一个软件,进度条。
1.7安装卸载的测试
a.能正常的用不同的方式进行安装和卸载,应用app,命令行,软件包,第三方助手。
b.软件可以正常的安装和卸载功能。
c.软件更新、安装软件时断网断电死机等异常情况下,软件的响应。
d.安装软件内存不足是否有提示。
e.卸载软件暂停,是否可以继续卸载。
f.卸载软件到一般到一半,取消卸载,看软件是否可以正常使用。
g.卸载过程中的异常情况测试(断电、断网,死机等)。
h.卸载后软件的数据文件信息是否清理干净。
1.8安全测试
安全指信息安全,指网络和系统保护用户的数据,隐私不被侵犯和泄漏。
输入域安全性、防止邮件文件有携带病毒、防黑客攻击、xss注入、SQL注入、防爬虫、上传下载过程中的数据拦截。
对于上传和下载的安全性该如何测试?
1.9性能测试(暂时看一下)
常见的性能问题:
a.内存泄漏
b.资源瓶颈
c.系统原先速度越来越慢
d.系统运行受外界影响越来越大
e.死锁:(操作一个界面,卡住了,又可能就是死锁)
f.查询,加载信息速度很慢
g.TPS HTTP Per second 吞吐量、响应时间
1.10内存泄漏测试(可积累的错误)
内存泄漏会导致系统运行越来越慢。(不当的操作、有风险的操作导致内存越占越多,无法回收,导致内存泄漏)
内存分配后,没有回收(忘记回收)
API函数使用不正确,无法回收。
内存分配的方式有问题(无法回收)
边栏推荐
猜你喜欢
随机推荐
change the available bandwidth of tcp flow dynamically in mininet
许多代码……
OpenPose Basic Philosophy
VirtualLab Fusion中的可视化设置
剑指offer:数值的整数次方
shader入门精要3
Oauth2.0 安全性(以微信授权登陆为例)
富文本编辑
理解:野指针,空指针,失效指针。
移动拷贝构造函数
The relationship between base classes and derived classes [inheritance] / polymorphism and virtual functions / [inheritance and polymorphism] abstract classes and simple factories
戴森球计划这个游戏牛逼
IDEA 单元测试报错:Class not found
OpenPose 命令行说明
【软件测试】自动化测试selenium3
audio console无法连接到RPC服务
冷读123
Optisystem应用:光电检测器灵敏度建模
Server-Sent Events 一种轻量级的Push方式
TypeScript