1.什么是软件测试
软件测试就是验证软件产品特性是否满足用户的需求
为什么要有测试
因为要保证软件的质量
软件测试的特点
软件测试只是一个样本实验,具有不可穷尽性
2.软件测试和开发的区别
①:工作内容不同
开发:通过不同的编程语言,最终作出软件
测试:写测试用例,执行,发送测试报告,编写自动化测试用例,开发相关的测试工具
②技能区别开发:技能掌握的深度
测试:技能掌握的广度
③发展前景
开发:初级->中级->高级->架构师->CTO
测试:初级->中级->高级->架构师->项目经理
3.软件测试和软件调试之间的区别
①角色
调试:开发自己调试
测试:测试+开发执行(通常情况下,黑盒测试由测试人员执行,部分白盒测试,系统测试是由开发人员执行)
②阶段:
调试:开发的时候才调试
测试:测试是伴随着软件的整个生命周期
③目的
调试:调试发现问题,解决问题
测试:发现问题
④手段
调试:debug,分析代码逻辑
测试:等价划分发,边界值法
4.优秀测试人员所具备的素质
①技能
测试用例的设计能力
编程能力(编写测试工具,自动化测试用例)
技术快速学习的能力(C语言,Python,Java)
业务快速学习的能力
②其他
良好的沟通能力
文字表达能力
抗压能力
责任感
5.测试的相关概念
5.1什么是需求
用户需求:也就是甲方提出的需求(总体目标)
软件需求(功能需求):会详细描述开发人员必须实现的软件功能
为什么用户需求不能直接作为工作依据?
①市场可行性
②技术可行性:做不了/投入人力成本太多
5.2为什么会有需求
那是因为生活中存在太多的问题 ,从而产生了不满意 ,而问题就是 “理想与现实的差距 ” ,那么人类会很自然地产生 “减少甚至消除这个差距 ”的愿望 ,这就产生了需求
5.3测试人员眼里的需求
就是要分析出用户需要的是什么功能,用户会怎样使用系统。以及这些功能,和系统实现那些模块.
5.4如何深入了解需求
参加需求会议
查阅文档
与客户讨论
6.测试用例
6.1什么是测试用例
测试用例是一组集合,包含测试环境,测试数据预期结果,操作步骤
6.2为什么要有测试用例
①测试用例提高了测试人员测试工作的重复性问题,解决了测什么和怎么测
②测试用例是建立自动化的基础,避免了用后即弃
6.3Bug
什么是Bug
①当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。
②当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
bug的等级
崩溃, 严重,一般,次要
bug的生命周期
发现BUG–>提交BUG–>指派BUG–>研发确认BUG–>研发去修复BUG–>回归验证BUG–>是否通过验证–>关闭BUG
软件开发的生命周期
软件生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。 如果把软件看成是有生命的事物,那么软件的生命周期可以分成6个阶段,即需求分析、计划、设计、编码、测试、运行维护
①需求分析:分析用户的需求是否是和你的(市场分析,技术上分析)----需求文档
②计划:确认需求要执行多久,什么时候开始,什么时候结束----计划文档
③设计:将需求细化成一个个任务,进行技术设计(设计那些接口,采用那些技术)----设计文档
④编码:开发人员按照需求文档以及设计文档进行编码
⑤测试:测试人员参考测试用例来执行测试 ⑥运行维护:项目上线之后进行线上的维护
( 修复性维护:对项目中未发现的问题进行修复.完善性维护:对功能进行完善 预防性维护:居安思危,预防手段)
开发模型
增量:
迭代:
敏捷(思想):
①个体与交互重于过程与工具—(面对面交流)
②可用的软件重于完备的文档—(文档开发文档)
③客户协助重于合同谈判
④响应变化重于遵循计划
⑤在对比中,我们看种前者
scrum三大角色
由产品经理,项目经理,研发团队组成
产品经理:负责整理用户故事,定义商业价值
研发经理:进行优先级划分,计算项目什么时候开始,什么时候结束,由谁去做
研发团队:
瀑布模型
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
优点: –强调开发的阶段性; –强调早期计划及需求调查; –强调产品测试。
缺点: –依赖于早期进行的唯一一次需求调查,不能适应需求的变化; –由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程; –风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。
瀑布模型的一个最大缺陷在于,可以运行的产品很迟才能被看到。这会给项目带来很大的风险,尤其是
集成的风险。
螺旋模型
在瀑布模型的基础上,每一个阶段都引入风险分析
使用场景:规模庞大,复杂度高,风险大的项目
优点:强调严格的全过程风险管理。 –强调各开发阶段的质量。 –提供机会检讨项目是否有价值继续下去。
缺点: –引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入
增量、迭代
增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发.
增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,
例如画一幅人物画,我们可以先画人的头部,再画身体,再画手脚……
而迭代是反复求精的概念,
同样是画人物画,我们可以采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
测试模型
V模型和W模型
V模型
1:用户需求 :PM将用户需求收集形成软件需求
2:需求分析和系统设计 : 验证需求是否准确,确定编程语言,确定框架
3:概要设计 : 项目结构如何设计
4:详细设计:每个接口,设计那些库表,设计那些任务
5:编码:写代码
6:单元测试 : Java中测试每一个方法
7: 集成测试 : 将许多方法集成到一起测试
8:系统测试 : 将整体进行一次测试,
9:验收测试 : 验收的人产品 / 运营
特点:
左边是开发,右边是测试
优点:
测试被划分成许多类型
缺点:
测试人员介入的太晚,发现问题时机太晚
双V模型-W模型
特点
开发一个V测试一个V
优点
测试人员尽早介入了需求
缺点
测试人员和开发人员一定程度上还是串行的,不能拥抱变化,不能适用于敏捷宣言