测试理论
软件测试官方的定义为:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
尽早的界入到整体研发流程可以带来这么几个优势,具体如下:
1、尽早的熟悉产品的需求以及产品PRD的设计文档以及产品逻辑
2、从敏捷角度而言,文档准确性以及文档的可用性也是需要测试被验证的之一(一般测试很少这样做)
3、协助产品,站在用户的角度以及测试的角度来思考产品设计逻辑的合理性
4、尽早进入可以更多的理清程序的逻辑
5、在具体到产品进行PRD评审的时候,能够尽快的进入到具体的逻辑和思考中,而不至于说之前不理解,可能一直游离在思考的阶段
软件测试的目的是发现问题,发现至今未发现的问题,检查系统是否满足需求。
软件测试的目的具体为:测试程序执行的过程,目的在于发现错误
一个好的测试用例在于能发现至今未发现的问题
一个成功的测试是发现了至今未发现的错误的测试
软件测试原则:
1.基于用户需求
2.计划是做好软件测试的关键
3.应尽早开始并不断的进行软件测试
4.测试前必须明确定义好产品的质量标准
5.避免测试自己的软件
6,应充分注意测试的集群现象。
7.必须检查梅哥实际输出结果
8.穷举测试是不可能的
9.测试设计决定了测试的有效性和效率
10.注意保留测试设计和说明文档,并注意测试设计的可重用性。
软件测试的对象主要包含了:程序,数据,以及文档。在企业里面,更多核心检查的是程序是否满足产品PRD的需求,这些就包含了UI的页面展示,程序内部的逻辑交互,页面提示信息,UI的页面布局展示,和色调等。
软件测试的分类
按阶段
单元测试
测试依据:代码内部程序逻辑和开发注释
测试方法:白盒测试,根据不同编程语言有对应的测试框架,如Java里面的Junit和TestNG框架,Python里面的UnitTest和Pytest测试框架。
集成测试
测试方法:黑盒测试与白盒测试相结合,灰盒测试
测试内容:模块之间的数据传输,模块之间的功能冲突,模块组装功能正确性,全局数据结构,单模块缺陷对系统的影响。
系统测试
测试方法:黑盒测试、功能自动化测试
测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性
验收测试
按查看代码分类
黑盒测试:功能测试
被测试的对象看作一个黑色的盒子,看不到里面的内部结构。
白盒测试:代码测试,逻辑、路径分支的测试
灰盒测试:
懂代码,参与代码评审
按测试编写代码
手工测试:
自动化测试:UI自动化:selenium3
工具:PostMan,JMete
API(接口)自动化测试、
代码:requests
性能自动化测试:JMeter
软件质量:
功能性
易用性
可靠性
效率性
可维护性
可移植性
||:或者,&&:并且,++:自增,--:自增
软件分类:B/S:(web:APP(h5,APP)),C/S
架构:单体架构(整体----SOA-----分布式----SAAS-----Paas,微服务架构(积木),
SOA:面向服务
saas:software as a service 软件及服务
paas:platform as a service平台及服务
中间件 :redis,rabbitmq,kafka
测试术语
冒烟测试:是对测试的对象进行正常流程的测试验证,比如拿淘宝来说,正常业务流程就是:选择商品后可以支付下单,以及确认收货
探索性测试:强调测试人员的主观能动性抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变策略。
回归测试:对系统已有的功能进行测试。
为什么要需求分析
软件测试需求是设计用例的依据。
有助于保证测试的质量和进度
是衡量测试覆盖率的重要指标
测试需求相关方影响
开发约束
由于了解需求不明确,功能研发不合格导致很多BUG对于BUG反复修改,影响进度和团队情绪进度影响,很可能使公司产品失去市场先机
测试约束
与开发是相互制约的关系,如果不了解需求,会大部分时间都被开发牵着鼻子走不能及时发现开发的偏差,影响进度和团队情绪没办法保证测试质量
测试用例步骤:
拿到测试需求—>分析需求(画思维导图)-->编写用例—>划分用例优先级
测试用例编写特征:
一致性
覆盖率
可执行性
执行准确性
持续更新
复用性
测试用例组成元素:
用例ID:
用例名称:
测试目的:
测试级别:
参考信息:
测试环境:
前提条件:
测试步骤:
预期结果:
设计人员:
测试环境:QA
预发布环境:Stage
生产环境:online
等价类划分:
定义等价类是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例,该方法是一种重要的,常用的黑盒测试用例设计方法。
边界值分析法:
定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充 这种情况下,其测试用例来自等价类的边界。2.与等价划分的区别1)边界值分析不是从某等价类
Out of memory(oom)内存溢出
内存溢出:Jvisualvm也是jdk自带的可视化的JVM监控工具
因果图法
定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况
程序
1、1O密集型:存在大量的文件读写,会占用大量的内存资源,但是了CPU资源占用非常少
2、CPU的密集型:存在大量的计算型的业务逻辑,会占用大量的CPU资源,但是内存资源占用非常少
页面:
1、需要考虑不同输入框它的字段边界情况(如密码6-16),以及数据库里面的边界情况(字段的长度)
服务:
1、使用边界值的设计思想,来验证程序在最大化的情况下,程序是否可以正常的运行(比如上传文件来说,产品规定最多只能上传文件大小是1G,那么实际上传的文件大小为1.1G,服务是否可以正常的上传)
编写测试用例
1、编写的测试用例步骤非常清楚,通俗易懂,别人不了解业务的人都可以根据测试用例来进行执行
2、思维导图的模式
标题
前提条件
测试步骤
期望结果
Checklist:
1、职位关键字的搜索后,默认排序规则是按照时间显示最新的排序
2、每页显示15条的数据,大于15条的数据进行翻页,每页显示的数据不能重复
3、针对翻页的组件,我们需要考虑的是翻页组件的规则,默认显示1,2,3,
4,5,如果到第九页,那么就应该是点击5,下来规则就是5,6,7,8,9
方式:
1、很详细的一种方式
2、思维导图的模式
3,checkliste(时间紧,抓住重点,有代表性的)
先学习看别人用那种方式
错误推测法:非功能性测试用例
假设—>验证-->推导出结果。
以花瓣网为例,打开首页会加载图片,但是不可能一次性把所有全 部加载出来,所以这时就有可能会有加载不出来的情况。假设一个问题然后去验证。
对测试用例是怎么设计的?
1、功能性
2、非功能性
安全测试
性能测试
渗透测试
兼容性
判定表驱动分析方法
方法简介
1定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
2判定表的优点
能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。