测试基础知识

1.基础篇
1.1测试与调试的区别:
目的不同
–测试的任务是发现程序中的缺陷(不需要找bug);调试的任务是定位并且解决程序中的问题。
参与角色不同
–测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开
发人员执行。调试由开发人员完成。
执行的阶段不同
–测试贯穿整个软件开发生命周期,调试一般在开发阶段。
1.2项目性测试和职能性:(在一个项目中)
项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密协作,一般是从头到尾跟着项目走。当然,也有些项目是到了中后期才考虑把测试人员加入到项目中。这种类型的测试组织一般不会有测试组长,测试的管理由项目的主管或项目经理负责。优点:参与性强
职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。
在这种结构中,一个测试人员有可能不仅仅测试一个项目的产品,可能会同时测试多个项目的产品。测试人员也可能不是长期稳定地从头到尾参与一个项目。优点:并且能节省部分测试资源,充分利用各个项目阶段之间的时间差来合理利用测试资源;但是也不可避免地存在一些问题,对项目不够深入,测试的问题比较表面。
软件测试的目的和原则
目的:验证软件有或没有问题。
原则:以客户为中心,遵循软件测试的规范、流程、标准和要求
测试并不仅仅是为了找出错误。通过分析错误产生的原因、阶段及错误发生的趋势。一、帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错、改进。二、帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。三、让开发人员知道错误产生的重灾区,加强自测试,四、让客户清楚我们专业的质
什么是需求:满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。
软件需求:标准IEEE定义:软件需求是 (1)用户解决问题或达到目标所需条件或权能(Capability)。 (2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。 (3)一种反映上面(1)或(2)所述条件或权能的文档说明。它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。简单来说,也叫功能需求,该需求会详细描述开发人员必须实现的软件功能。是测试人员进行测试工作的基本依据。
用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。用户需求可以通过沟通变为软件需求。
软件错误的一般定义:①当且仅当规格说明死存在且正确的,程序与规格说明之间不匹配。
②当没有需求规格说明书时,判断以最终的用户合理预期为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。
测试用例:
定义:测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
可能遇到的问题:不知道测试用例是否全面(①按代码行算②按功能个数算)—>测试的覆盖率无法衡量—>对新版本的重复测试很难实施–>存在大量冗余测试影响测试效率。
软件的生命周期:需求分析,计划,设计,编码,测试,运行维护
Ⅰ.瀑布模型(适用于需求稳定的项目>变更少)
在这里插入图片描述
优点: –强调开发的阶段性; –强调早期计划及需求调查; –强调产品测试。 •缺点: –依赖于早期进行的唯一一次需求调查,不能适应需求的变化; –由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;风险往往迟至后期的测试阶段才显露,失去及早纠正的机会
在瀑布模型中,测试阶段处于软件实现后,这意味着必须在代码完成后有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷直接遗留给用户。
螺旋模型(Spiral Model)(适用于规模庞大,复杂度高,风险大的项目)一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。测试必须跟着开发的迭代而迭代。回归测试的重要性就不言而喻了。

测试基础知识_第1张图片
优点:–强调严格的全过程风险管理。 –强调各开发阶段的质量。 –提供机会检讨项目是否有价值继续下去。 •缺点: –引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。这需要人员、资金和时间的投入。
增量、迭代增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一。分成块–>每块之间联系不大。促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模式下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作。
增量:是逐渐构造的概念。迭代:是反复求精的概念。
敏捷敏捷开发以用户的需求进化为核心采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
与传统的开发模式有何不同
①个体与交互重于过程和工具–人与人之间的沟通
②可用的软件重于完备的文档–轻文档–>对文档的要求低
③客户协作重于合同谈判–强调客户参与
④响应变化重于遵循计划–可随时变更(但有底线)
⑤在每次对比中,后者并非价值全无,但我们更看重前者
敏捷的主要贡献在于他更多地思考了如何去激发开发人员的工作热情,这是在软件工程几十年的发展过程中相对被忽略的领域。
scrum敏捷开发模型(适应变化 快速迭代)
组成:①产品经理PO(权力最大):负责整理用户故事,定义其商业价值,对其进行排序,指定发布计划,对产品负责。
②项目经理SM:组织各种会议,协调项目,为研发团队服务。
③研发团队team:则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。
迭代开发,scrum将产品的开发分解为若干个小sprint(迭代),其周期从1周到4周不等,但不会超过4周。参与的团队成员一般是5到9人。每期迭代要完成的user story是固定的。每次迭代会产生一定的交付。
敏捷中的测试:
挑战1:轻文档–>强调沟通
挑战2:快速迭代–>①不断找bug,一切以敏捷的原则为主。②不能依赖文档,测试用例作用减弱,更多的采用思维导图,探索性测试,根据测试结果不断调整计划,以及自动化测试③与开发人员多合作沟通
软件测试v模型测试基础知识_第2张图片
是瀑布模型的变种
①清楚地描述了测试阶段和开发过程期间各阶段的对应关系。
②单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的
质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求
③仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试
单元测试:是模块测试,验证软件的基本组成单位的正确性,是白盒测试
集成测试:是模块间的测试,测试接口(软件各模块之间的接口和软件与硬件之间的接口)是否正确,是灰盒测试(白盒和黑盒结合)
系统测试:系统测试包括:冒烟测试 系统测试 回归测试
(1)冒烟测试:主干流程测试,确认软件的基本功能正常,可以进行后续的测试工作
(2)系统测试:是检测系统的功能、质量、性能能否满足系统的要求,包括功能、性能、界面、可靠性、兼容性等等,是黑盒测试
(3)回归测试:修改了旧代码之后重新进行测试,确认修改后的代码没有引入新的错误或导致其他代码产生新的错误
W模型:
测试基础知识_第3张图片
①特点;测试对象不仅仅是程序,需求和设计同样要测试。测试和开发是同步的。
②优点:有利于尽早,全面的发现问题,有利于提早知道项目的难度和测试风险,及早制定相应对策,减少总体测试时间,加快项目进度。缺点:无法支持敏捷(无法支持频繁的需求变更)。
什么是配置管理:是通过在软件生命周期不同的时间点上的软件配置进行标识。并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程。
软件测试的生命周期:需求分析,测试计划,测试设计、测试开发,测试执行,测试评估
软件测试&软件开发生命周期
①需求阶段–测试人员了解需求、对需求进行分解,得出测试需求
②计划阶段:根据需求编写测试计划/测试方案
③设计阶段:–测试人员适当的了解设计,对于设计测试用例是很有帮助的,测试人员搭建测试用例框架,根据需求和设计编写一部分测试用例
④编码阶段:–>测试用例的编写专业的白盒测试人员可以计划执行单元测试,完善、细化测试用例以及调整测试计划和方案
⑤测试阶段
–测试阶段是软件测试人员最为重要的工作阶段,根据测试用例和计划执行测试,在执行的过程中记录、管理缺陷,测试完成后编写测试报告。
⑥运行维护
–测试人员需要参与项目的实施工作。测试人员对项目产品的业务和操作非常了解,加上测试人员的沟通表达能力一般都比较强,所以测试人员可以参与用户使用软件的培训,在试运行项目时收集问题并及时反馈给相关负责人
描述一个bug:①发现问题的版本②出现问题的环境③错误重现的功能④预期行为的描述⑤错误行为的描述⑥出现错误的环境
bug等级:blocker崩溃-critical严重-major一般-minor次要
①系统崩溃、死循环、导致数据库数据丢失等等阻碍开发或测试工作的问题,主要功能,基本模块的缺失等。②系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题、稳定性等。③功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。④界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。
测试人员应该跟踪一个bug的生命周期,从open到close状态
测试基础知识_第4张图片
bug的状态:fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试
对于拒绝修改和延迟修改的Bug,需要经过包含测试人员代表和开发人员代表、用户方面的代表(或代表用户角度的人)的评审。
如何开始第一次测试
作为一个菜鸟在进入测试团队开始第一次测试的时候,我们需要做很多的准备:
1、阅读所有项目有关的文档,包括:需求文档、设计文档、用户手册
2、尽可能参加各种项目会议,了解项目的背景、人员组成、尽可能的了解需求和业务。特别针对业务专业性较强的项目,例如银行业务,需要了解各种业务知识,如高低柜、一二三类账户等、存款、贷款等。
3、熟悉项目所使用的测试管理工具、配置管理工具,获取对应的地址和登录方式
4、阅读已有的测试方案和测试案例
5、阅读旧有的bug库,了解系统功能。尤其重要的是和现有的测试团队保持一致的故障定级原则
6、了解公司的规范要求,特别是用例编写规范、用例执行规范、bug提交规范、测试工具工具使用规范等
在进行了以上的准备工作之后,第一次测试工作到来了,我们需要与测试组长确认具体的工作内容:
1、测试的计划是什么?
2、测试的内容是什么?test case有多少?安排了几天执行?有没有自由测试的时间?
3、我要测试的内容开发人员是谁?需求人员是谁?
4、分配给我的测试内容是否需要特殊的测试资源?资源是否满足需要?
在我们确认了以上内容之后,就可以开始测试的执行了
测试用例:是为了实施测试而向被测试的系统提供的一组集合。这组集合包含:测试环境、操作步
骤、测试数据、预期结果等要素
好的测试用例是一个不熟悉业务的人也能依据用例来很快进行测试
解决如下问题:
①不知道是否较全面的测试了所有功能② 测试的覆盖率无法衡量 ③对新版本的重复测试很难实施 ④ 存在大量冗余测试影响测试效率
等价类
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题
有效等价类:对于程序的规格说明书是合理的,有意义的输入数据构成的集合,利用有效等价类能验证程序是否满足规格说明书所规定的功能和性能。
无效等价类:根据需求说明书,不满足集合的要求。
边界值:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充。 确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点)
因果图:重点强调输入输出之间的因果关系
测试基础知识_第5张图片恒等:如果原因为真,那么结果必定为真。测试基础知识_第6张图片只有2个原因都为真,那么结果为真
测试基础知识_第7张图片2个原因中有一个为真时,结果就为真。测试基础知识_第8张图片只有原因为假,结果才为真。
场景设计法:设计一个基本流(正常的一个业务流程),然后根据实际情况,在一条基本流的基础上设计多条备用流(基本流的分支流程),可以使用思维导图。事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务觉,从而避免陷入功能细节忽视业务流程要点的错误倾向
错误猜测法:经验丰富的测试人员使用。

你可能感兴趣的:(测试基础知识)