1、软件测试基础####################################################
什么是软件测试:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估。
软件测试的目的:以最少的人力、物力找到问题,从而修正问题提高软件质量,达到降低商业风险的目的。
软件测试的定义:使用人工和自动的手段来运行程序,目的在于检验是否满足了需求。
软件测试的原则:
- 所有测试都要追溯到用户需求
- 应当尽早和不断的测试
- 测试工作应该由独立的专业的软件测试人员完成
- 28原则,测试发现的错误中80%可能来源20%的新模块中。
- 设计测试用例时应该考虑各种情况。
- 对测试出的错误结果一定要有一个确认的过程(描述缺陷报告)
- 制定严格的测试计划
- 完全测试时不可能的,测试需要终止。
- 注意回归测试的关联性
- 妥善保存一切测试文档
软件质量模型(iso9126):
描述当前软件是否可用,在当前软件行业里我们所采用的一套标准是基于ISO组织制定的,需要记忆软件质量六大特性:
- 功能性:软件需要满足用户显示或隐示的功能
- 可靠性:软件必须实现需求当中指明的具体功能
- 易用性:软件易于学习和上手使用,即用户体验好。
- 可维持性:要求具有将某个功能修复之后继续使用的能力,软件更新
- 效率性:类似软件性能
- 可移植性:跨越不同系统平台
软件质量模型保证(SQA):
目的:使软件制作的过程对领导层可见。
定义:他是一套计划和方法来向领导层保证。
五个基本目标:
1.保证有计划的进行
2.保证遵循了步骤和需求
3.及时通知给对应人员
4.高管可以接触到项目内部
5.软件质量需要测试工作来完成
QC:检验产品的质量
QA:审计过程的质量
工作关系:qc进行质量控制,qa是确保qc按照步骤进行。
测试级别:
单元测试(UT):组成软件最小的底层代码结构,一般是类,函数,组件
集成测试(IT):即接口测试,将多个模块组合一起,验证沟通桥梁是否能正常工作
系统测试(ST):最常用,对软件主体功能进行测试
验收测试:
阿法alpha测试:内测,可能存在很多bug,不建议用户安装
贝塔beta测试:公测,面向所有用户,通过用户反馈爱去修改细节
嘎玛gama测试:候选版,与正式软件相差无几
系统测试分类:
功能测试:验证软件主体功能是否可用
兼容性测试:验证软件在不同环境下是否可用
安全测试:验证软件是否只是能授权用户提供功能使用
性能测试:相对于当前软件消耗资源,他的产出能力
测试的分类:(同测试级别)
按照开发阶段来划分:单元测试、集成测试、系统测试、验收测试。
- 单元测试:单元测试又称为模块测试,是针对软件设计的最小单位—程序模块进行正确性检验的测试工作。其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发展各模块内部可能存在的各种错误。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。
- 集成测试:集成测试也叫组装测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步成为符合概要设计要求的程序或整个系统。
- 系统测试:系统测试是再真实的系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、文件平台等)正确配置、连接,并最终满足用户的所有需求。
- 验收测试:是软件产品检验的最后一个环节,按照项目任务书或合同、供需双方约定的验收依据文档进行对整个系统的测试与评审,决定是否接收或拒绝系统。
常见系统测试方法:
按照是否覆盖源代码来划分:黑盒测试、白盒测试、灰盒测试。
- 黑盒测试:通过软件的外部表现来发现其缺陷和错误。黑盒测试法把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面处进行测试,它只是检查样序是否按照需求规格说明书的规定正常实现。
- 白盒测试:通过程序内部结构的分析、检查来寻找问题。白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试又称结构测试。
- 灰盒测试:介于白盒测试与黑盒测试之间的测试。灰盒测试关注输出对于输入的正确性;同时也关注内部表现,但这种关注并不像白盒测试那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。(接口测试)
按照代码是否运行来划分:静态测试、动态测试。
- 静态测试:指不实际运行被测对象,而只是静态地检查程序代码、界面或文档中可能存在错误的过程。
- 动态测试:指实际运行被测对象,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。所以我们判断一个测试属于动态测试还是静态测试,唯一的标准就是看是否运行程序。
按照是否自动化划分:
- 自动化测试:利用软件测试工具自动实现全部或部分测试,它是软件测试的一个重要组成部分,能完成许多手工测试无法实现或难以实现的测试;正确、合理的实施自动化测试,能够快速、全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件发布周期。
- 人工测试
按照软件特性来划分:功能测试、性能测试。
- 功能测试:是黑盒测试的一方面,它检查实际软件的功能是否符合用户的需求。
- 性能测试:功能的另一个指标,主要关注软件中的某一功能在指定的时间、空间条件下,是否使用正常。
- 回归测试:是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
- 冒烟测试:是指在对一个新版本进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。所以也叫可测性测试。
按照测试的实施单位来划分:开发方测试、用户测试、第三方测试。
测试的生命周期:接需求-听评审-写用例-评审用例-准备测试数据-提测之后-测试-测试完成- 发通过邮件-上线之后,做线上验证-发邮件通知完成。
测试流程:
需求分析
编写测试用例
评审测试用例
搭建测试环境(准备软件系统 )
等待开发提交测试包
部署测试包
冒烟测试(主体功能预测)
执行测试用例
BUG跟踪处理(提交及回归BUG)
N轮之后符合需求
版本上线
面向用户使用
测试计划:
测试方案:
测试策略:
测试用例的编写:
BUG的定义:
BUG(软件缺陷)的分类:
1、系统缺陷
2、数据缺陷
3、数据库缺陷
4、接口缺陷
5、功能缺陷
6、安全性缺陷
7、兼容性缺陷
8、性能缺陷
9、界面缺陷
10、建议
BUG(软件缺陷)的状态:
1、提交—测试人员提交缺陷给开发人员
2、打开—待处理
3、拒绝—程序员认为不是缺陷或重复,就可修改为拒绝
4、修复—程序员修改缺陷后的状态
5、关闭—测试人员经过回归测试后,认为此缺陷已经解决,将其关闭
6、推迟—可以放在后续版本解决的问题,但是要详细写出修复的日期或版本
BUG的六要素:
BUG的生命周期:
测试和开发流程的关系、
瀑布流(模式):需求分析-设计-编码-实现-软件测试-完成-维护
V模型:
需求分析 验收测试
概要设计 系统测试
详细设计 集成测试
编码 单元测试
W字型(双V):
螺旋型、
敏捷
戴明环、5W2H等分析管理的方法
质量管理体系CMMI(了解)
———————————————————————————————————
第二阶段 工具学习
- 接口测试工具:postman
- 抓包工具:fiddler
- 数据库管理工具:Navicat
- 项目/BUG管理工具:禅道、QC
- 性能测试工具:loadrunner、jmeter。
以上的这些工具都是纯图形化的,很好掌握,估计就性能测试工具稍微会费点时间。
loadrunner11下载地址:
链接:https://pan.baidu.com/s/1eS2ciFg 密码:6ahk
jmeter下载地址:
链接:https://pan.baidu.com/s/1nvzgd0d 密码:ptza
其他的工具你们直接去对应的官网下在就行了。
工具的部分教程:
loadrunner入门:https://www.imooc.com/learn/714
jmeter入门:https://www.imooc.com/learn/735
fiddle和postman入门:https://www.imooc.com/learn/738
Fiddler Charles jmeter postman xshell Navicat