15821122712 发表于 2018-12-28 11:06:56

软件测试面试一百问:1软件开发流程

在软件测试面试的时候总会遇到一些原本很熟悉却又不知道该怎么回答的问题,我们现在总结一下,也将原本很基础的只是简单的总结出来。
在说软件测试之前,我们要先了解一下当前的软件开发流程。
为什么要讲流程?毫无道理可言。
其实只有将流程梳理清楚了才会明白测试人员处的位置,才会明白测试人员的需要做些什么。
从2000年中国开始软件开发至今,也就短短的十多年,软件开发流程从最初的写出了代码,生成了功能才有了需求。
到现在需求,开发,测试,验收等等各个环节紧密咬合,真的用时很短。
不过目前市面上最常见的软件开发功能只有两个,敏捷和传统。
很多将软件开发流程分为六个环节,调研,需求分析,设计,开发,测试,运营,但是我觉得抛掉运营之后,将需求分析和需求设计化为一块也没有太大的异议。
因为很多公司分析和设计是一个岗位负责的。
我将传统的开发流程分为四个大的环节,每个环节都有专门的人员进行负责,我们简单的说一下,
第一:项目的启动阶段,负责人是产品经理,主要有市场调研,需求收集,然后将业务需求进行梳理,产品业务的流程图。
第二:需求分析阶段,负责人为SA,产品经理将需求提交开发部门,有开发部门是SA进行需求分析,将业务功能转化为SR需求文档。
有没有觉得SA很重要,其实很多公司不会单独的设置SA这个角色,大都是有一个系统的负责人来担任。因为SA不仅要熟悉系统,更要熟悉开发。
第三个阶段是开发阶段,负责人为:开发经理,项目的负责人对功能进行拆分之后分配到每个开发人员手中,进行编码。
这个过程听起来是不是很枯燥,但是这个是从无到有的过程,产品经理也好SA也好,都只是画了个饼而已,是开发将这个饼和面烤制而成的。
第四个阶段是测试阶段,负责人是测试,是不是觉得测试在整个流程中很不起眼,
本事就不起眼,软件测试在2005年之前是可以忽略不计的,你在使用一个系统或者软件的时候会说这个系统做的挺好的,或者是这个产品设计的挺有意义,,
会说这个软件测的还不错吗。当然不会,测试和开发都是很隐秘的工作。被很多的人忽视的工作。
各个大佬多次的重审开发和测试的重要性,其实他们脑子里还是认为会挣钱的才是重要的,
但是话说回来,软件测试不重要吗,
很重要。
不然我们为什么要学习他。

目前的互联网公司有不少的公司在使用敏捷开发流程,所以还是有必要将敏捷开发流程讲一下,虽然有点啰嗦,
敏捷的出现原因是因为信息技术的迅速发展,对软件开发的生产率提出了更高的要求,传统的开发模式已经无法满足市场的需求。
他出现了很多年,2000年左右就出现了,各位想下2000年的中国还处于最原始的软件起步阶段,要之何用。
在中国开始接受敏捷思维是在2010年之后。
敏捷开发定义不再多介绍,如果有不了解,可以百度一下。
我们这里与前面说的传统软件开发的流程拿来做一个统一的介绍。
传统软件开发流程分为四个部分,敏捷软件开发我们也分成四个模块来对照一下,
第一个环节项目启动,负责人是产品经理。
敏捷有一个显著的特点是拥抱变化。拥抱变化的意思是在上线前都是可以提出需求变更的。
传统的开发模式流程很长,为了保证版本质量,很多公司明确的要求在进入开发阶段之后就不再接受需求变更了。
这个明显的不同也就可以让敏捷流程中需求阶段有很大的灵活性。
不是说敏捷开发不需要提需求或者随便提需求,而是迭代。
产品经理根据需求优先级整理近期待做需求,并对需求评审,估算和排序,制定出这期迭代要完成的需求列表。
需要注意的是在需求确认时要考虑到需求变更,当需求有变更时,都需要走相应流程,有书面的文档及签字手续。
第二需求分析阶段,这个环境的负责人可以是SA,也可以说是架构师,SA要在每个迭代中将所有的特性分解为Story Card。
必须明确一点:每个Story可以视为一个独立的特性。每个Story应该可以在最多1个星期内完成开发,交付提前测试(Pre-Test)。
这个环节与传统模式不同点也是显而易见的,也对SA提出新的要求:细化,独立。
第三点的软件开发和第四点的测试要在一起写了,因为迭代的原因,开发人员需要每日构建,频繁的更新代码。势必会出现很多的问题。
这时候对测试人员的考验是自动化的覆盖率,为什么这么说呢,我们不可能更新了一次代码之后
另外敏捷开发的每个Story是可以独立进入测试阶段的。
传统模式是一个完整的需求开发完成之后才移交测试阶段,敏捷是一个story就可以移交给测试阶段。
看到没,一点一点的测试。
这时候必须要再插入介绍一个名词,测试驱动开发。Test-Driven Development,简称TDD。
基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。
很多人说TDD只是针对开发人员的,要求开发人员不仅仅开发,更要测试,重构。
对测试人员有什么要求,要懂代码,至少测试代码可以简单的写一写,通常测试代码通常是非常简单的,通常围绕着某个情况的正确性判断的几个语句,如果太复杂,就应该继续分解啦。
那么回过头来说这个测试脚本是谁来写的,谁来执行的,是开发人员。那么测试人员还需要懂什么代码。
开发人员写的测试代码至少对最基本的功能做测试,绝对不会有边界有分支,测试人员怎么保证代码覆盖。
你不懂代码全部靠猜吗?测试人员可以不参与单元测试,但是后面的集成测试和系统测试都是由测试人员来主动的。
对于代码和语言的必要性后续会在细说,这里不展开细说。

传统开发流程和敏捷开发孰优孰劣这样的问题最没有营养,目前敏捷在行业的占比能达到30%就已经是极度可观了。
我们说互联网金融在使用敏捷,也不是所有的互联网公司都在使用敏捷。
如同说it需要加班,也不是所有的it都需要加班一样。
每个公司采用合适的开发流程才是最重要的。
页: [1]
查看完整版本: 软件测试面试一百问:1软件开发流程