一年前,我出版了一本教材《软件测试——基于问题驱动模式》,这本书特意加了一个副标题——“基于问题驱动模式”,这是因为考虑到软件测试所要解决的问题相对复杂,依赖于复杂的情景(上下文)——项目背景、软件研发技术和流程、实际业务的应用场景等。所以,在软件测试工作中,我们不能通过简单地提取已有知识来解决实际问题,而是需要根据具体应用场景来构建解决问题所需的知识。而对应的学习方法就是今天所提倡的“建构主义(Constructivism)”,它是学习理论从行为主义发展到认知主义后进一步发展的结果,强调学习者的主动性在建构认知结构过程中的关键作用,认为“情境”“协作”“会话”是学习环境的关键要素,注重和应用背景的紧密结合,强调在实践(实验)中学习。现在,我要推荐的这本书和之前提到的那本书有相同之处:问题驱动——作者先摆出问题,然后逐一回答。之前许多软件测试从业人员基于自己所面对的困境(相当于“背景”“情景”)提出问题,作者根据自己十几年积累的实际经验来回答这些问题,以此帮助读者构建软件测试所需的知识。
作者和我共事多年,在工作中不仅认真积极,而且善于思考、总结经验,正如作者在前言中认真地介绍“什么是知识”、区分知识和信息、进行3W分析来帮助读者重新认知学习。3W分析其实就是回答下面三个问题:
·What is the problem?(真正的问题是什么?)
·What is the root cause?(根本原因是什么?)
·What is the solution?(解决方案是什么?)
3W分析是一种优秀的实践方法,即碰到任何问题,不要急于解决它,不要只看表面现象,头痛医头、脚痛医脚,而是要明确真正的问题,找出根本原因,这样才能彻底地解决问题。本书基于这样的思路来组织内容,可以更有效地帮助读者解决问题。下面简单地举几个例子来说明本书是如何做的。
第一个例子,本书把问题归为积累,不是按照通常的软件测试知识来进行归类的,如测试计划、测试设计、测试执行,或者单元测试、系统测试和验收测试等,而是基于读者的背景(从事软件测试工作年限、想解决什么问题)来进行归类的。
·跨进软件测试之门(适合工作年限:0~2年)。
·在软件测试之路上越走越好(适合工作年限:3~4年)。
·是走“管理”路线还是走“技术”路线(适合工作年限:5~7年)。
·成为资深软件测试专家(适合工作年限:7年以上)。
刚开始从事软件测试工作的读者最关心的是如何成为一名专业的软件测试人员,工作几年之后最关心的问题是如何成长为优秀的软件测试人员。之后的成长可能会有困惑,因为再往前,前进的道路就有分叉——是走“管理”(当“官”)路线还是走“技术”(当“专家”)路线,这是每个职场人都需要做出的选择。
第二个例子,针对每个问题,本书会先给出背景,也就是让读者理解问题的上下文,为什么会有这样的问题?在什么情况下会问这样的问题?谁最有可能会问出这样的问题?这样读者就比较容易理解问题及其解决方法,从而将所学的知识和工作中的场景联系起来,让所学的知识得到良好的应用。
第三个例子,有的人问题问得可能不清楚,如“应该先学习软件测试技术方法还是工具”,作者首先答复“不能一概而论,得先看看是什么软件测试技术,再看看学习的对象是‘小白’还是‘老兵’”,然后就接口测试、性能测试等实际环境来讨论这个问题。这样容易抓住问题的本质,“其实他们是被工具的复杂度难倒了,而不是被接口测试本身难倒了”。找到了问题,再就问题进行分析解答。在特定环境下,如接口测试,就应该先掌握测试的方法,然后再学习工具。工具的种类繁多,不同的工具设计是不一样的。但万变不离其宗,方法是基础,掌握方法是首要的。掌握了方法,就更能理解工具,用什么工具也不会觉得困难,掌握工具也会相对快一些。
本书不仅仅讨论软件测试技术,而且还讨论软件测试管理;不仅仅讨论传统的软件测试,而是更多地讨论“敏捷测试”,包括敏捷测试的软着陆、高性价比的敏捷落地方案等。本书也不局限于软件测试,而是深入职场—讨论软件测试人员的职业发展,例如,前面讨论的“是走‘管理’路线还是走‘技术’路线”就是一个职场人普遍会遇到的问题。本书还讨论了其他一些有趣的问题,如“‘老兵’混职场”,并给出打破职业发展瓶颈的终极绝招。
本书覆盖了软件测试人员的“一生”,适合不同层次的测试人员阅读,虽然不是全部内容,但也值得我们学习和思考。对于软件测试新人来说,有困惑时拿起它,读几个问题,也许它可以陪伴你走完职业之路。
朱少民
一位软件测试老者