针对某个特定的软件项目而言,测试团队应该如何合理地统筹安排软件测试工作?测试团队在完成一定数量的软件项目测试工作后又该如何快速提升下一软件项目测试工作的水平?这两个问题对于成立不久的软件测试团队而言是很棘手也是很现实的。
做好软件测试设计,排除“近忧”
过度测试会造成测试成本上升,而测试不够又会造成项目中遗留某些重要缺陷。但针对于某个特定的软件项目量身定做相应的软件测试方案是需要足够的技术能力和实战经验的。在软件测试活动的生命周期中,测试设计实际上是对前面所做测试计划进行进一步细化、具体化从而形成针对特定项目的测试策略、测试方案及测试用例的过程。
测试策略设计
测试策略要解决的问题是根据测试需求、资源配备及工程环境,因地制宜剪裁测试技术,形成测试工作的技术路线。对于一个小项目做大测试是得不偿失的,同样,对一个大项目做小测试也是不负责任的。通常,对于工作量小于5个人月的普通商用软件,重点应该抓系统测试(包括功能测试、性能测试及GUI测试等)及验收测试,而不宜铺排开来,面面俱到。而对于一个工作量接近30个人月的中型商用软件而言,一般应该认真完成需求验证、设计验证、单元测试、集成测试、系统测试及验收测试,而不宜只关注系统测试。但这并不绝对,譬如,用户希望软件有好的人机交互界面,这时,就应该考虑采用快速原型生成工具来进行用户界面设计的确认测试;又如用户希望软件有较好的健壮性,这时,就应该考虑进行相应的负载测试和可恢复性测试。
一个好的测试策略设计应能清楚地回答下列问题:是否在测试成本与测试预期效果之间达到了最佳平衡?是否在测试需求与测试活动安排之间达到了最佳平衡?策略设计形成的技术路线是否在工程实际与企业质量承诺之间达到了最佳平衡?策略设计形成的技术路线是否具有可行性?有无设计依据?
测试方案设计
测试方案是对测试策略设计形成的技术路线的进一步细化。如某一技术路线规定了某小型软件项目测试工作要重点围绕“功能测试与验收测试”展开。那么测试方案设计阶段就必须具体定义哪些功能需要被测试到,以及如何去测试,哪些部分需要做验收,以及采用什么形式做。
测试方案的设计除了要明确定义各个测试活动的对象、执行人员、测试进度、放行标准等一系列属性外,还要充分考虑到成本与技术可行性。一个好的测试方案总是遵循以下设计原则:测试成本与测试工作产生的效益处于最佳比值; 各具体测试活动描述清晰,目标明确,内容完备; 测试手段是可行的; 测试产生的结果是可以用于指导产品质量改进的。
在进行测试方案的具体设计时,常常也暴露出来一些难题和障碍。最常见的就是角色安排多,测试人员少。解决这一问题的根本途径是招募测试人才,建设高效测试团队。然而,远水解不了近渴。那么,就需要考虑一下变通之策:外包和外协都是不错的处理办法。另外,建议适当考虑自动测试工具,某些工具的确能减少工作压力。除了人手的问题,了解测试团队各成员的专业技能也是很重要的,避免无人担当相应角色。除此之外,设计人员还应多多参考软件开发管理类文档,在测试的时间进度安排上与开发保持同步,如果开发进度有变动,应及时调整相应的测试进度安排。
测试用例设计
测试用例设计是对测试方案实现技术部分更为细致描述,相关设计技术已经相对成熟(见表1)。本文选取了几个有代表性的方法进行介绍。