面试题:软件测试 V 模型以及软件生命周期
我们今天来重点讲一下软件的开发以及软件测试过程中会经常用到的一些模型。
我们之前就以建房子来讲解了软件生命周期的几个阶段做类比。建房子的方式有很多种,农村建 2-3 层的住房,大都是建一层打一层顶,以此类推传统的方式。
城市里的住宅房,20-30 层,如果建一层打一层顶,每一层都要打很厚的水泥,装模干透都是要一定时间的,效率就低了。就选择把整体的框架先打好,每一层的梁以及顶都一次性打好,然后哪些地方要封砖块,要留门洞,再去施工,就可以大大的提高建设速度。
不同的方式,达到的结果都是一样,都可以把房子建好,都可以把软件做好。但是过程是不一样的,在这里的过程就可以理解成模型。
我们作为测试开发的模型做一个大概的了解即可,软件测试的模型需要掌握。
常见的软件开发模型
瀑布模型
快速原型模型
增量模型
迭代模型
螺旋模型
瀑布模型
对这个想深入了解的伙伴可以动手搜索各大网站都有很多相关的学习参考资料。我们重点来看一下软件测试模型。
软件测试模型
软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理。测试专家通过实践总结出了很多很好的测试模型。这些模型将测试活动进行了抽象,明确了测试与开发之间的关系,是测试管理的重要参考依据。
常见的软件测试模型包括:V 模型、W 模型、H 模型、X 模型和前置模型。(重点掌握前三个,因为 V、W 是非常经典的模型,也是我们笔试面试的时候考得最多的模型)
面试题:
画出 V 模型、W 模型,并说出它的优缺点
我们就需要知道什么是 V、W 模型,有什么优点以及局限性。
V 模型
瀑布模型的变种,把瀑布模型中的测试阶段和之前的分析设计阶段对应起来,即可得到 V 模型。
不要觉得我啰嗦,尽可能详细的举例,让更多的伙伴能够易学易用。(用心良苦,点个赞支持一下吧)
这个是我们瀑布模型,按照软件的生命周期是从上往下依次线性的。可行性研究通过之后,我们就开始制定项目计划,再进行需求的分析,编码-系统运行与维护。从上往下的一个过程,那么在这个里面的话呢,V 模型是什么意思?把测试阶段跟分析设计阶段进行了对应。
用户提出需求,然后进行需求分析和系统设计,概要设计-详细设计-编码,(需求分析和系统设计也好概要设计也好详细设计也好就是我们的设计阶段)
这也是之前和大家讲的,需求分析之后我们去做系统设计,设计之后就去做编码。
(软件生命中后期包括问题定义及规划、需求分析、系统设计、软件编程、软件测试、软件维护等阶段)
那么整个设计阶段就是有系统设计、概要设计、详细设计,编码也对应了软件编程。
在编码之后我们会去进行单元测试,单元测试我们会去参考详细的设计文档。单元测试之后进行集成测试,集成测试就跟概要设计的文档进行结合。系统测试就跟系统设计文档结合。验收测试参考的就是用户需求文档。
测试分为了单元、集成、系统确认、验收,这几个就是根据开发在编码的时候不同阶段对应的不同测试方法。
优点:非常明确地标明了测试过程中存在的不同级别,并且每个级别与分析设计阶段对应。每个测试阶段有明确的交付物。在小型软件中效果突出。(也就是说我们测试不是用同一个方法去测,不同的阶段用不同的方法,单元就是去测代码,集成就是去测接口,系统确认就是去测它的功能、界面、性能,验收就是全部都测)
局限性:过程要求严格,不灵活。测试阶段介入晚,如早期用户定义的需求错误要等到最后的验收测试才能发现。没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。(我们去进行单元测试的话,必须是等所有的设计完成并且是编码出来之后才能去进行单元测试,然后才能集成测试-系统-验收测试,就是这样的一个先后的关系,所以测试介入晚。)
那也就是意味着,在前期用户的需求在提出来的时候本来就有问题,或者说在看设计图纸我们明明就能发现它是有问题的,但是我们根本发现不了。而要到把这个软件做出来之后,在单元集成甚至更后阶段的测试才能够发现。
越往后阶段才发现,我们要返工的东西就越多,成本就会越大。
外包公司主要采取的就是 V 模型。因为你要做什么需求,根据你的需求把软件做出来,然后再进行一层层的测试、验收。如果你有新的需求又要我来做,加钱,谈好了之后,再给你去做设计、编码、测试、验收。(以此循环,因为外包公司就是按照你的需求你的业务来收费的)
如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。
公众号:程序员阿沐
评论