• 2
  • 2
分享

  一、软件的生命周期

  软件计划与可行性研究(问题定义、可行性研究);需求分析;软件设计(概要设计、详细设计);编码;软件测试;运行与维护。

  生存周期划分

  各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。

  生存周期基线

  • 功能基线(functional baseline)

  功能基线是指在系统分析与软件定义阶段结束时,经过正式评审和批准的系统设计规格说明书中对待软件生命周期开发系统的规格说明;或是指经过项目委托单位和项目承办单位双方签字同意的协议书或合同中所规定的对待开发软件系统的规格说明;或是由下级申请经上级同意或直接由上级下达的项目任务书中所规定的对待开发软件系统的规格说明。功能基线是最初批准的功能配置标识。

  • 指派基线(allocated baseline)

  指派基线是指在软件需求分析阶段结束时,经过正式评审和批准的软件需求的规格说明。指派基线是最初批准的指派配置标识。

  • 产品基线(product baseline)

  产品基线是指在软件组装与系统测试阶段结束时,经过正式评审的批准的有关所开发的软件产品的全部配置项的规格说明。产品基线是最初批准的产品配置标识。

  SDLC的六个阶段

  1.定义及规划  

  此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。 

  2.需求分析  

  在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。  

  3.软件设计  

  此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。   

  4.程序编码   

  此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。  

  5.软件测试  

  在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。   

  6.运行维护

  软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件软件生存周期的维护包括纠错性维护和改进性维护两个方面。 

  周期模型

  典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型  

  二、软件测试在软件生命周期(瀑布模型)中的对应关系

   图1.jpeg

  三、软件测试过程 

  第一步:对要执行测试的产品/项目进行分析,确定测试策略,制定测试计划。该计划被审核批准后转向第二步。测试工作启动前一定要确定正确的测试策略和指导方针,这些是后期开展工作的基础。只有将本次的测试目标和要求分析清楚,才能决定测试资源的投入。

  第二步:设计测试用例。设计测试用例要根据测试需求和测试策略来进行,进度压力不大时,应该设计的详细,如果进度、成本压力较大,则应该保证测试用例覆盖到关键性的测试需求。该用例被批准后转向第三步。

  第三步:如果满足“启动准则”(EntryCriteria),那么执行测试。执行测试主要是搭建测试环境,执行测试用例。执行测试时要进行进度控制、项目协调等工作。

  第四步:提交缺陷。这里要进行缺陷审核和验证等工作。

  第五步:消除软件缺陷。通常情况下,开发经理需要审核缺陷,并进行缺陷分配。程序员修改自己负责的缺陷。在程序员修改完成后,进入到回归测试阶段。如果满足“完成准则”(ExitCriteria),那么正常结束测试。

  第六步:撰写测试报告。对测试进行分析,总结本次的经验教训,在下一次的工作中改。

  软件测试过程管理,主要包括软件测试是什么样的过程,如何评价一个软件测试过程,如何进行配置管理和测试风险分析以及测试成本的管理。  

  四、软件测试流程(与第三条对应)

  1、制定测试计划

  2、编辑测试用例

  3、执行测试用例

  4、发现并提交BUG

  5、开发组修正BUG

  6、对已修正BUG进行返测

  7、修正完成的BUG将状态置为已关闭,未正确修正的BUG重新激活   

  五、测试用例 

  测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

  测试用例的要素为:版本号、模块名称、用例编号、用例名称、用例级别、预置条件、验证步骤、期望结果(含判断标准)、测试结果、测试时间、测试人员等。(其中核心要素为预置条件、验证步骤、期望结果)

  测试用例的设计方法:等价类划分、边界值分析、错误推测法、因果图法、场景设计法

  一份好的测试用例所要达到以下几点要求:测试用例必须完成对需求的完整覆盖(即用例和需求的双向可追溯性);测试用例必须是可执行的;测试用例的结果唯一性;测试用例必须简洁明了  

  六、缺陷报告(提交bug)

  一份有效的缺陷报告要素通常包括:标题、前提、测试环境、操作步骤、实际结果、期望结果、出现的频率、优先级、严重等级、附件(一般是图片形式)。 另外还会有一些附加信息,如测试人员、开发负责人等。

  • 标题:简明扼要,无歧义

  • 优先级 Priority(4个等级):软件被修复的紧急程度 1--立即解决:缺陷导致系统几乎不能运行使用 或 严重妨碍测试的执行(需立即修改) 2--高优先级:缺陷严重,影响到测试了(当天或第二天要及时解决的) 3--正常:一般错误 4--低优先级:可以在开发有时间的时候处理,如页面文本框对齐显示

  • 严重等级 Severity(4个等级):缺陷引起的故障对用户使用系统的影响 1--致命的:主流程不通,导致系统功能缺失、用户数据被破坏、系统崩溃、死机 2--严重的:影响流程的 比较严重的,比如系统主要功能部分未实现 3--一般:系统的次要功能没有完全实现,但不影响用户的正常使用 4--较小:操作不方便或遇到麻烦,但不影响功能的使用,如字体不美观、按钮大小不合适、文字排列对齐等(属于建议性或者美观方面的)

  一般来说,缺陷越严重,优先级越高,但也有例外:

  1)从用户角度看,缺陷不是很严重,但可能影响到测试执行了(优先级高严重等级低)

  2)有些缺陷比较严重,但由于技术的限制,暂时没法修改。这时优先级就降低了

  • 附件有时候,用文字很难清楚描述缺陷,此时用图片(画笔指明问题)就很直观了

  如何有效的报告缺陷?

  • 单一准确:每个报告只针对一个缺陷,如果有多个缺陷,可能开发只修正了其中一个,其他的没有得到修改,加长了缺陷的生命周期

  • 可以再现:不能忽视或省略任何一项操作步骤,特别是关键性的操作,如描述的不够清楚,RD(Research and Development engineer)就会过来沟通怎么操作的,浪费了大家的时间

  • 完整统一:完整的描述信息

  • 短小简练:使用关键词

  • 特定条件:有些问题只在特定环境下存在

  七、测试报告

  测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础。

  一份详细的测试报告包含足够的信息,包括产品质量和测试过程的评价,测试报告基于测试中的数据采集以及对最终的测试结果分析。

  测试报告的主体框架为:

  1、首页

  报告名称(软件名称+版本号+用户端类型(android,iphone,后台管理等等)+测试范围(单元,集成,系统,模块等等)+测试报告)

  报告委托方,报告责任方,报告日期等

  版本变化历史

  密级

  2、引言

  2.1编写目的

  本测试报告的具体编写目的,指出预期的读者范围。

  2.2 项目背景

  对项目目标和目的进行简要说明。必要时包括简史,这部分不需要脑力劳动,直接从需求或者招标文件中拷贝即可。

  2.3 系统简介

  如果设计说明书有此部分,照抄。注意必要的框架图和网络拓扑图能吸引眼球。

  2.4 术语和缩略语

  列出设计本系统/项目的专用术语和缩写语约定。对于技术相关的名词和与多义词一定要注明清楚,以便阅读时不会产生歧义。

  2.5 参考资料

  3、测试概要

  测试的概要介绍,包括测试的一些声明、测试范围、测试目的等等,主要是测试情况简介。(其他测试经理和质量人员关注部分)

  3.1测试方法(和工具)

  简要介绍测试中采用的方法(和工具)。

  3.2测试范围

  介绍本次所测试的软件功能

  3.3测试环境与配置

  简要介绍测试环境及其配置。

  4、测试结果与缺陷分析

  整个测试报告中这是最激动人心的部分,这部分主要汇总各种数据并进行度量,度量包括对测试过程的度量和能力评估、对软件产品的质量度量和产品评估。对于不需要过程度量或者相对较小的项目,例如用于验收时提交用户的测试报告、小型项目的测试报告,可省略过程方面的度量部分;而采用了CMM/ISO或者其他工程标准过程的,需要提供过程改进建议和参考的测试报告-主要用于公司内部测试改进和缺陷预防机制-则过程度量需要列出。

  4.1测试执行情况与记录

  描述测试资源消耗情况,记录实际数据。(测试、项目经理关注部分)

  4.1.1测试组织

  可列出简单的测试组架构图

  4.1.2测试时间

  列出测试的跨度和工作量,最好区分测试文档和活动的时间。数据可供过程度量使用。

  4.1.3测试版本

  4.2覆盖分析

  4.2.1需求覆盖

  需求覆盖率是指经过测试的需求/功能和需求规格说明书中所有需求/功能的比值,通常情况下要达到100%的目标。

  4.2.2测试覆盖

  需求/功能(或编号) 用例个数 执行总数 未执行 未/漏测分析和原因

  测试覆盖率计算 执行数/用例总数 ×100%

  4.3缺陷的统计与分析

  缺陷统计主要涉及到被测系统的质量,因此,这部分成为开发人员、质量人员重点关注的部分。

  4.3.1缺陷汇总

  被测系统 系统测试 回归测试 总计

  合计

  按严重程度

  严重 一般 微小

  按缺陷类型

  用户界面 一致性 功能 算法 接口 文档 用户界面 其他

  按功能分布

  功能一 功能二 功能三 功能四 功能五 功能六 功能七

  最好给出缺陷的饼状图和柱状图以便直观查看。俗话说一图胜千言,图标能够使阅读者迅速获得信息,尤其是各层面管理人员没有时间去逐项阅读文章。

  4.3.2缺陷分析

  本部分对上述缺陷和其他收集数据进行综合分析

  缺陷综合分析

  缺陷发现效率 = 缺陷总数/执行测试用时

  可到具体人员得出平均指标

  用例质量 = 缺陷总数/测试用例总数 ×100%

  缺陷密度 = 缺陷总数/功能点总数

  缺陷密度可以得出系统各功能或各需求的缺陷分布情况,开发人员可以在此分析基础上得出那部分功能/需求缺陷最多,从而在今后开发注意避免并注意在实施时予以关注,测试经验表明,测试缺陷越多的部分,其隐藏的缺陷也越多。

  4.3.3残留缺陷与未解决问题

  残留缺陷

  评价:对这些问题的看法,也就是这些问题如果发出去了会造成什么样的影响

  5、测试结论与建议

  5.1 测试结论

  1.测试执行是否充分(可以增加对安全性、可靠性、可维护性和功能性描述)

  2.对测试风险的控制措施和成效

  3.测试目标是否完成

  4.测试是否通过

  5.是否可以进入下一阶段项目目标

  5.2 建议

  1.对系统存在问题的说明,描述测试所揭露的软件缺陷和不足,以及可能给软件实施和运行带来的影响

  2.可能存在的潜在缺陷和后续工作

  3.对缺陷修改和产品设计的建议

  4.对过程改进方面的建议

  6、附录

  • 缺陷列表

  • 缺陷等级定义标准

  • 测试通过标准


