软件概念:
狭义:实现某些功能的指令集合
广义:包括程序(代码)、文档和数据三个要素
软件分类
按照行业分类:金融行业、电信行业、互联网行业、电商等
软件测试的由来
由软件工程最先引入软件测试的概念
软件开发人员为何不再进行测试工作了?
开发人员测试,主观性太强,不能和可观的对软件进行测试喝评价
开发人员思维定势问题,对自己开发的软件太熟悉了,以至于很难从各种角度开展测试,软件测试就是从软件开发的刘晨中独立出来了
缺陷
**什么是缺陷:只要不符合需求要求的功能、性能等都是缺陷,也叫bug(臭虫,飞蛾)、defect。
**
缺陷的分类:
错误-开发人员在编写设计文档或者coding,由于失误而引人的错误
缺陷-文档或者代码完成之后,测试人员发现了由于错误而显示出来的问题,这个问题就被定义为缺陷,如果该缺陷暂时未被发现,则叫做隐形缺陷
失效-就是软件眉头实现它应该具备的功能,是由于隐形缺陷导致的
故障-由于隐形缺陷导致硬件出了问题,一般出现在用户场景
如何定义缺陷:
为实现产品需求规格说明书中定义的功能
软件中出现了需求规格说明书中明确不能出现的功能
没有明确提到,但是应该实现的功能(隐形功能),不是bug
没有明确提到,但是该功能也不是必须的,单方面加入该功能是bug
软件运行缓慢、性能不好或者用户体验不好也是bug,总之不满足需求或者超出需求的要求都是却吸纳,没有不存在的缺陷的软件,只有尚未发现的缺陷
软件测试的定义
狭义的定义:
正向:bill hetze博士提出,通过测试,建立对软件的信心,确认软件按照预期工作
反向:mysers博士提出,软件测试 的目的是为了验证软件是有的问题的,是为了发现软件中的缺陷而进行的活动
三个观点:
软件测试是为了测试软件是有问题的,而不是验证软件是没有问题的。
一个好的测试,是发现至今为止尚未发现过的缺陷的测试。
调试和测试的区别
调试:验真的过程,建设性的过程,一般开发来做。
测试:验错的过程,破坏性的过程(想法设法把软件高出问题来)一般是由测试来做得
广义的定义
软件测试贯彻整个软件开发生命周期、对软件产品进行验证及确认的所有过程,体现的是全面测试盒尽早测试的理念,验证的相对有限性和确认的无限性。
软件测试的目的
-
通过各种手段,发现软件中隐藏的错误或者缺陷,保证错误或者缺陷被修复,避免其带来的商业风险
-
软件测试过程中发现的问题、经验、教训,是需要汇总保留下来的,作为下一次测试的经验进行该项跟进,避免下一次再次出现该问题。
其实就是持续该进的思想
PDCA质量环(戴明环):认为软件测试的过程应该是一个环状的,而不应该是线性的
做软件测试要Plan–>DO—>Check–>Action—>Plan
1 p(plan)计划,包括方针和目标的确定,以及活动规划的制定。
. 2 D(do)执行根据已知的信息,设计具体的方法、方案和计划布局;再根据设计和布局,进行具体运作,实现计划中的内容。
3、C (Check) 检查,总结执行计划的结果,分清哪些对了,哪些错了,明确效果,找出问题
4、A(Action)处理,对总结检查的结果进行处理,对成功的经验加以肯定,并予以标准化;对于失败的教训也要总结,引起重视。对于没有解决的问题,应提交给下一个PDCA循环中去解决 -
采用高效的管理手段,不断提高测试的效率和保证软件的质量。
软件测试职业
整体认识上重开发而轻测试
软件开发完成后进行软件测试
软件测试是为了证明软件的正确性
软件发布后如果发现质量问题,那是软件测试人员的错
软件测试要求不高,随便找个人多都行
软件测试是软件开发的对头
软件测试是测试人员的事情,与程序员无关
项目进度吃紧时少做些测试,时间富裕时多做测试
软件测试是没有前途的工作,只有程序员才是软件高手
软件测试就是程序测试,测试发现了错误就说明是程序员编写的程序有问题
期望用测试自动化代替大部分人工劳动
所有软件缺陷都可以修复
认为软件测试文档不重要
期望短期通过增加软件测试投入,迅速达到零缺陷率
规范化软件测试是增加项目成本
(错误的是想)