1、软件测试的定义
尽早的介入研发流程可以带来以下几个优势:
(1)熟悉、分析产品(PRD)的逻辑 ( 有助于减少测试或者开发工作过程中的发现的问题)
(2)新增产品功能是否对之前版本的功能有较大的影响
(3)如果觉得需求不合理应及时提出来 (如:设计文档写出设计一个斜方形的桌子,应该提出疑问)
(4)站在用户和程序的角度上觉得不好的地方(如:画图工具的界面可以随意放大缩小,需求文档上面没有写出,)
(5)进行PRD审核过程中有不理解或者不合理的地方及时提出。
2、软件测试的目的
(1)在测试执行过程中善于发现错误
(2)提高软件的质量和易用性,使用户使用方便
(3)一个好的测试用例是发现至今未被发现的问题
(4)一个好的测试是发现了未被发现的错误
3、软件测试的对象主要包括:程序,数据和文档,更多检查的是文档,文档满足了产品(PRD)的需求,包含了:UI界面,程序的内部交互,页面的提示信息等。
4、软件测试的原则
(1)测试应基于用户需求 (软件就是要按照用户的需求做的,如果没有按照需求做,做这个软件就没有任何意义,应站在用户的角度或者测试的角度来检查)
(2)做好软件测试计划是做好软件测试工作的关键(有一个好计划才能做出好的产品,才能保证软件的质量)
(3)应尽早的开始软件测试并不断进行软件测试( 可以提前发现出问题,从而有针对性的列出解决方案,能够降低软件的出错率和成本)
(4)测试前必须明确定义好产品的质量标准(没有一个质量标准就无法衡量软件的质量,对用户的使用的体验度就不好,达不到一个好的效果)
(5)避免测试自己的软件(自己检查自己的问题有时候是检查不出来的,这是一种心理学的感觉)
(6)应充分注意测试中的集群现象(每个程序员的代码水平不一样,对于代码基础好的可以用少量的时间检查,基础差的需要更多的检查问题,防止错误进行到下一步)
(7)必须检查每个实际输出结果(预期和输出有时候是不一样的,不能存在侥幸心理,自己觉得没有问题就不检查了,有时候这种问题就有可能发生)
(8)穷举测试是不可能的(有时候一个大型的项目,时间有限,必须按照项目的时间进行交付,达到好的效果,所以不能穷举测试)
(9)测试设计决定了测试的有效性和效率(一个好的测试设计可以大大提高工作的效率,减少不少时间,最终还能工作做到最好)
(10)注意保留测试设计和说明文档,并注意测试设计的可重用性(在一些已经发布上线的产品,如果出了什么问题,可以快速查找这些设计文档,找出问题的关键所在,有些文件可以重复使用)
5、软件测试的分类
单元测试:称unit Test,代码写完之后,对最小模块的代码进行测试,属于白盒测试。不同编程语言有对应的测试框架,如Java里面的Junit和TestNG框架,Pythou里面的Unit Test和Pytest测试框架(对类里面的代码或者函数进行测试)
集成测试:把单个模块聚集到一块,进行模块于模块之间功能性的的测试,黑盒测试盒白盒测试的结合
系统测试:将软件看成一个系统的测试,对功能、性能以及软硬件的环境进行进行测试,(黑盒和自动化测试)。测试内容:功能、性能、界面、可靠性、易用性、兼容性、安全性等。()
验收测试:验收测试是部署软件之前的最后一个测试操作,,是技术测试的最后一步,也成交付测试。
6、验收测试的流程:
互联网公司的验收流程:PRD→开发→测试→验收(产品经理或其他负责人)
外包公司的验收流程:PRD→开发→测试→验收(第三方/用户)