• 15
  • 15
分享
  • 测试管理之项目软件测试风险管理实践——软件测试圈
  • 曼倩诙谐 2021-09-22 10:16:08 字数 3312 阅读 1349 收藏 15

  在软件测试活动中,作为一名测试人员有没有遇到过这样的场景,在测试一个特性或者制定一份测试方案时,往往会想着进行简单测试、做简单设计,认为

  1、这个场景出现的概率太低,几乎不可能会存在,不测了

  2、实际应用时不可能会有这么大的用户量,不用考虑

  3、在这个时间段应该不可能会有这么大的业务量

  4、同一时刻不可能会存在多种业务并发上来

  但版本发布上线后,实际应用时之前认为的那些小概率事项,结果确往往就是会出现,这是为什么呢?管理学中有一个定律——墨菲定律;这个定律指出,当事情有变坏的可能,不管可能性有多小,他总是会发生;

  在具体的研发测试中,当测试过程、测试交付存在潜在风险导致出现不好的结果时,我们需要如何做好全方位的准备?积极的应对,避免不好事情造成的影响或把影响降到最低;结合当前项目运作,分享下当前项目过程中对于测试风险控制的实践过程。

  一、认识风险

  在项目活动中风险是指项目活动过程中的一种不确定的事件或条件,一旦发生会对具体的项目的单个或者多个目标产生影响,例如:

  ·研发过程中,特性需求临时变更,代码修改,但测试时间不足,存在质量风险

  ·版本交付,存在外部依赖不满足,交付受阻;

  ·版本测试,测试工作量估算不合理,测试不充分

  这些交付过程中存在的动态的、静态的、已知的、未知的不确定性因素影响测试交付目标,无法满足外部市场需要;那如何做呢?

  二、风险管理

  在项目的测试活动过程中,我们通过一系列风险控制活动对不确定因素进行及时识别、有效评估、积极应对,以保证项目测试活动的正常进行,从而达到价值交付;

  1.风险识别:

  在风险识别阶段通过树立团队整体的风险意识,大家一起讨论制定风险识别维度、在对应的研发阶段、利用一定的工具方法进行风险数据收集,从而进行有效识别。

  1)风险识别维度

  根据项目的实际运作团队讨论,通过收集如下四个维度的信息作为风险识别的输入,来进行识别

  项目:项目的维度主要考虑:

  ·项目规划需求的计划:在项目迭代开始初期,规划的需求内容、提交的计划点;如果在过程中发生需求加塞、提交计划变更和一开始的计划出现偏差,则作为风险进行及时上报;

  ·相关的制约因素:是否存在对外部依赖,比如对外围的软硬件版本存在依赖,需要提供后,集成完成才能满足交付条件;

  ·里程碑时间点:时间点要求也是一个识别依据,临近里程碑时间点,现状和目标存在较大偏差;

  ·工作量的估算;工作量估算的合理性,有些是项目强行压下的,存在较大的工作量偏差;

  ·以及隐形因素项目内各团队之间的合作协作关系

  资源:资源的维度主要考虑人力资源是否充分,设备环境资源是否能满足相应的测试活动;比如组网场景、容量上对资源的要求,是否具备;

  技术:技术的维度主要考虑当前是否存在新领域不熟悉、所需的技能存在盲区。

  质量:质量维度主要是要了解确认对任务质量的要求,是仅满足预研穿刺基本测试,还是需要按交付标准的DOD严格执行,以达到交付要求;

  2)风险识别阶段

  风险识别活动贯穿在整个测试活动的始终,从测试SE参与需求分析开始、编写测试策略、跟踪特性实现过程、交付系统测试以及其他(维护)各阶段都需要识别;

  3)风险识别方法

  ·专家判断:了解项目和业务各领域的人员,考虑单个风险的方方面面,以及整体项目风险的各来源;

  ·头脑风暴:参考一定的风险识别维度,进行相关的脑暴;

  ·访谈:对领域专家、资深参与者访谈;

  ·会议讨论:团队成员对当前所承接的任务,观察了解到的信息进行专门的会议讨论,审查识别的风险;

  ·风险检查单:各阶段的风险点,用作提醒(坚持单及时审查,定期更新调整)

  风险识别经验小结:

  1、团队树立风险意识,鼓励所有人相关人员参与风险识别

  2、除了显性可见风险,同时也要注意隐性的团队协作,氛围的风险

  2.风险评估

  通过有效描述风险,明确风险类别后合理定义风险级别来评估风险,以确认风险影响以及为后续的风险应对措施提供依据;

  1)风险描述

  风险包含起因、时间、概率及影响四要素,在了解风险4要素后,使用结构化SQCA描述方法,把风险本身与风险愿意及风险影响区分开来,描述清楚;

  S(Situation):背景起因

  C(Complication):事件冲突

  Q(Question):问题影响

  A(Answer);答案

  描述结构化方式:在某个背景(起因)之下,遇到了复杂(事件)情况,产生了什么样的(问题)影响,然后我们如何去解决它(答案)

  其中风险描述中风险影响和解决方案是关键,建议描述要领:

  ·Q(问题影响):描述清楚波及的范围、问题的重要、紧迫程度

  ·A(解决方案):遵循3W原则,解决方案具体内容,包含所需要的资源等(What)、具体的责任主体(Who),由谁负责解决、期望解决的具体时间点(When)

  ·风险描述案例:

  ·技术风险描述举例:

  随着公司业务的快速发展(S),我们的IT系统无法满足现状产品的需求(C),这将导致我们无法满足我们的客户(Q),当务之急的应对措施是需要***立刻安排升级IT系统(A)

  ·质量风险描述举例:

  临近迭代交付(S),测试自动化无法稳定运行(C),导致守护不完善,存在质量风险影响发布(Q),当务之急***尽快在迭代交付前完成自动化执行守护修复(A)

  2)风险分类

  在有效的描述清楚风险后,进行风险分类,明确风险类别;这个过程主要是便于把注意力和精力集中到风险最大的领域,或者针对一组相关的风险制定通用的风险应对措施,从而更有效的开展应对;

  ·按风险来源分:技术风险、管理风险、外部风险、内部风险等

  ·或者按受影响的项目工作分:方案设计、编码实现、验收测试等

  目前我们项目运作过程中,风险分类主要还是以风险的来源来分,根据分类出的风险,发现外部依赖类风险占据比例较高,针对此类风险讨论通用的应对措施,比如通过一开始的协作规划项目计划来约束、过程中每日的日报、周报来跟踪外部依赖提供的进展等

  3)风险定级

  在描述清楚风险、做好分类后,团队根据具体的研发过程,对风险偏好和风险临界讨论制定风险影响和概率的定义,从而进行风险定级评估;

  比如通过风险出现的概率情况、对测试目标的影响程度来综合判断风险级别,具体定级示例:

