测试理论
作者:互联网
1、测试基础理论
1.1测试流程:
1. 软件测试官⽅的定义为:描述⼀种⽤来促进鉴定软件的正确性、完整性、安全性和质量的过程。 换句话说,软件测试是⼀种实际输出与预期输出之间的审核或者⽐较 过程 。
正确性:
1、一个软件的正常功能
2、一个软件的异常功能,也就是说的容错性 2.完整性;
1、需要验证(测试/考虑)到一个软件使用的各个方面(维度),它的标准就是考虑需要周全
2、既然是完整性那么也就需要考虑一个软件的正常的使用和异常情况下的容错的能力
3、本地化也是需要考虑到的(国际化)
软件测试流程:
1、评审需求文档
2、开发这边编写代码来实现需求,测试这边编写测试计划和测试用例
3、测试这边编写完测试用例后,进行测试用例的评审(评审参与人:产品经理,开发,测试,项目经理等)
4、开发完成后,进行转测,测试这边进行冒烟测试,冒烟测试通过后,进入到测试阶段
5、测试阶段测试完成后,准备产品的上线
1.2测试角色
项目经理:leader
产品:规划产品具体怎么做。
开发(后端开发、前端开发) :根据产品的规划依据代码来实现它。
测试:根据产品的需求文档以及开发转测的产品,来验证产品是否满足用户的需求。
设计:主要考虑的是页面的UI页面和交互。
1.3软件测试的定义
经典定义:在规定条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
1.3.1在规定条件下对程序进行操作
(1)有时间限制;
(2)需求边界(每一个版本的需求是有边界的,不能一蹴而就);
(3)必须参考的文档是需求设计文档。
1.3.2以发现程序错误
1、功能性的维度:验证程序是否符合产品经理设计的需求文档,功能是否实现;
2、非功能性的维度:
(1)验证程序员编写的代码逻辑;
(2)如果是web产品,需要考虑主流浏览器(Chrome&Firefox&IE)的兼容性测试;
(3)如果是APP产品,需要考虑主流移动平台(IOS&Android)兼容性测试。
1.3.3衡量软件质量(测试完成标准)
(1)新功能测试通过;
(2)系统已有功能测试通过;
(3)所有BUG已解决;
1.3.4并对其是否能满足设计要求进行评估的过程
(1)逻辑,UI设计,页面,页面交互都符合最初的设计。
1.4测试尽早参与研发流程的优势
一般软件测试的原则是期望测试能够尽早的介入到整体研发流程,尽早的进入可以带来这么几个优势,具体如下:
(1)今早的熟悉产品的需求以及产品PRD的设计文档以及产品逻辑;
(2)从敏捷角度而言,文档准确性以及文档的可用性也是需要测试被验证的之一(一般测试很少这样做);
(3)协助产品,站在用户的角度以及测试的角度来思考产品设计逻辑的合理性;
(4)尽早地介入可以更多的理清程序的逻辑;
(5)在具体到产品进行PRD评审的时候,能够尽快的进入到具体的逻辑和思考中,而不至于说之前不理解,可能一直游离在思考的阶段。
1.5软件测试目的
软件测试的目的是发现问题,发现至今未发现的问题,检查系统是否满足需求。软件测试的目的具体为:测试程序执行的过程,目的在于发现错误;一个好的测试用例在于能发现至今未发现的问
题;一个成功的测试是发现了至今未发现的错误测试。
在企业内部就是包含:UI的⻚⾯展示,程序内部的逻辑交互,页面提示信息,UI的页面布局展示,和色调等。
1.5.1 发现错误
(1)程序的具体逻辑;
(2)页面的交互验证;
(3)浏览器的兼容性验证;
(4)易用性的验证。
1.1.6测试的工作内容
(1)要求参与公司产品体系的所有流程和工作;
(2)参与到开发技术方案的评审和开发代码的评审;
(3)测试工作:编写测试用例,评审测试用例,测试具体的程序;
(4)上线后的产品质量监控。
1.7软件测试的10大原则
1.7.1测试应基于用户需求
被测试的产品是服务于用户的,是给用户赋能的。产品会收集用户的需求,需求评审后,大家就会达成一致的目标。
1.7.2做好软件测试计划是做好软件测试工作的关键
测试计划会明确规范每个时间点的工作内容和工作进度,以及工作安排、工作完成度。测试计划应包括:所测软件的功能,输⼊和输出,测试内容,各项测试的进度安排。
1.7.3应尽早的开始软件测试并不断地进行软件测试
(1)从产品经理发出需求开始,测试工作都已经进行了开展:树立需求点,梳理逻辑。
(2)产品上线后,需要持续跟踪产品的运行情况,如有设计不合理的,需要记录,到下个版本加入到需求里面。
1.7.4测试前必须明确定义好产品的质量标准
(1)会有质量标准,达到标准就可以上线,达不到就是不能。
(2)在设计测试用例的时候,要考虑到产品各个维度。
1.7.5避免测试自己的软件
场景:线上出现问题,程序员修改完成后,程序员自己进行了测试,同时反馈测试结果是ok的,那么测试还需要测试吗?需要的,因为程序员测试的不代表考虑到了所有的测试场景,必须需要测
试这边验证。程序员转测之后,测试一定要先进行冒烟测试。
1.7.6应充分注意测试中的集群现象
(1)尽可能地覆盖以及考虑到更多的场景,但是无法做到100%覆盖。
(2)测试需要持续不断的进行。
1.7.7必须检查每个实际输出结果
1.7.8穷举测试是不可能的
解决办法:由于时间和资源是有限的,所以优先考虑优先级高的业务场景来进行测试,优先级低的,可以在上线后,再进行测试。
1.7.9测试设计决定了测试的有效性和效率
(1)编写测试方案:测试的思路。
1.7.10注意保留测试设计和说明文档,并注意测试设计的可重用性
2、软件测试分类
2.1按阶段分类
2.1.1单元测试(unittest)
(1)定义:是针对程序最小离度的测试,他主要是应用于白盒测试。程序是由代码写的,代码里面的最小单位是方法或者函数,所以单元测试是针对方法或者函数的最小离度的测试。
(2)测试方法:白盒测试,根据不同编程语言有对应的测试框架,如Java里面的Junit和TestNG框架,Python里面的 UnitTest和Pytest测试框架。(主流编程语言:C,Python,Java,Go,Net)。
(3)测试内容:主要是程序内部逻辑、路径分支测试、局部数据结构测试等,单元测试测试参与的较少。
TDD(测试驱动开发)开发模式【Test-Driven Development】:先写测试的单元测试代码,后写程序代码。
2.1.2集成测试
(1)定义:是把单个模块的程序集成到一起后测试,集成测试主要来验证各个模块集成后模块与模块之间的功能性,以及各个模块集成后的功能流程性和逻辑兼容性的测试,集成测试主要应用
的技术是接口测试的技术。服务都是通过对外提供API(接口)进行交互的。
(2)现代版的集成测试包含两类:
A.现代企业都是前后端分离的模式,前后端各自完成工作后,需要联调来验证产品的完整性,即前端与后端之间进行联调。
B.后端与后端之间的联调。
C.公司程序员与第三方程序员之间的联调。
(3)测试方法:黑盒测试与白盒测试相结合,灰盒测试。
(4)测试对象:模块间的接口。
2.1.3系统测试
(1)定义:将软件看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段来验证被测程序的整体性的功能。
(2)系统测试
A.系统测试现在又称为端到端(end to end)的测试。
B.可以理解为产品的业务链,从开始至结束所有流程的验证测试 。
C.测试内容:功能、界面、可靠性(服务持续运行是否出现瘫痪)、易用性、性能、兼容性、安全性等。
(3)测试方法:黑盒测试,功能自动化测试。
(4)测试对象:整个系统(软件以及涉及到的硬件)。
(5)测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等。
2.1.4验收测试
(1)定义:验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。
(2)验收测试
A.自研公司:测试完成后,由测试发起——发邮件给产品经理,请产品经理来进行验收测试,产品经理验收测试通过后,发送邮件反馈测试——验收测试已通过,然后测试就可以开始产品上线 。
B.外包:外包验收是甲方(客户)来进行验收,要求客户参与。
标签:1.7,测试,验证,理论,产品,软件,软件测试 来源: https://www.cnblogs.com/wu199916/p/16443873.html