软件测试设计——按类型划分
Posted 满眼*星辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试设计——按类型划分相关的知识,希望对你有一定的参考价值。
测试金字塔模型
- 从下到上三层,投入相同的时间,人力资源等,回报率(产出)越来越低
- 从下到上,测试效率越来越低
- 从下到上,定位问题越来越难
按照开发阶段划分
单元测试、集成测试、系统测试、验收测试
单元测试
测试阶段:编码前(TDD),编码后 (Test-Driven-Develop 测试驱动开发)
测试内容:
单元接口测试(按照接口设计文档,参数,输出),局部数据结构测试(局部变量),边界测试,路径测试,错误处理
单元测试框架:Junit
- 在pom文件加载依赖
- 在 file-settings-Plugins 搜索Junit
- 开始做单元测试
选中要测试类的类名,ctrl + shift + t ,create new test,选中jUnit4,选择什么方法
注解
@Test:测试此方法
@Ignore:忽略此方法
@Before:运行之前都会运行此方法【初始化】
@After:运行之后都会运行此方法【清理】
集成测试
按照一定的策略把单元模块组装起来
测试内容:API接口,模块之间数据的传输(输入输出,参数),模块之间功能的冲突,全局数据结构,每个模块的缺陷对整个功能的影响
系统测试
对被测试软件应用系统进行全面的系统的测试
测试内容:功能,界面,性能,安全性,兼容性,可靠性,可移植性
回归测试:当系统引入新代码的时候,进行回归测试
【出现新功能,修改BUG】
(大型系统,不停迭代,每次都要进行回归){自动化回归}
冒烟测试:在正式测试之前对系统的主要流程和核心功能进行测试【准入原则】
验收测试
验收测试不仅仅对系统进行全面测试,验收文档(开发文档,软件设计文档,需求分析文档,功能使用文档,用户使用手册)
按照实施组织划分
1. α测试
用户或者公司内非测试和非开发人员请到开发现场进行测试;
时间比较集中,在开发现场好沟通产品的问题;
是容易受开发环境的影响。
2. β测试
用户在实际使用环境下进行测试
用户测试的结果更接近于实际使用情况的反馈
α测试优先于β测试
3. 第三方测试
介于开发方和用户方间的组织的测试
按照是否运行划分
静态测试
不运行程序,根据需求规格说明书,软件设计文档,程序设计文档等结合程序(代码),查看代码的风格,语法,逻辑等是否符合要求
动态测试
写测试用例,运行系统(程序),执行测试用例
按照是否手工划分
手动测试
优点:灵活,发散性测试
缺点:量大容易出错
手工测试永远无法被替代
自动化测试
按照预设的条件去执行测试,收集测试结果,设置正常验证和异常验证
断言
UI界面自动化:selenium,unittest,ddt,htmlResultRepport
接口自动化:jmeter,postman
性能自动化:loaderrunner
自动化的前提:项目的功能要相对稳定
自动化的价值:脚本的重复使用率(利用率)越高,自动化越有价值
按照是否查看代码划分
黑盒测试
(系统测试,验收测试)
黑盒测试不关注程序内部具体的实现,只关注功能的输入和输出是否满足需求
黑盒测试设计测试用例的方法有哪些?
等价类,边界值,因果图,错误猜测法,正交法,场景法
白盒测试
(单元测试)
测试的时候关注内部程序的实现逻辑,结构,语法等。
白盒测试的方法有哪些?
语句覆盖法:每个语序要覆盖
循环覆盖法:while(i==1)
路径覆盖法:switch,if else
逻辑覆盖法:判定覆盖,条件覆盖,判定组合覆盖,条件组合覆盖
灰盒测试
(集成测试)
介于白盒和黑盒之间的测试
按照地域划分
本地化测试
前面所有的都是本地化测试
软件国际化
开发软件的时候使用一种工程技术,使得软件可以适用不同国家的语言,文化和风俗,可以不用修改源码,这种工程技术叫作软件国际化。
(word,苹果手机)
按照测试对象划分
业务测试
ATM机取款流程 - 取款业务
测试方法:场景法
面试题:作为一个职场新人,如何快速熟悉系统的业务?
软件设计文档:软件的功能
测试环境下走一遍系统的主要功能
界面测试
字体,图片,排版,各种控件(按钮、CheckBox、滚动条、文本输入框、等),按钮失效状态(置灰),有效(高亮状态),弹出框(警告框/确认框),是否有确认或者取消按钮
不同页面大小的界面测试 —— 即页面的自适应性测试
面试题:页面自适应测试都要测试哪一些方面?
- 在不同大小的页面上;
- 文字是否丢失、重叠、模糊
- 图片是否重叠、丢失
- 功能是否丢失并且是否可以正常使用
- 大小页面进行切换的时候,是否丝滑,不会出现内容或者瞬间展示出来
- 不同大小的页面展示是否严格按照UI设计稿来设计
容错性测试
因为外部环境或者人为操作不当导致系统发生一些异常情况,如果系统可以自我消化,并且不会把这些异常直接展示给客户,说明系统的容错性比较好。
数据级别:货币、日期、时间
效验级别:前后空格、前后信息是否一致(身份证、姓名等),验证码
界面级别:屏蔽一些有风险的操作;对输入信息有限制的,可以做成下拉框或者模糊匹配;对于一些有风险或者复杂的操作,可以给用户备注
环境级别:软件系统所在软硬件以及外部环境;网络、服务器、电
失效恢复测试
人为破坏软件系统,人为的修复能力
文档测试
术语、正确性、一致性、完整性
兼容性测试
Web系统
平台:Windows、Mac、Linux、Ubuntu
浏览器:Chrome、Firefox、IE、360、qq、搜狗、edge、Opera、Safar
浏览器的不同的市场上的主流版本。
APP测试、平板
不同手机不同的系统版本
android:华为,OPPO,vivo,小米,锤子,三星,魅族,一加
ios:苹果
不同的手机在不同市场上的主流版本
不同系统的主流版本
可以看出以上测试较为繁琐,所以适用于自动化测试:
软件向前或者向后的兼容性
软件对数据的兼容:历史数据,相关软件数据的兼容性,例如微信的历史消息
软件对其他相关软件的兼容性:淘宝 —— 支付宝
易用性(用户体验测试)
遵循光标规范;
信息提示;
直观性;
灵活性(九宫格、全键盘)
舒适性:上传,下载(进度条)
实用性
安全性测试
病毒,防黑客,SQL注入,XXS注入,放爬虫
上传下载的时候安全性测试要注意什么?
防止拦截,窃取;文件过大不会对系统产生损坏
性能测试
响应时间;事务(数据)相应时间;点击率;系统占用资源(CPU、内存、宽带、硬盘、GPU)
内存泄漏测试:
内存泄漏的原因:使用API函数方式不正确,内存无法挥手,写的函数有问题,造成内存无法回收
练习:微信红包功能测试用例
以上是关于软件测试设计——按类型划分的主要内容,如果未能解决你的问题,请参考以下文章