1.png

  根据定级结果,高以上风险:立即行动 ;中风险:立即关注;低风险:定期关注

  3.风险应对:

  在风险评估定级完成后,进行对应的风险应对;在实际的项目运作过程中根据不同的场景,采用不同的应对措施;

  ·风险上报:当超出个人或团队处理的能力时,需要进行风险上报,一般风险级别为高以上类风险;比如涉及到外部依赖类风险,需要项目协调,否则版本无法正常集成制作;通过面对面、电话沟通、或者日报周报的方式上报反馈;

  ·风险规避:发生的概率较高,具有严重负面影响的高优先级风险;比如在临近版本发布时,某些特性由于测试不充分,波及不明确,合入后存在对现有商用版本存在未知隐患,通过裁剪、调整特性合入周期来规避版本发布质量风险;

  ·风险转移:应对风险,把责任外包给第三方;比如在研发过程中,对于新领域不熟悉,但第三方存在成熟的技术,可以通过购买服务、签约合同;和第三方达成合作,把风险转移第三方;

  ·风险减轻:降低风险出现的概率和影响;比如在临近版本发布时,合入了故障,但该故障的波及范围交广,测试又不充分;经过分析故障影响,回退合入故障,来规避影响;

  ·风险接受:对于低优先级的风险或者其他任何策略已无法加以应对;

  三、经验总结

  最后的话:

  1、测试过程中,当好测试“操盘手”,综合进行风险控制,做好全方位准备,积极应对,避免或降低坏事出现后造成的影响;

  2、加强团队风险意识,风险管理控制需要全员参与

  3、作为一名优秀的测试人员养成风险数据收集、整理、分析习惯;

  4、善于总结经验,练就一副识别风险的“火眼金睛”

  5、作为测试人员,要“未雨绸缪”,从源头控风险,不要当“救火队员”



