本文首发于公众号「软件测试艺术」,回复“软件测试教程”获取:麦子学院、黑马、小强软件测试全套学习教程!
刚入行或准备入行软件测试时大都停留在对测试的初步印象,测试就是对一个产品根据已有的用例执行找Bug的过程。
当工作过一段的时间后,则对软件测试有了基本的认识,找Bug仅仅是作为一个测试人员最基本的技能。测试还包括根据需求和设计文档进行用例的设计;测试报告的编写和总结、测试报告及时交付;与研发沟通推动Bug及时解决;编写部分自动化测试脚本提高测试效率;测试环境的搭建;测试工具的使用等。同时认识到测试不仅包括基本的功能测试,还有压力测试、稳定性测试、性能测试、安全测试等各种测试方法和技术。
随着工作年限和经验的增加,参与过更多的项目,也独立负责过几个模块后,对软件测试有了更高的认识,软件测试除了上面列举的内容外还包含,参与软件和产品的需求分析;编写软件测试计划和测试方案;制定系统级的测试策略;负责项目整体质量保证、不断改进测试过程,规范测试流程的建立及推广;搭建自动化测试框架提高测试效率和覆盖率;推动项目整体进度、测试资源和人力协调、测试成本控制;测试风险分析和控制等。
以上就是软件测试岗位的职责,不同方向的测试人员接触的也许不一样,如专项测试人员和测试开发接触更多的是测试技术和测试工具的使用,测试项目经理接触更多的是测试流程和项目管理内容。
最近读了《Google的软件测试之道》,整书主要从软件开发工程师(SWE)、测试开发工程师(SET)、测试工程师(TE)和测试主管4个不同的角色介绍在Google产品开发中的具体工作内容和职责要求。其中,测试工程师(TE)与我们当前软件测试工作内容最接近。以下TE指Google的测试工程师。
Google的TE是如何工作的:
TE的工作重点在于评估对用户的影响及软件产品整体目标上的风险,同时TE的工作会涉及部分编程,部分TE类似SET会编写大量的代码,另一部分TE的职责是发布工程师。
TE进入项目正确的时间:
实验性工作、尚无明确目标或用户故事的早期产品TE很少参与或不参与;
大概率可能被取消的产品或没能吸引用户使用、功能没有定型的产品TE不会介入,测试主要由开发人员自己完成;
明确要发布的产品,但在研发早期阶段,功能不断变化,最终功能列表没有确定时TE不会参与。
TE择合适的阶段测试进入项目,很重要!为了带来足够的价值,给一个项目配备多少TE,取决于项目风险和投资回报率。
TE进入项目时不需要从零开始,SWE和SET已经在测试技术和质量方面做了大量的工作作为TE的起点,TE进入产品时需要考虑的:
1.当前软件的薄弱点在哪里?
2.有没有安全、隐私、性能、可靠性、可用性、兼容性、全球化和其他方面的问题?
3.主要用户场景是否功能正常?对于全世界不同国家的用户是否都这样?
4.这个产品能与其他产品(软件和硬件)互操作吗?
5.当发生问题的时候,是否容易诊断问题所在?
这只是一个不全的列表。TE不需要自己去解决所有这些问题,但是必须保证这些问题被解决掉。
TE的根本使命是保护用户和业务的利益,使之不受到糟糕的设计、令人困惑的用户体验、功能Bug、安全和隐私等问题的困扰。TE是一个团队中全职地负责从整体角度发现产品或服务弱点的唯一角色。
TE职责的一般性描述:
1.测试计划和风险分析;
2.评审需求、设计、代码和测试;
3.探索式测试;
4.用户场景;
5.编写测试用例;
6.执行测试用例;
7.众包;
8.使用统计;
9.用户反馈。
以上职责与国内测试人员的差别主要体现在代码这一块,国内测试人员接触的代码机会比较少,特别是参与代码的评审这个环节基本缺失。国内功能测试人员偏多,只有测试开发人员开发脚本和自动化工具,接触的代码的机会较多。
另外,通过本书可以了解到Google测试无论在技术上、创新上、新工具的使用、流程标准化上都是领先的,而目前国内环境下测试工程师接触更多的是测试设计、测试执行和回归等功能测试工作,也是最容易被替代的。未来的测试人员需要拥抱变化,积极投身于自动化测试,减少人工干预,为趋近于零成本测试目标而努力。