问答题 阅读以下说明,根据要求回答问题。
[说明]
QT系统集成公司承接了一个电子政务业务系统的软件开发项目,项目质量要求比较高。目前,该项目的程序编程阶段基本结束,进入了测试阶段。第1轮模块测试,发现了106个缺陷。项目组对发现的缺陷进行了修复,又重新提交了测试。第2轮模块测试又发现了82个缺陷。就这样反复修改和测试,直到第7轮,发现了21个缺陷。各轮发现的缺陷数见表9-8。
表9-8 各轮测试发现的缺陷数
轮数 第1轮 第2轮 第3轮 第4轮 第5轮 第6轮 第7轮
缺陷数 106 82 75 148 40 55 25
此时,项目经理小郭终于松了一口气,由于第7轮只剩下25个缺陷,他觉得测试工作应该很快就会结束了。
问答题 趋势图是实施项目质量控制的常用工具与技术之一。请在图9-5所示趋势图上标出纵坐标的刻度值,并画出本案例测试缺陷数的趋势图。
【正确答案】纵坐标的刻度值标注见图9-7; 趋势图如9-7所示;
【答案解析】趋势图也称为管理图、控制图,是一种带控制界限的质量管理图表。在实施质量控制过程中,需要收集和分析趋势图中的相关数据,来指明项目过程与产品的质量状态。趋势图直观地反映某个过程随时间推移的运行情况,以及何时发生了特殊原因引起的变化,导致该过程失控。趋势图以图形方式回答“该过程的偏差是在可接受的界限内吗?”这个问题。趋势图中的数据点可以显示过程的随机波动、突然跳跃或偏差逐渐扩大的趋势。通过持续监测一个过程的输出,趋势图有助于评价过程变更是否达到了预期的改进效果。当过程超出可接受的界限时,就应该进行调整。 依题意,表9-8所给出的数据中最大值为148、最小值为25。在图9-5中已标出纵坐标的8个等分刻度位置,因此可将趋势图纵坐标的最大刻度值设置为160(即大于148的数)、最小刻度值设置为0,每个刻度值的增量为20。在图9-5中标明纵坐标的刻度值后,接着可画出横向、纵向的辅助虚线,然后在图中分别标出表9-8中各个数据的位置,最后将相邻的数据点用直线连接,结果如图9-7所示。 [*]
问答题 “他(项目经理小郭)觉得测试工作应该很快就会结束了”的观点是否正确?请简要说明理由。
【正确答案】不正确 理由:该趋势线并没有呈整体下降且趋于稳定的状态,第7轮测试缺陷数虽然减少,但是缺陷还没有经过回归测试,可能会导致新的缺陷产生;同时,系统还没有经过集成测试和系统测试,也可能会导致新的缺陷产生(答案意思相近即可)
【答案解析】通常,软件测试过程要按照单元(模块)测试、集成(组装)测试、确认测试和系统测试等4个步骤进行。测试发现错误并进行调试修改后,还要进行回归测试。对于题干所提及的只是进行了该软件项目的程序模块级测试工作,除此之处还需进行模块之间的集成测试和系统级测试。一般而言,单元测试是属于基础性的测试工作,也是相对容易的测试工作。改正错误时还可能会引发新的错误。统计发现,某些局部性错误的改正往往在集成测试和系统测试时暴露出新的问题。模块之间的集成测试和系统测试的组织管理要更困难些,也往往会纠正一个错误将可能耗费更多的人力和工作时间。项目经理小郭没能全局性看待测试工作,他觉得“测试工作应该很快就会结束了”是过于乐观的观点。 纵观图9-7所示的各轮测试发现的缺陷数的走势,该趋势线上下波动较大,7轮测试的缺陷数并没有呈整体下降且趋于稳定的状态,因此不能就此得出类似“下一轮测试缺陷数必然减少”的结论。第7轮测试缺陷数虽然减少为25个,但是缺陷还没有经过回归测试,新的缺陷可能还会产生。另外,该软件系统没有经过集成测试和系统测试,还有可能在这两个测试阶段产生新的缺陷。
问答题 (1)请简要分析该项目在软件测试方面还需要开展哪些后续工作? (2)请结合软件开发生命周期分析软件存在缺陷的可能原因。
【正确答案】(1)各模块的回归测试、集成(组装)测试、确认测试和系统测试等 (2)①需求缺陷;②设计缺陷;③编码缺陷;④测试不充分(答案包含但不限于以上要点,答出其中3个小点即可,答案类似即可)
【答案解析】结合[问题2]要点解析可知,该项目在软件测试方面还需要开展的后续工作有:各模块的回归测试、集成(组装)测试、确认测试和系统测试等。 通常,软件开发生命周期将整体开发过程划分为可行性分析(计划)、需求分析、软件设计(概要设计和详细设计)、编码(含单元测试)、测试(含集成测试、确认测试和系统测试)、运行维护等阶段。依题意,若前期的需求分析阶段工作做得不充分、不细致、没能真实反映用户的期望(需求),没有进行需求确认和需求验证等工作,都将导致所开发的软件存在缺陷。同理,在软件设计阶段没有准确地把握用户的需求、所采用的技术架构不能本土化地设计应用、没能理清各功能模块之间的耦合关系等,也将导致所开发的软件存在缺陷。在编码阶段,由于程序员的个人工作习惯、擅长的领域以及对详细设计文档的理解、把握程度不同,有可能引入各式各样的编码缺陷。在软件测试过程中没能按照单元测试、集成测试、确认测试和系统测试等步骤进行,或者为了赶进度忽略了其中的某个子阶段,或者修改错误之后没能及时进行回归测试等,都会导致测试工作不够充分,从而使开发的软件存在缺陷。