1.什么是软件测试
软件测试是软件测试人员验证是否满足用户的需求。
2.软件测试和软件开发的区别?
(1)本身
开发:广度小,专业度高
测试:所需技能比较广泛,但专业度低
难易,薪资,工作环境,压力,责任
(2)软件测试和软件调试
目的:软件开发人员确保程序做了他想让程序实现的功能。
软件测试是测试人员确保程序实现了他应该实现的功能(用户需求)
角色:
测试:开发人员和测试人员共同完成
开发:开发人员
阶段:
软件测试贯穿了整个软件开发的生命周期。
软件开发:开发阶段。
3.什么是需求
用户的期望和满足合同(文档,规则,标准)的规定所需要的条件和权限。
用户需求和软件需求:
(1)软件需求是用户需求转化而来的,他是用户需求的细化,使用户需求的具体实现细节和规范。
(2)用户需求较粗略,之间实现会有困难,因为没有细节,所以需要软件需求把用户需求细节实现和规范,把用户需求变成一个具体的可实现的过程文档。
4.需求是软件测试的依据
验证需求,保证需求的正确可实现,细化需求,从需求中提炼出一个个的测试项。
以“用户登录”为例:

软件测试人员如何深入了解需求?
从需求分析阶段开始介入了解需求,站在用户需求角度。
5.测试用例:
测试用例就是向被测试的系统发起的一组集合,包含测试环境,测试数据,测试步骤,预期结果。
6.测试用例告诉我们测什么,怎么测?
优点:衡量需求的覆盖率;复用性,借鉴意义;可以用于回归测试;防止遗漏测试需求。
7.什么是BUG(软件错误)?
当前仅当,程序规格说明书(软件需求)存在并且合理,如果软件功能和软件规格说明书不相符合,我们就说是软件错误;当软件不存在,用户需求存在并且合理,软件功能和用户功能不相符合,说明是软件错误;
软件测试的阶段:整个软件的开发生命周期,续期阶段介入,验证需求的合理性和正确性。
8.开发模型(5个)
软件开发的生命周期:
需求分析——计划——开发——测试——运行维护
(1)瀑布模型
start --> 需求分析 --> 计划 --> 设计 --> 编码 --> 测试 --> End
特点:阶段性强,每一个阶段比较独立;看重前期的需求分析和后期的测试。
缺点:测试在编码后才开始介入,导致前期的问题后期才发现,会失去错误补救的机会。
(2)螺旋模型

适合于项目庞大,前期风险大,不是很明确的项目。
特点:强调每一个迭代的测试质量和风险分析。
缺点:风险管控人力物力投入很多,成本比较大。
(3)增量模型
同一个系统的四个模块A B C D两周
第一周开发A B功能模块
第二周开发C D功能模块
(4)迭代模型:
同一个系统的四个模块A B C D两周
第一周先开发A B C D的基础功能,
第二周在第一周的基础上完成其他的功能
特点:抗风险能力强。
(5)敏捷模型
特点:轻文档,轻流程,重目标,重产出。
scrum流程:

角色:
Po product owner,把用户需求转化成user story;
SM scrum master 项目经理,管理整个团队,负责敏捷流程顺利实施,各种会议;
ST scrum team,各种技能的人组成,开发,测试UI。
发布计划会议:产品经理收集需求形成userstory,讲解,排出本迭代需要进行开发的userstory形成sprint backlog;
迭代计划会议:分析用户故事,把userstory分解一个个的任务,分配开发人员,制定开发计划;
每日站会:昨天千了什么,遇到的问题,今天的计划;
产品演示会议:甲方,用户演示产品,PO把不足的地方收集成user story,下一次迭代改进;
回顾计划会议:回顾整个迭代过程,把不足的地方找出,在下一次迭代过程中改进,优化迭代流程。
9.测试模型
(1)V模型
特点:每个阶段独立性比较强,左边每个阶段是右边测试阶段的依据,和右边每个测试阶段一一对应。
瀑布模型变种(缺点)
缺点:编码后才进行测试,前期的错误后期才发现,会失去错误及时纠正的机会。

(2)W模型
双V模型
特点:每一个阶段独立性强,测试一开始就介入,可以保证前期的问题及时发现和纠正,测试和开发并行。
缺点:每一个阶段都是一个串行的过程,一个阶段完了之后就进行下一个阶段;不支持敏捷开发。
