【软件测试】进阶篇

一.软件测试分类

测试金字塔模型
金字塔测试策略要求在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函数使用不正确,无法回收。

内存分配的方式有问题(无法回收)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值