加深
测试金字塔模型(开发阶段划分)
(1)从下到上三层测试,投入相同的时间,人力资源等,回报率(产出)越来越低
(2)从下到上,测试的效率越来越低
(3)从下到上,定位问题越来越难
单元测试
测试阶段:编码前(TDD),编码后 Test-Driven-Develop测试驱动开发
测试内容:单元接口测试(按照接口设计文档,参数,输出)
局部数据结构测试(局部变量),边界测试、路径测试(if else
switch)、错误处理测试( try catch throws)
测试步骤
集成测试
按照一定的策略把单元模块组装起来
测试内容:模块之间数据的传输(输入输出,参数),模块之间功能的冲突,全局数据结构,单个模块的缺陷对整个功能的影响;
系统测试(黑盒测试)
对被测试软件应用系统进行全面的系统的测试,
测试内容︰功能,界面,性能,安全性,兼容性,可靠性,可移植性等;(功能与非功能,非功能测试指的是在功能测试基础之上做的额外的要求)
回归测试和冒烟测试属于系统测试
回归测试:当系统引入新代码的时候,进行回归测试;(出现新功能,修改了BUG,使用回归)
迭代频繁,长期进行迭代开发的软件产品,自动化测试
冒烟测试在正式测试之前对系统的主要流程和核心功能进行测试
验收测试(黑盒)
验收测试不仅仅对系统进行全面测试,验收文档(开发文档,软件设计文档,需求分析文档,功能使用文档,用户使用手册)
按照实施组织区划分
(1)α测试
用户或者公司内非测试和非开发人员请到开发现场进行测试;时间比较集中,在开发现场好沟通产品的问题;
是容易受开发环境的影响
(2)β测试
用户在实际使用环境下进行测试
用户测试的结果更接近于实际使用情况的反馈α测试优先于β测试。
(3)第三方测试
非用户非测试人员,第三方机构
按照是否运行划分(运行代码)
静态测试
不运行程序,根据需求规格说明书,软件设计文档,程序设计文档等结合程序(代码),查看代码的风格,语法,逻辑等是否符合需求。
动态测试
写测试用例,运行系统(程序),执行测试用例
按照是否手工划分
手动测试
优点:灵活,发散性测试,
手工测试无法被替代
缺点:量大容易出错;
自动化测试︰
按照预设的条件去执行测试,收集测试结果,设置正常验证和异常验证断言
Ul界面自动化,selenium unittest ddt HTMLResultRepport
接口自动化 jmeter postman
性能自动化 loaderrunner
自动化的前提:项目的功能要相对稳定
自动化的价值:脚本的重复使用率(利用率)越高,自动化越有价值
按照是否查看代码划分
黑盒测试(包括:系统测试、验收测试)
黑盒测试不关注程序内部具体的实现,只关注功能的输入和输出是否满足需求;
黑盒测试设计测试用例的方法:
等价类、边界值、因果图、错误猜测法、正交法、场景法
白盒测试(单元测试)
测试的时候关注功能内部程序的实现逻辑,结构,语法等。
白盒测试的方法:
语句覆盖法,循环覆盖法,路径覆盖法,
逻辑覆盖法(包括:判定覆盖、条件覆盖、判定组合覆盖、条件组合覆盖)
灰盒测试(集成测试)
介于白盒和黑盒之间的测试
按照地域划分
软件国际化测试:开发软件的时候使用一种工程技术,使得软件可以适用不同国家的语言,文化和风俗习惯,可以不用修改源码,这种工程技术叫做软件国际化。
软件本地化测试
按照测试对象划分
业务测试:例如:ATM取款流程即是一个取款业务
界面测试
容错性测试
当系统因为外部环境或者人为的操作不当导致系统发生一些异常情况,如果系统可以自我消化,并且不把这些异常直接展示给客户,说明系统的容错性比较好。
数据级别:货币,日期,时间
校验级别:前后空格,前后信息是否一致(身份证号,姓名等),验证码
界面级别:屏蔽一些有风险的操作;对输入信息有限制的,可以做成下拉框或者模糊匹配;对于一些有风险或者复杂操作,可以给用户备注;
环境级别:软件系统所在的软硬件以及外部环境;网络,服务器,电
失效恢复性测试
系统在因某因素失效后恢复性测试(一般测试是认为破坏)
文档测试
术语,正确性,一致性,完整性
兼容性测试
用户体验测试
安全性测试
病毒,防黑客,SQL注入,XSS注入,防爬虫
sql注入例如:
上传,下载的时候安全性测试要注意什么?
防止拦截,窃取;文件过大不会对系统产生损坏
性能测试
速度快
响应时间
事务(数据库)响应时间
点击率(单位时间内向系统发送的个数)
系统占用资源CPU内存,宽带,硬盘,GPU等)
内存泄漏测试
内存泄漏的原因:
分配了内存,忘记回收
使用API函数方式不正确,内存无法回收
写的函数有问题,造成内存无法函数
测试流程
冒烟测试、系统测试、回归测试、交叉测试
下一篇