7、项目经理对编码完成后的系统进行确认,确保提交测试的系统是可运行的,测试负责人(或专门的PPQA)确认所有文档和代码都已经commit到CVS。
六、测试设计与评审(开发阶段)
1、 在项目编码阶段,测试方案编写完成后,测试负责人或相关测试人员根据测试方案、规范文档、功能列表和详细设计进行测试用例设计;
2、 测试案例设计的类型包括功能测试,边界测试,异常测试,性能测试,压力测试等,在用例设计中,除了功能测试案例外,应尽量考虑边界、异常、性能的情况,以便发现更多的隐藏问题;
3、 在编写测试案例的过程中,对于存在疑问的地方或测试重点,主动与开发负责人或项目经理沟通讨论,一方面有助于设计完善的测试案例,另一方面也有助于开发进一步清晰编码思路;
4、 测试用例编写完成后,发邮件给开发经理、项目经理、相关开发人员和测试人员;
5、 开发经理、项目经理、相关开发人员和测试人员对所提交的测试案例进行审查,开发经理与项目经理对测试案例进行总体性的检查,各模块负责人则负责检查自己所负责的测试案例,将建议和意见以邮件的形式反馈给测试负责人;
6、 测试负责人收集大家的邮件对测试案例进行修改完善,同时回复邮件说明修改情况,如果存在争议则召开一个小型会议对异议进行讨论,修改后的测试案例commit到CVS;
7、 测试用例编写完成之后需要不断完善,软件产品新增功能或更新需求后,测试案例必须配套修改更新;在测试过程中发现设计测试案例时考虑不周,需要对测试案例进行修改完善;在软件交付使用后客户反馈的软件缺陷,而缺陷又是因测试案例存在漏洞造成,也需要对测试案例进行完善;
8、 测试负责人(或专门的PPQA)对最终修改测试案例进行检查,并确认所有文档都已经commit到CVS。
七、测试实施(测试阶段)
开发进行单元测试—〉开发进行联调测试,确保交给测试是可用的—〉
1、代码提交前一天准备相关的测试环境(如服务器或数据库等),代码提交后测试人员向Build Master申请打包,并搭建正式测试环境,为了不做到测试以及确保产品可以跨平台,每个测试人员各自搭建一个测试环境,每个平台至少要有一个以上的测试人员负责;
2、测试环境搭建好后进行烟雾测试,如果烟雾测试通过则继续详细的功能测试,否则中断测试并返回给开发;
3、测试人员按照预定的测试计划和测试方案逐项对测试案例进行测试,在测试过程中发现的任何与预期目标不符的现象和问题都必须详细记录下来,填 写测试记录,在必要的时候协助开发追踪与修改所发现的问题;如果在测试的过程中发现重大的bug或因为某些bug导致测试不能继续,测试中断并返回给开发;
4、每个测试阶段测试结束后,由测试负责人总结测试情况,对测试结果进行分析和下一阶段测试测试计划与可能引进的bug数量进行预测,并提交“测试阶段分析报告”,并发送给开发经理、项目经理、相关测试人员和开发人员;
5、开发经理对测试阶段分析报告中存在的问题采取恰当的措施和调整相关资源,确保下一阶段的开发与测试计划顺利进行;
6、开发对bug进行修改;
7、开发对bug修改后测试人员进行回归测试,经过修改的软件可能仍然包含着错误,甚至引入了新的错误,因此,对于修改以后的程序和文档,按照修改的方法和影响的范围,必须重新进行有关的测试;
8、产品的功能比较完善后,进行产品的性能压力测试,并根据测试结果进行性能调优;
9、确认测试,在软件发布前,对产品进行确认测试;
10、当测试产品达到测试计划所制定的产品质量目标和测试质量目标,整理产品发布包和编写相关文档,确认发布包和文档完整后进行产品发布。
八、产品发布
当测试产品达到测试计划所制定的产品质量目标和测试质量目标,整理产品发布包和编写相关文档,在发布前对照功能列表进行一次全面的确认测试,确 认发布包和文档完整后进行产品发布。对于新产品来说,必要的文档必须包括:(1)产品安装操作手册;(2) 产品白皮书;(3) 产品管理维护手册;(4) 用户操作手册;(5) 总体测试报告(6)性能测试报告。
九、版本控制
在测试过程中,软件的打包统一由Build Master完成。新版本软件发布之后,马上对代码进行质量控制: (1) Build Master给新版本的源代码打一个cvs tag,方便代码回滚check out。比如,发布版本为IAGW1.0.0,则给该软件源代码也打一个与发布版本相同名字的tag IAGW1.0.0。这样做的一个好处是,在目前的软件的基础上做了修改并发布新的版本后,如果需要check out某个版本的源代码,则可以通过这个版本的tag来check out,代码的修改可以在该版本上进行。(2) Build Master对新发布的软件源代码进行cvs lock,不允许开发人员在软件发布之后commit源代码,直到有新版本需求修改再给开发人员开放commit权限。这样做的好处是避免开发人员随意修 改和commit源代码,确保源代码服务器上的源代码版本与当前最新的发布版本一致。
十、自动测试
产品稳定后,进行自动测试工具开发,对于稳定的功能使用自动测试工具进行测试,新增的功能使用手工测试,使用自动测试+手工测试的模式,可以大大提供测试效率。
十一、小结:应用推广思路与体会
整体思路是:首先对项目进行需求分析,有效的需求分析方法是需求分析人员、项目经理、开发经理与测试负责人分别阅读规范与原始需求,特别是需求分析负责人与项目经理,需要对需求进行深入的分析研究,然后开会讨论,消除对需求的误解与遗漏, 讨论结束后编写功能列表说明文档与需求规格说明书并评审;对于规范中不明确的问题集中后由测试负责人(或需求分析负责人)直接与移动总规范负责人直接交流,确保不会因为规范的理解不正确导致项目实现与需求不一致。需求分析完成后,编写项目计划书与测试计划书;项目计划、测试计划编写前先开会讨论,由模块 负责人估算工作量,能确定的问题和时间安排都在讨论中确定下来,然后根据工作量和工程需求制定项目计划和测试计划。开发在编码前需要进行概要设计和详细设计,开发工程师在编码前对系统的总体设计架构、各自所负责的模块有一个清晰的设计思路,经评审后确认模块的设计是否合理;开发在编码完成后在提交测试前必 须进行单元测试与联调测试,提交给测试的软件是一个可运行的产品。测试工作中,在项目设计或编码阶段,测试负责人对项目进行测试设计,指导测试实施有依可循,在编写案例的过程中会遇到很多与流程和细节处理相关的问题,与开发一起讨论也有助于提前发现问题与完善代码;在测试实施阶段,测试人员记录所发现的问 题,并协助开发及时解决,在测试过程中所遇到的问题,测试负责人进行记录和分析,在每个阶段完成后提交经分析后的测试阶段报告,在软件测试阶段报告中总结分析了测试过程中所发现的问题并对这些问题提出解决建议,在后续的开发与测试中进行改进与调整,确保项目能够按时保质发布。为了节约资源,计划或设计都是以邮件的形式进行评审;对于存在严整分歧的问题,组织一个小型会议进 行讨论有效解决问题,小型讨论会是解决问题的一种有效途径,任何问题都可以通过face-to-face的交流达到共识。软件的管理和版本管理则由 Build Master负责,确保软件得到良好的控制。在整个项目实施的过程中,需要有一个PPQA对流程进行检查与监督。