测试基础理论:
软件:计算机程序、程序所有的数据以及有关文档资料的集合。
应用软件架构:
1.C/S:client-server,要安装客户端才可以使用的服务,每次更新都需要更新服务端与客户端
2.B/S:browser-server,只需一个浏览器即可访问服务,更新时不需要中断服务
软件测试定义:使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试分类:
这里只挑几个比较难理解的说:
灰盒测试:看不到代码,但大概知道里面的实现逻辑,最典型的代表就是接口测试。
动态测试:把软件运行起来,进行测试。
兼容性测试:软件根第三方软件、系统版本等的兼容性测试
回归测试:开发修复bug后,测试除了要检查之外,还要对没有修改的模块进行测试,确保没有新的bug出现
冒烟测试:开发提测,先验证核心业务,通过以后再细化测试
探索性测试:依据测试人员的经验进行测试
α测试:用户来公司内测
β测试:公测,在真实用户现场进行测试
灰度测试:只升级部分服务器进行测试,收集用户反馈,没问题后再实现全部的版本更新。
A/B测试:区分用户,更新内容对一部分用户可见,并收集用户反馈,没问题后再全部升级。
软件的生命周期:
软件开始研制到最终废弃不用所经历的各个阶段。
常见的软件开发模型:
1.瀑布型生命周期模型
2.V模型
3.螺旋模型等
4.敏捷开发模型(重要)
一种以人为核心、快速迭代、循序渐进的开发方法。强调以人文本,专注于交付对客户有价值的软件,是一个用于开发和维持复杂产品的框架。就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
软件测试流程:
项目发布流程:
开发测试工作——测试通过——发邮件告知——验收测试通过——开发将最终测试版本打包——运维、运营、开发、产品——部署到生产环境上——测试最后验证一下——通过后上线
测试需求分析:
测试需求主要解决“测什么”的问题,一般来自需求规格说明书中的原始需求。
需求分析的主要目的是提取测试点,那么如何提取测试点呢?我自己总结一下:
1.先看这是个什么项目,基本核心和业务流程是什么
2.将项目细分成模块,具体分析
3.看功能模块之间的交互
4.看非功能:界面、易用性、兼容性、安全性、性能压力
测试用例的设计方法:
1.等价类划分法:
把所有程序的输入域划分为若干个子集合(等价类),然后从每一个等价类中选取少数具有代表性的数据作为测试的输入数据。
等价类分为有效等价类(正面,不报错)、无效等价类(负面,抛出错误)。
步骤:
1.分析需求,划分等价类
2.确定等价类后建立等价类表,列出所有划分出的等价类
3.再从划分的等价类中选择测试用例
2.边界值分析法
一般与等价类划分法一起使用,是对等价类划分法的一个补充。
步骤:
确定边界:选取刚好等于、刚好大于或刚好小于边界的测试数据。
3.场景法
通过场景描述的业务流程(流程图),也包括代码实现逻辑,设计用例来遍历场景(路径),验证软件系统功能的正确性。
注意点:1.要覆盖正常的路径
2.走每一个分支
3.当步骤出错回溯后,最好重走一遍正确的步骤
4.错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。
测试用例的编写:
什么是测试用例?为项目需求而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序是否满足客户需求。
测试用例八大要素:
用例编号 产品名-测试阶段-测试项-编号
测试项目 对应一个功能模块--子项目
测试标题 直接对测试点进行细化得出,输入内容+结果,同一功能模块标题不能重复
重要级别:高(核心功能)、中(次要)、低(界面等)
预置条件:需要满足一些前置条件,否则用例无法运行
测试数据:需要加工的输入信息,根据具体情况来设计
操作步骤:明确给出每个步骤的描述,执行人员可以根据该步骤完成操作
预期结果:根据预期结果比对实际结果,来判断被测对象是否符合需求。
用例评审:略
BUG:
bug定义:狭义是指软件程序的漏洞或缺陷;广义的概念还包括测试工程师或用户发现的软件可改进的细节(增强性、建议性)或与需求文档存在差异的功能实现。
bug的生命周期:
测试报告的编写:
测试报告的内容:
1引言
1.1项目背景
1.2参考资料
2.测试基本信息
2.1测试范围
2.2测试案例设计思路
3.测试结果及缺陷分析
3.1测试执行情况与记录
3.1.1测试组织
3.1.2测试时间
3.1.3冒烟情况
3.1.4测试用例设计
3.2缺陷分析
3.2.1按缺陷类型统计
3.2.2按严重程度统计
3.2.3按功能模块统计
3.2.4按测试阶段统计
4.测试结论与建议
4.1风险分析及建议
4.2测试结论
5.交付文档 -- 项目结束后交付的文档 -- 归档(测试报告、测试计划、测试用例、缺陷清单、需求文档等)
GIT(大略):
git:开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
github:全球最大的面向开源及私有软件项目的托管普通,免费注册并且可以免费托管开源代码。
gitlab:与github类似,也是属于第三方基于git开发的产品,不同的是,gitlab可以部署在自己的服务器上,代码数据都是掌握在自己手中,适合公司内部团队开发。
兼容性测试:
兼容性测试的主要内容:
1.软件与硬件平台之间的兼容性:系统(Win、Android、IOS)
2.软件与软件间的兼容性:软件对第三方软件的依赖
3.软件不同版本之间的兼容性
常见的浏览器内核:
1.IE内核-Trident
2.Safari、谷歌-Webkit内核
3.火狐-Gecko内核
4.Opera浏览器-Presto内核(已废弃)
选择浏览器做兼容性测试的原则:
1.用户指定哪个就测哪个
2.选取主流浏览器
怎么做兼容性测试?
1.测试内容:主要是页面格式、字体、、下拉框、输入框、复选框、按钮等检查
2.什么时候做兼容性测试?-- 功能测试的同时进行兼容性测试
两种测试思路:
(1)测试轮次测试:第一轮chrome 第二轮Firefox 第三轮IE等
(2)按照任务分配:在不同的功能模块测试采用不同的内核/浏览器