目录
- 调试和测试的区别
- 软件测试的概念
- 软件测试和软件开发的区别
- 优秀的测试人员应该具什么素质
- 为什么要做测试
- 软件的生命周期
- 什么是Bug
- 什么是需求
- 测试用例是什么
- 产品的生命周期
- 软件测试贯穿于软件的整个生命,如如何贯穿?
- 开发模型
- 瀑布模型(面向文档的软件开发模型)
- 螺旋模型
- 增量模型
- 敏捷模型
- 测试模型
- V模型
- W模型
调试和测试的区别
1.目的不同
测试的任务是发现程序中的缺陷;
调试的任务是定位并且解决程序中的问题。
2.参与角色不同
测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。
调试由开发人员完成。
3.执行的阶段不同
测试贯穿整个软件开发生命周期;
调试一般在开发阶段。
软件测试的概念
软件测试就是执行和运行软件的过程,其目的是为了发现软件功能和需求不相符合的地方,或者寻找实际输出和预期输出之间的差异。
软件测试和软件开发的区别
研发主要以编码为主,而测试以测试为主,开发为辅。
难易程度:开发广度小,专业度高。测试广度大,专业度低
工作环境:基本类似
薪水:中小企业总体比研发低,自动化等专业测试领域和研发基本无差距。大厂研发测试基本无差别
发展前景:自动化测试、安全测试等领域发展前景和研发基本一致。
繁忙程度:一般比研发轻松,但敏捷模式下差距不大,产品发布前压力比较大
技能要求:测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分析和理解,编程能力
优秀的测试人员应该具什么素质
答案包含但不限于以下几个方面:
- 思维模式
逆向思维:开发盖房子,测试拆房子。不走寻常路。
案例:手机中有两条通话记录,进行删除。删除为0后,继续删除。
发散性思维:探求多项答案
案例:测试一台自动售票机。正向,逆向,边界,压力,性能,耗电量,断电,外观,没零钱… - 兴趣
真的有兴趣么?而不是开发加班多,不想编码? - 性格特征
好奇心
成就感
敏感
不浮躁
善于怀疑
批判性思维:清楚–准确、切题–深刻,有意义,有逻辑性–公正、全面 - 能力
快速学习能力
沟通能力
文字能力
开发能力 - 责任感和压力
责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、bug数目的多少都无法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。
压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。
为什么要做测试
答案同优秀的测试人员应该具备的素质。
软件的生命周期
六个阶段:需求分析阶段,计划阶段,设计阶段,编码阶段,测试阶段,运行维护阶段。
什么是Bug
当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能和要求时,就是软件错误;
什么是需求
需求就是满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。
需求主要分为两种: 用户需求 和 软件需求
用户需求:可以理解为就是甲方提出需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。这种需求一般是比较简略的,并且用户需求是五花八门的
软件需求:也就是功能需求,详细描述了开发人员必须实现的软件功能
开发人员和测试人员的直接工作依据就是软件需求
用户的需求能否作为测试和开发的直接工作依据?
肯定是不能的,因为大多数的公司在进行软件开发时,是把用户需求转化为软件需求,这个过程依据,
比如技术是否可行,市场是否可行,成本投入和受益占比等多方面分析的
测试用例是什么
测试用例的存在就是要解决两个问题,测什么,怎么测
测试用例是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素
产品的生命周期
开发流程/软件的生命周期
产品的生命周期:需求分析—— 计划 —— 设计 —— 编码 —— 测试 —— 运行维护
需求分析:市场分析、技术上是否可行、成本和收益占比
计划:什么时候开始、什么时候结束、耗时多久
设计:将大的需求转变为一个个可具体执行的任务。进行开发设计(开发哪些接口、使用什么开发框架、使用什么技术)
编码:开发人员参考需求文档和技术文档等等来进行代码开发
测试:测试人员参考测试用例来设计
运行维护:
完善性维护:对功能进行完善
修复性维护:对项目中没有发现的问题要及时进行修复
预防性维护:为了避免产品在线上运行期间出现意想不到的问题,需要进行一些预防性的手段
软件测试贯穿于软件的整个生命,如如何贯穿?
软件测试的生命周期:需求分析 —— 测试计划 —— 测试设计与开发 —— 测试执行 —— 测试评估
- 需求分析:
用户角度思考问题:软件需求是否合理 技术角度思考问题:技术上是否可行,还是否有优化空间 测试角度思考问题:是否存在业务逻辑冗余/冲突
- 测试计划:什么时候开始测试、什么时候测试结束、耗时多久
- 测试设计与开发:写测试文档,明确标注使用到的测试方法,测试工具,测试形式,参考需求文档,技术文档等等编写测试用例
- 测试执行:充分利用测试用例和其他工具对项目尽可能做到全方面的覆盖测试
- 测试评估:评估产品是否存在其他的质量问题,功能演示
开发模型
瀑布模型(面向文档的软件开发模型)
场景:适用于需求稳定、明确的项目。 过程:需求分析、总体设计、详细设计、编码和调试、集成测试和系统测试。
特点:是一种严格遵循软件生命周期各个阶段的固定顺序的模型,每个阶段划分明确,都有固定文档或源程序流入下一个阶段。需求分析是一切活动的基础。缺点:
-
由于需求不可能精确、完整的描述整个系统,造成后期维护工作繁重,这些维护工作大多都是在修正需求分析阶段引入的缺陷。
-
难以适应变化,如果软件在后期出现需求变化,整个系统需要从头开始。
-
交付时间长,需要等到所有阶段都结束才能交付产品,导致客户无法尽快确定需求是否满足。
-
产生大量对客户无用的文档,确花费了大量人力,是一种重载过程。
螺旋模型
场景:项目规模庞大,复杂且高风险。 特点:是瀑布模型和演化模型的结合,并增加了风险分析(引入非常严格的风险识别、风险分析、风险控制),支持用户需求动态变化。 过程:需求定义、风险分析、工程实现、评审。
特点:螺旋模型中增加了风险分析和原型缺点:
- 项目中可能存在的风险性与风险管理人员的技能水平有直接关系
- 需要人员、资金、时间的增加和投入,可能会导致项目的成本太高
增量模型
场景:在系统的技术架构成熟、风险较低的时候采用。 特点:提前进行集成测试和系统测试,缩短初始版本的发布周期,提高用户对系统的可见度
敏捷模型
场景:适用于小规模软件或者小团队开发。 特点:是一种以人为核心、迭代、循序渐进的开发方法。
测试模型
V模型
W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分
别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。特点: 1.测试过程中存在的不同类型的测试 2.测试阶段的参考标准以前面对应阶段为准 缺点:测试后置
明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间
各阶段的对应关系V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功
能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同
的要求
局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试W模型
特点:W模型重流程、不能够迎接变化、W模型不适用于敏捷模型
局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,
上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复
杂多变的情况,W模型并不能解除测试管理面临着困惑。-