作者:梧桐苑落   

来源:51Testing软件测试网原创


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、准备1.1 下载Postman 软件postman下载https://www.postman.com/1.2 首先把要进行压力测试的接口,进行测试,显示没有问题,状态为200二、压力测试步骤2.1 在接口处,设置参数,{{}}包住参数!外面还有双引号!2.2 选择Pre-request-Script,对变量进行编写代码postman.setEnvironmentVariable("openid",data["openid"]);2.3 一定不要忘了写断言,不然运行的时候总会提示一句话,额!具体我忘了截图,你遇到就知道了pm.test("St...
            0 0 2159
            分享
          • 互联网行业发展的十多年,对软件的使用要求越来越高,所以企业对招聘测试人也从当初的功能测试上升到自动化测试,那么要成为一名合格的测试工程师需要具备哪些技能。不光是符合企业需求,也能提高个人价值,说白了就是提高自己的收入那么从事软件测试行业需要学习哪些技能?接下来小编就来给大家讲讲软件测试工程师需要学习哪些技能。测试用例这是每个工程师必备的技能,也是你进入测试行业的基础门槛。测试用例可以参考我之前写的文章。测试用例的方法流程分析法、状态迁移、正交试验、因果图、等价类、边界值、边界值应用场景,判定表等都是测试用例的相关方法,也只有账务了相关的方法,才能写覆盖率高的测试用例。缺陷管理工具缺陷管理工具是...
            0 0 862
            分享
          •   当地时间周二,硅谷银行新任首席执行官Tim Mayopoulos对客户表示,硅谷银行已经恢复开门,准备接收和持有客户的存款。此番言论是在呼吁风投公司和其他科技客户重新回到该银行。  Tim表示:“如果你、你的投资组合公司或你公司在过去一周内转移了资金,请考虑将其中一些资金转移回来,作为安全存款多样化战略的一部分。”  Tim对客户群表示:“储户可以完全接触到他们的资金。”并补充说,新流入的资金和现有的存款都受到联邦存款保险公司的全面保护。  上周,硅谷银行刚发布的季度显示其亏损出售了价值210亿美元的证券,导致创企和VC基金纷纷逃离,超过420亿美元的存款被撤出硅谷银行。硅谷银行倒闭是美国...
            0 0 659
            分享
          •   测试用例存在一些真相与事实,有些广为人知,有些却很隐蔽。正是基于这些真相与事实,可以对我们的手工测试、自动化测试、甚至规模化的自动化测试(数以万计的用例)带来不同的启发。  真相1:不能提前确定所需要的所有测试用例  测试领域有一个几乎是共识的结论,我们不能完全测试(Complete Test)。除了这个结论本身,其原因也有很大的参考价值:  软件系统本质也是一系统,是由一层层依赖组成的,当我们想测某一点时,总会有假设,但是这个假设本身有时也需要另外的用例来覆盖。而哪一层的假设是可靠、不需要再测试的判断往往是凭个人经验决定的,也许离真实很远。  瀑布流程中的测试用例规划通常是基于规格的,较...
            0 0 987
            分享
      • 51testing软件测试圈微信