面试题:
软件测试要遵循的原则有哪些?
软件测试要遵循2/8原则是什么意思?
软件不存在缺陷是不可能的?为什么?
分享大纲:
01.什么是软件测试?
02.软件测试的目的(意义)是什么?
03.如何去做软件测试?
04.软件测试的过程中要遵循一些什么原则?
01.什么是软件测试?
软件测试的定义与原则
1. 简单定义软件测试:使用技术的手段,保障软件质量的过程。
2. IEEE定义(ISO/ IEC/ IEEE 29199)
定义:使用人工或者自动的手段来运行或者是测量软件系统的过程,以检验软件系统是否满足规定的要求,并且找出与预期结果之间的差异。
如何保证质量?从哪些角度来保证软件质量?
举例说明,我们去买一个某品牌(未打钱)的鞋子,我们要去考虑它的性价比,它的质量比较好价格比较低,我们就说它的性价比比较高。
那么从哪些方面判断质量好坏?
材料、设计款式、质感风格等多个角度判断,软件质量也一样。我们一般从六个角度。
做笔记面试要考:
软件质量:
功能性、效率、维护性、可靠性、易用性、可移植性
比如我们用QQ、微信,如何判断它质量是好还是不好?
功能:比如说微信我用的时候,我今天发不出信息、明天发不出图片、后天发不出语音。你觉得它的功能是好还是不好?
效率:我发语音,图标点了一分钟,然后才给我弹出语音的界面,效率就很低。
维护性:
可靠性:
易用性:从来没有用过微信的人,能不能快速的摸索到它的用法。
可移植性:电脑上能用,手机平板都能用。不同操作系统是否可用。
空白留给大家自行搜索学习,也可以在评论区留言探讨。
任何一个角度没有达到规定的要求,都可以判定为质量不是非常的好。
02.软件测试的目的(意义)是什么?
精简版:保障软件质量,提高软件质量,提高用户体验性。
官方客套版:
1.测试是完善程序的过程,目的在于使系统更加符合用户的使用习惯,让系统在上线后带给客户极高的用户体验。
2.测试应致力于发现至今为止未发现的错误。
3.从用户的角度出发,希望通过软件测试暴露软件中隐藏的错误和缺陷并减少软件上线后的问题,使得产品更容易被接受。
4.从软件开发者出发,希望测试成为证明产品中不存在错误、已正确的实现用户需求的过程。
在面试被问到的时候可以根据面试官的性格选择性回答,也不需要背诵,理解了就能够用自己的方式表达出来。燃烧秀发输出软件测试内容,有收获别忘了点赞支持!也欢迎评论区一起交流学习。
03.如何去做软件测试?
使用什么样的方式、手段,分为手工和自动化的方式。
手工方式:人工执行(测试工程师)去进行
自动化方式:通过工具或者代码执行
手工怎么做?自动化怎么执行?关注我,后续都会讲到。
04.软件测试的过程中要遵循一些什么原则?
1. 测试证明软件存在缺陷
2. 穷尽测试是不可能的
3. 测试尽早介入
4. 缺陷集群性(2/8原则)
5. 杀虫剂悖论(杀虫剂效用)
6. 测试活动依赖于测试内容
7. 不存在缺陷的谬论
都是前辈总结的经验性原则,前车之鉴后车之师。因为在之前没有遵循这些原则,导致了一些不良后果。就像是跟着阿沐一起来学习软件测试是一样的,做了很多年的软件测试,也做了多年的教学,也经常会和身边的同行一起交流分享,知道哪些地方有坑,哪些地方容易踩坑,从而在教学分享的过程中间分享给大家。踩过的坑,大家就千万不要再去踩了。
有兴趣的伙伴可以自行搜索出处,动手能力这就上来了。
我们都知道软件测试是保障软件质量的过程,不是指测试一次就完事儿,我们要测一次两次甚至更多次,反复的测试过程中间不断的来保证软件的质量,这样子的一个过程。
长时间的团队合作的一个过程,因此在这个过程中间我们想要尽可能的去提高它的质量。
划重点
1.测试证明软件存在缺陷
2.穷尽测试是不可能的
3.测试尽早介入
4.缺陷集群性(2/8原则)
5.杀虫剂悖论(杀虫剂效用)
6.测试活动依赖于测试内容
7.不存在缺陷的谬论
测试的过程只能证明软件是存在缺陷的,但是不能证明这个软件是不存在缺陷的。因为第二个原则穷尽测试是不可能的,第一个和第二个放在一起就很好理解。
给大家举个例子,去测试一个电脑的计算器,我让你把计算器上所有的功能都去测试一遍,仅仅是一个加法你都没法去穷尽测试,个位数字的相加,十位数的相加,百位数……在实际公司,时间个人精力都不允许。
因为不能做到穷尽测试,所以没测试到的地方就有可能存在缺陷。(1.2.7)
为什么测试要尽早的介入呢,简单的说就是保证软件质量,降低风险和成本。测试人员一般在需求阶段就开始介入,使缺陷在需求或设计阶段就被发现,缺陷发现越早,修复的成本就越小。比如我在看文档的时候,就发现了这个文档设计有问题,并提出来,这个时候成本是最低的。因为你设计还没有真正去实现,就不存在返工。越早介入,发现问题,修复的成本就越低。(3)
缺陷集群性表明小部分模块包含大部分的缺陷。软件测试中存在Pareto原则:80%的缺陷发现在20%的模块中。
一个功能模块发现的缺陷越高,那存在的未被发现的缺陷也越高,故发现的缺陷与未发现的缺陷成正比。
在项目实战中,在写缺陷报告的时候,做横向对比,比对类似功能,相近模块,版本,机型。指定回归测试策略的时候,也可以重点测试(4)二八原则,80%的经济掌握在20%的人手里。
一直用同一种测试思维、测试用例,流程中发现的Bug就会越来越少。在软件测试工作过程中,我们要尽量的更新测试用例,使用不同的测试思维来进行测试。在安排测试工作的时候,尽量避免同一个人一直做同一个业务的测试,尽量做到交叉测试。(5)
反复使用相同的杀虫剂会导致害虫对杀虫剂产生免疫而无法杀死害虫。软件测试也一样。如果一直使用相同的测试方法或手段,可能无法发现新的bug。
为了解决这个问题,测试用例应当定期修订和评审,增加新的或不同的测试用例帮助发现更多的缺陷。测试人员不能一直依赖于现有的测试技术,而要不断的提升测试方法以提高测试效率。
-------
根据业务的不同,软件测试内部也分为不同的行业,比如游戏行业、电商行业、金融行业。不同的行业,测试活动的开展都有所不同,比如测试技术、测试工具的选择,测试流程都不尽相同,所以软件测试的活动开展依赖于所测试的内容。
比如:你在金融公司测试,安全性就是第一位。电子商务测试,功能性则更加重要(6)
软件测试不仅是找出缺陷,同时也需要确认软件是否满足需求。如果开发出来的产品不满足用户的需求,即使找到和修复了缺陷也作用不大。
有可能99%没有bug的软件也是不能使用的。如果对错误的需求进行了彻底的测试,这种情况就发生了。(7)
客户的需求是深井,和设计师去描述。设计师就出了图纸,深度多深,用什么材料。但是施工的人把图纸拿反了,于是就造出了一个烟囱。客户验收的时候直接懵逼了。烟囱是好的,但不是客户的真正需求。
如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。
公众号:程序员阿沐
个人vx:Ceshirenzhuifeng(阿沐)
1.免费领取一份325页软件测试工程师面试宝典文档资料。
2.软件测试学习路线以及相对应的视频学习教程免费分享!
更多 | 学习资源 | 职业规划 | 等,欢迎私信留言。
心怀感激,对帮助过自己的人,给予真诚的回馈,记得把阿沐推给你的朋友。
点赞+在看+收藏,这个对我很重要。