段念先生为《探索式测试实践之路》撰写的推荐序
很荣幸成为《探索式测试实践之路》的首批读者,并能为该书作序。我与史亮及高翔“神交”已久,虽暂未有机会把酒言欢,纵论天下,但从他们的文章和文字中,我早已看到了他们对软件测试的热情和执着,对测试本身的深刻思考和颇具成效的实践。史亮与高翔都是热爱思考、热爱实践并乐于分享的人,这本《探索式测试实践之路》记录了他们对探索式软件测试的实践,同时,也包含着他们对探索式测试的极大热情与思考。
随着敏捷开发与敏捷测试在国内逐步被接纳,探索式测试也成了一个被广泛关注的话题,似乎“忽如一夜春风来”,探索式测试就在这春风中突然吹过了国内的测试领域。实际上,探索式测试并不是一个全新的概念,基于探索方式进行测试的思想与实践在若干年前就早已存在,只不过,在那些时代,探索式测试被当成“奇技淫巧”,与“随机测试”一样难登大雅之堂,不在主流的测试方法之列。我第一次无意识地尝试探索式测试的经历是在2003年,当时我在工作中使用一种被我自己命名为“测试用例预演”的方法,在真正的产品尚未具备的时候,通过主动沟通获取产品的设计信息,并据此设计一些场景测试,和开发人员通过“口头交互”的方式来执行测试。这种看上去完全“无厘头”的测试方法取得了让我惊讶的效果,帮助我在软件设计和实现阶段发现了不少问题。现在看起来,这种方法就是一种典型的探索式测试实践方法。当然,这种对探索式测试的无意识的应用尽管能够在某些情况下取得效果,但却很难像基于脚本的测试一样全面评估测试的覆盖率,最多只能作为一种补充实践而已。
“难以评估测试的效果与覆盖率”一直是探索式测试饱受诟病的一点。的确,在相当长的时间内,由于缺乏系统性的理论指导,探索式测试一直很难同随机测试划清界限,难以在软件测试领域内占据主要位置。但是,探索式测试真的无法成为软件测试的主流方法吗?一方面,当越来越多的软件企业面临着快速发布的压力、面临着必须更快地完成开发与测试的压力时,完全遵从传统的软件测试思路要求的“先设计测试,再执行测试”的方法越来越显得力不从心;另一方面,随着探索式测试的理论逐渐成熟,以及越来越多实践者在自己的工作中实践探索式测试并取得了一定的成绩,探索式测试也就自然而然地进入了测试的主流世界。探索式测试强调“同时进行测试设计与执行”,通过执行阶段的发现进一步设计新的测试,能够充分发挥软件测试工程师的“主动发现和思考”的技能,既可以让测试工程师在工作中获得更多的成就,又可以让测试本身进行得更加深入和彻底。
James A.Whittaker在《探索式软件测试》一书中首次对探索式测试进行了系统化的描述,探索式测试中的“局部探索”方法解决面向功能点和场景的测试,而探索式测试中的“全局探索”方法则可以用于解决测试策略的问题。结合局部和全局的探索方法,测试工程师能够使用探索式测试帮助自己在复杂的环境中进行卓有成效的探索。然而,要想真正在千变万化的实际工作中成功地应用探索式测试,仅仅了解探索式测试方法的思路和应用方式并不够。如同要赢得一场战争的胜利,除了要有正确的战略思想外,还需要有良好的武器(工具)支持、在具体的复杂环境下使用合理的战术(应用场景),要想在实际工作中应用好探索式测试,需要测试工程师们掌握探索式测试中的主要可用工具,具有在特定场景下应用探索式测试的能力。
史亮和高翔把自己一段时间以来的工作心得和对探索式测试的理解放到了本书中,从探索式测试的方法、工具、与自动化的结合等多个方面阐述了他们眼中的探索式测试。我在拿到本书后,一路读下来,一气呵成,毫无顿挫之感,而本书精彩的案例选择更是让人欢喜不已。不得不说,这是一本国内软件测试方面难得的原创佳作,期待作者的良苦用心能让更多读者喜欢这本书,通过这本书了解并喜欢上趣味十足的探索式测试。
乐元素技术副总裁