软件测试的目的和原则?
目的:验证软件有没有问题
原则:以客户为中心,遵循软件测试的规范,流程,标准和要求。
- 测试也不仅仅是为了找出错误,通过分析错误产生的原因,阶段及错误发生的趋势:
- 1.帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错,改进。
- 2.帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。
- 3.让开发人员知道错误的重灾区,加强自测。
- 4.让客户清楚我们专业的质量保证团队,可以向他们提交一份满意的答卷。
什么是需求?
软件需求是:把用户的要求可以转化为研发测试人员进行用例的编写的文档。
(1)用户解决问题或达到目标所需条件或权能(Capability)。
(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。
(3)一种反映上面(1)或(2)所述条件或权能的文档说明。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。
用户需求:甲方提出的需求,没甲方,就是终端用户使用产品时必须要完成的任务;满足用户的合理需求。
软件需求:(功能需求)描述开发人员必须实现的软件功能。
什么是bug?
凡是实现效果和需求不相符的都认为是BUG;
BUG的后果:用户流失,绩效雪崩。
BUG的处理:生产环境上的问题,要第一时间回滚,再慢慢定位。
BUG的态度:心存敬畏,莫害怕,干就是了!
有正确的规格需求说明书,但是结果与需求不一致。 ——缺陷
什么是测试用例?
测试用例是把一系列测试过程记录下来的集合,这组集合包括:测试环境,操作步骤,测试数据,预期结果等要素。
软件的生命周期?
软件的生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。可分为六个阶段:即需求分析,计划,设计,编码,测试,运行维护。
开发模型和测试模型?
开发模型:
1. 瀑布模型(Waterfall Model):
串行的;是所有其他模型的基础框架,瀑布模型的每一阶段都只执行一次,因此是线性顺序进行的软件开发模式。适合需求比较小的,稳定的项目。
优点: 强调开发的阶段性;
强调早期计划及需求调查;
强调产品测试。
缺点: 依赖于早期进行的唯一一次需求调查,不能适应需求的变化;
由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
风险到最后的测试阶段才显露,失去及早纠正的机会。
2. 螺旋模型(Spiral Model)
软件开发初期需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一,适用于那些规模庞大,复杂度高,风险大的项目。它的特点是:不允许有一段独立的测试时间和阶段,测试必须跟着开发的迭代而迭代。
优点: 强调严格的全过程风险管理;
强调各开发阶段的质量;
提供机会检讨项目是否有价值继续下去。
缺点: 引入非常严格的风险识别,风险分析和风险控制。
3. 增量,迭代:
增量能显著降低项目风险。增量开发模型鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的,可预测的方式驱动产品的开发。每一次的迭代都意味着可能有需求的更改,意味着测试需要频繁进行,测试人员需要与开发人员密切配合。 增量是逐块建造的概念;迭代是逐步求精的过程。
4. 敏捷:
敏捷模型的价值观:
个体与交互重于过程和工具;
可用的软件重于完备的文档;
客户协作重于合同谈判;
响应变化重于遵循计划。
敏捷模式强调团队!!!一个团队一般不超过10人。
敏捷开发模式里比较流行的一种方式是:scrum
scrum里面的角色有: product owner(产品经理),scrum master(项目经理)和team(研发团队)组成。
product owner(产品经理):负责整理user story,定义其商业价值,对其排序,制定发布计划,对产品负责。
scrum master(项目经理):负责召开各种会议,协调项目,为研发团队服务。
研发团队里则是拥有各种技能的成员。
迭代开发:将产品分为若干个小的迭代,每次迭代会产生一定的交付。
scrum的基本流程:1.产品负责人负责整理用户故事,形成product backlog;2.产品经理负责讲解用户故事,对其进行估算和排序,制定出这一期要完成的故事列表;3.项目团队对每一个故事进行任务分解,分解的标准是完成故事的所有任务,每个任务都有明确的负责人;4.项目经理召集站立会议,团队回答每天做了什么计划今天做什么,有什么问题;5.迭代结束后,演示成果,记录反馈;6.总结迭代,不足的要改正计划,下一次迭代继续改进,达到持续改进的效果。
敏捷中的测试: 轻文档and快速迭代:测试的任务是不断地找Bug,但是测试人员不能依赖文档和测试用例,更多的应该采用思维导图,探索性测试(设计和执行同步执行,根据测试结果不断调整测试计划),自动化测试。
软件测试模型:
1. 软件测试V模型:
左边是研发线,右边是测试线。
V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;
系统测试应该检测系统功能,性能的质量特性是否达到系统要求的指标;
验收测试确定软件的实现是否满足用户需要或合同的要求。
局限性:把测试作为编码后的一个阶段,未在需求阶段就进入测试。
2. 软件测试W模型:
一个研发V,一个测试V。
W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,测试与开发是并行关系。
W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。
W模型优点:有利于尽早地全面的发现问题。需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临困惑。
还有H模型和X模型,了解!
配置管理和软件测试:
什么是配置管理?
配置管理是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些被标示的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可塑性的过程。
实施软件配置管理的好处?
(1)能够对项目中的文档、代码等的变化进行有效管理。
(2)能够方便地重现某个文件的历史版本。
(3)能够重新编译某个历史版本,使维护工作变得容易。
(4)能够使异地多团队开发、并行开发成为现实。
(5)从公司级看,实行统一的配置管理流程可提高项目组间人员流动时的工作效率。