目录
软件测试定义:
验证软件产品特性是否满足用户的需求
特点:
软件测试只是一个样本试验,具有不可穷尽性。
技能要求:
业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分 析和理解,编程能力
要求具备的素质:
综合能力:
1)沟通能力。测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力,是一个技术优秀的测是工程师是否可以获得更好发展的“敲门砖”。
2)快速学习的能力 对不同业务需求和功能的快速学习与理解能力。 对于测试新技术和新方法的学习能力。
3)开发能力 文字能力
4)掌握自动化测试技术
5)优秀的测试用例设计能力
6)探索性思维
7)有责任感和能承受一定的压力
软件测试与调试的区别:
目的不同:
-调试(Debug):确保程序做了程序员想它做的事情
-测试(Testing):确保程序解决了它该解决的问题
参与角色不同
-测试由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发 人员执行。
-调试由开发人员完成。
执行的阶段不同
–测试贯穿整个软件开发生命周期
-调试一般在开发阶段。
需求:
用户需求:
可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成 的任务。该需求一般比较简略。
软件需求:
或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。
小练习:从用户登录为例
要从用户登录的功能
用户登录的安全性
用户登录的兼容性
用户登录的性能 分析
测试用例:
测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环 境、操作步骤、测试数据、预期结果等要素。
软件错误(BUG):
当程序没有实现最终用户合理预期的功能需求时,就是软件错误
BUG的级别:
Blocker(崩溃):
阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错 误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单 功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。
Critical(严重):
系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他 功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用 冲突,安全问题、稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序 接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测 试)。
Major(一般):
功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询 时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多等(该问题实际测试中存在最 多)
Minor(次要):
界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格 式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置 不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测 试后期出现较少,应及时处理)
BUG的生命周期:
Rejected::如果认为不是Bug,则拒绝修改。
Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。
Closed:修改状态的Bug经测试人员的回归测试验证通过,则关闭Bug。
Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改
软件的生命周期:
需求分析 计划 设计 编码 测试 运行维护
模型:
瀑布模型:
优点:
强调开发的阶段性
强调早期计划及需求分析
强调产品测试
缺点:
依赖于早期唯一一次需求调查,不能适应需求的变化
由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程
风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会
螺旋模型:
它不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。
优点:
强调严格的全过程风险管理
强调各开发阶段的质量
提供机会探讨项目是否有价值继续下去
缺点:
引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高 的要求。这需要人员、资金和时间的投入
增量:
增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品 的开发。意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
和迭代的区别:
增量是逐块建造的概念,例如画一幅人物画,我 们可以先画人的头部,再画身体,再画手脚……
而迭代是反复求精的概念,同样是画人物画,我们可以 采用先画整体轮廓,再勾勒出基本雏形,再细化、着色。
scrum:
scrum是敏捷开发的一种方式
scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。
迭代开发:
scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4 周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交 付。
软件测试模型:
v模型(是瀑布模型的变种):
w模型(型由两个V字型模型组成):
W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需 求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度 和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系, 上一阶段完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复 杂多变的情况,W模型并不能解除测试管理面临着困惑。
软件测试的生命周期:
需求分析 测试计划 测试设计、测试开发 测试执行 测试评估
与开发人员产生争执如何做:
1、先检查自身,
是否bug描述不清楚 如果能正确地、高质量地录入一个Bug,那么基本上已经成功地与开发人员沟通了一大半的关于Bug的信息。但是总有“书难达意”的耐候,这时就需要测试人员主动与开发人员进行沟通了。 如果测试人员发 现在写完一个缺陷后,好像还有很多关于Bug的信息没有表达出来,或者很难用书面语言表达出来时, 就应该在提交Bug后,马上找相关的程序员解释刚才录入的Bug,确保程序员明白Bug描述的意思,而 不要等待开发人员找自己了解更多的信息。
2、站在用户角度考虑问题 应该让开发人员了解到Bug对用户可能造成的困扰,这样才能促使开发人员 更加积极地、高质量地修改Bug。在争执时,可以问一句:如果你是用户,你可以接受么?
3、BUG定级要有理有据 BUG定级时,不仅要参考BUG级别,还要考虑BUG是否会影响到流程,往往用户的BUG级别和我们的 是有区别的,需站在用户的角度定考虑定位级别。
4、提高自身的技术和业务水平. 不光要提出问题, 最好也能提出解决方案 提高自身的业务和技术水平,不但要做到能提出问题,还能够提出解决问题的思路。这样才能更让人信 服。 在工作中,你会发现同一个bug,资深测试工程师提出和初级测试工程师提出,两者的结果完全不同, 两者最大的差别是资深测试工程师往往会提出解决方案。而长此以往,权威性逐渐的建立起来,那么开 发人员看到bug的第一反应,就是这是一个bug,而不是这是一个bug吗?
5.开发人员不接受时,不要争吵 可能你已经经过了多轮沟通,但是开发人员仍然拒不接受。此时可以发起Bug评审。 Bug评审要注意的问题 缺陷的评审应该包括以下两个层面
● 决定如何处理Bug。
● 分析缺陷产生的原因,找出预防的对策。