首先说说什么是软件测试,为何要进行软件测试。

软件测试就是在有限的项目周期内进行软件测试活动,尽可能和有效的发现软件存在的问题,并帮助开发人员解决这些问题,保证产品质量。

软件测试流程首先是设计测试用例,然后制定测试计划,组织测试人员执行测试用例,发现问题后开bug,在开发人员fix bug后,测试人员在去verify bugs,最后在产品release前,生成测试报告

我们follow这样的流程,是因为流程都是前人从很多经验中总结的出的想法,正确的流程可以帮助我们更高效的组织工作,解决问题。虽然是相同的流程,但如何组织人员开展工作,却大不相同了。比如设计测试用例,。为什么要设计测试用例,,对着文档测试不就可以了吗?测试用例非常重要,这是我到WR做测试工作时,学到的第一课。开始不甚理解,但随着工作的深入,慢慢理解到第一,测试用例可以更清晰的描述产品的feature,当我们制定一个测试计划的时候,选择哪些测试用例,就可以知道这次测试活动我们测试了产品的哪些功能。第二,测试用例可以帮助我们衡量工作量,跟踪项目的进度,有效地进行工作时间的分配。第三,t测试用例可以更好的反应我们的test point,当我们分析一个feature的时候,应该全方面的去想哪些地方需要测试,包括正面测试,负面测试 , 性能测试,兼容性测试等等。测试用例的优先级也是非常重要的。在WR的时候,都会针对一个bugscenario来设计测试用例设计测试用例绝不是对着文档copy/paste,这是一个思考的过程,体现了对产品的理解,软件的基础知识,测试经验和技巧。在WR时,当和经验丰富的测试人员(如manager)一起讨论新feature测试用例时,我经常会在心里感叹“呀,原来可以这样测”或者“对,也要从这方面测一下”,对他们的经验和知识非常钦佩,也从中学到了很多。

再说制定测试计划。我参与的WR产品需要在多个版本的多个平台上进行测试,真的非常具有挑战性。项目的周期是固定的,如何在有限的时间内更多的保证产品的质量?第一,针对产品新支持的平台多测试,因为这部分代码改动的最多。第二,对其他版本或平台的Regression test,选择最重要的feature(通常是优先级高的测试用例)进行测试。第三,对可能会有潜在的客户使用的版本或平台测试。当我们的测试计划做出来的时候,就十分清楚大概需要多少工时完成这次测试。我们测了哪些东西,以及风险就都清楚了。

然后就是bug的管理了。WR对于bug的管理是十分清晰的,当一个bug被提交时,会给开发的manager发邮件,状态是new。开发的manager负责更新bug的状态,分配给开发fix。这也要求测试人员创建defect质量很高,要把步骤优先级,测试环境,错误信息,当然包括log截屏。优秀的测试人员甚至会告诉开发,他认为可能是那一部分code的问题。因为开发fix bug时,很可能要去重现问题。当然如果问题很简单,开发defect的信息中就知道是哪部分code的问题,他就直接改了。当defectfix后,状态变为fixdefects在某个平台对应的fix number会变为integrated时,测试就可以去verify bug了。问题解决了,要把fix标为pass,没有解决,标为failrework。这样defect的流程又会重新开始,直到bugfix掉。