作者:yy19890521

原文链接:http://www.51testing.com/html/21/n-4474721.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 从它对项目的影响来说,接口测试直接测试后端服务,更加接近服务器上运行的代码程序,也更能发现影响范围广泛的 Bug。越接近底层的 Bug,影响用户范围越广随着中台化、服务化的发展,一套服务支持多种终端,例如 Android 端、iOS 端、Web 端等,这些服务都是由一套后端服务支持的。如果在Web端发现一个界面问题,影响的只是Web端用户,倘若一个服务宕掉,影响的就不止是Web端,还有Android 端、iOS 端目前流行的测试模型 分层测试可以看到现在流行的模型更多偏向于接口测试在质量保障过程中,我们的测试工程师会不断增大接口测试的测试深度和测试广度,往下逐渐覆...
            1 4 3029
            分享
          • 7 月 29 日晚,Dify 主创团队如约与社区朋友们线上直面交流,由 Dify 的数据集产品&架构负责人姜勇(Jyong)给大家分享在企业知识库嵌入 AI ChatBot 应用中最核心的 Embedding 技术概念和 Dify 数据集的设计和规划。我们还整理了本次会议中用户关心的问题,供大家阅读参考。Embedding 技术的文本向量化"Embedding"是一种将离散型变量(如单词、句子或者整个文档)转化为连续的向量表示的技术。这个向量表示(Embedding)可以捕捉到离散型变量间的相似性和关系。这段话听起来很晦涩,但其实它的本质是特征性的收集,将事物所有的...
            0 0 1054
            分享
          • 21世纪,我们已经从网络时代进入了大数据时代,各行各业都离不开大数据,对大数据的应用不仅可以帮助企业、政府作出决策提供依据,也同样适用于我们的生活,例如我们用到的智能手表生成的最新数据,可以检测我们的身体指数,使我们的身体健康更有保障!大数据的应用是未来的发展的方向,大数据开发工程师也是未来必不可少的职业,就目前而言,学大数据开发可以选择以下就业方向:1、Hadoop大数据开发方向Hadoop是一个开源的大数据分析软件,也是一种编程模式,通过分布式的方式处理大数据的,在仓储数据处理方面功能非常强大,而且数据处理成本低,深受企业的喜爱,如今具备Hadoop框架经验的技术人员是最抢手的大数据人才。...
            0 0 802
            分享
          •   一、问题引入  笔者在使用robotframework工具进行web ui自动化脚本编写时,发现:对于页面某个复选框元素定位,使用select checkbox关键字+xpath定位方式进行复选框勾选操作时,报错“Checkbox with locator,'xpath=//hs-i18n[contains(.,'xx')]' not found”,即xpath定位路径的checkbox找不到。经过笔者排错和研究,得出以下结论:1、xpath定位路径正确;2、select checkbox对元素使用标签有限制,只能对input标签使用,而测试的元素...
            12 12 1780
            分享
          •   大家好,今天给大家分享一个写代码的设计模式,就是我们最最耳熟能详的单例设计模式。  可能很多人都听说过这个单例设计模式了,甚至都写的贼溜,但是今天给大家说说用这个这个单例设计模式,咱们是怎么把代码的性能大幅度提升的,单例模式跟代码性能的关系,恐怕很多兄弟还没认真研究过呢!  一次请求执行流程  首先我们先来看看什么叫做单例模式,要理解单例模式,我们就得先说说不用单例模式的时候,我们平时创建对象是怎么弄的。  平时创建对象这个简单吧,比如我们搞一个对外的web接口,然后再接口收到一个请求的时候,就创建一个对象。  这个伪代码如下:  @RestController("/user&q...
            0 0 835
            分享
      • 51testing软件测试圈微信