2017年qa应掌握的技能

DevOps & 敏捷方法

随着对于在交付期限内完成项目的迫切需求,测试人员需要学习敏捷方法和DevOps,因为它们可以帮助促进团队之间的协作和改进迭代间工作模式。敏捷方法为测试项目提供了项目开发所需要速度与效率,而DevOps可以从开发,分析和质量保证流程中协助跨职能的团队合作,从而在更短的时间内产生出高质量的产品。此外,学习这些方法最终消除了角色间僵化和孤岛,让团队密切关注开发流程和持续发布。
devops
向上面devops工作流一样,devops 打通项目流程每一个环节,从代码的管理,到build、test 到最好部署到prod环境,对于qa来说,了解其中的流程,对于qa工作有非常的好处,通过devops一些监控工具例如airbrake我们可以实施查看系统发生的问题,与dev一起分析问题发生的原因,通过GA newrelic这些工具,我们可以分析系统用户行为,给系统性能测试与分析提供数据上的支持。通过对于了解devops工作流,我们可以分析项目中存在风险,及时改进流程,通过docker等容器化的工具,我们可以将测试放到容器中执行,降低测试对于环境的依赖,进一步改进自动化测试,所以说了解devops知识对于qa来说百利无一害,何乐而不为呢。

自动化
面对应用程序日益增加复杂性和系统集成,依靠手动测试已经无法完成全部测试工作。为了测试浏览器兼容性,性能,无头以及数据库和集成层面,测试人员应该学习自动化相关的技能,因为它可以提供业务逻辑和技术层面更高更准确更可靠支持。此外,还有几种自动化测试工具专门支持特定领域的测试类型,并具有快速高效地完成任务的功能。
selenium
如上图,很多QA或者tester有一个误区,提到自动化张嘴闭嘴都是selenium,甚至有的人连webdriver与selenium区别都不知道,所以这里我要澄清,ui自动化测试只是自动化测试中的一小部分,还包括api,接口,单元测试,集成测试,甚至性能测试我们都应该称为自动化测试。

网络与移动技术
webandmobile

每个测试人员还必须熟悉web和mobile相关技术,以便他们能够更好了解应用程序的类型与架构,如何构建,以及相应的可扩展性,并为以后测试提供相应背景知识。这对于测试人员非常重要,因为它能够指导QA理解项目架构与所面临技术挑战,提供更有效的QA解决方案。
这里学问更多,完全是两大方向,知识领域都非常的广大,例如web端我们可能要测试不同浏览器兼容性,对于mobile来说,尤其是android这种版本碎片化以及各种自定义系统以及ui改更能会造成各种个样的问题,对于mobile我们甚至要考虑更多场景,例如app是否具有内存泄露,电量消耗的快慢,横竖屏的影响等等。不同构建工具,开发环境的区别等对于qa来说又要面对一堆未知领域,没事,继续加油。

SDLC 软件开发生命周期(Systems Development Life Cycle)
sdlc

测试人员也被建议学习软件生命周期管理技能,这将有助于QA更轻松了解应用程序开发任务和测试计划周期。对SDLC周期的深入了解还有助于预测应用程序的复杂性,从而提前采取正确的措施。因此,测试人员还必须学习适用于项目开发生命周期流程的几种开发方法,如瀑布,看板,Scrum,精益等。
作为一个qa,我们应关注软件开发生命周期中的每一步,了解敏捷开发迭代中的各个环节及时作出反馈,所以有时qa也需要承担scrum master的责任,例如某个story进度超过预定期限未完成,我们就应当了解原因,及时与团队成员以及客户沟通。

理性分析与逻辑思维
sdlc
为了保持竞争力,QA还应该学使用理性,分析性和逻辑性思维来思考问题,因为这些技能在测试应用时可以帮助QA识别错误,了解问题的复杂性,评估应用程序的不熟悉的功能并相应地进行测试。具有良好的分析和推理能力有助于根据在不同场景下验证应用程序,并根据预先定义的标准来评估应用程序。这进一步有助于评估相关信息,提出明确的问题,确定优势和弱点,而不会持有偏见,这有助于实施正确的行动方案和解决方案。

社交网络
contact
任何行业的任何专业人士都需要社交网络技能。由于社交网络可以即时访问讨论,资源和内容,因此在这方面的技巧有助于与其它QA进行互动,学习新事物并更新自己的知识体系的广度与深度。拥有社交网络技能还可让您与各种专家进行交流,交流疑问,当然也可以建立长期的合作关系,帮助您的专业技能和企业达到所需目标。

测试工具和技术
tools
每个QA都必须了解不同的测试技术和使用工具。无论你的项目属于那个领域和应用程序类型,都应具有黑盒测试,渗透测试,安全测试,系统测试,单元测试等,测试人员具有多功能性,可以帮助他们在任何类型的项目上工作。此外,随着商业化的专业测试工具数量的增加,例如bug跟踪工具,测试管理工具,GUI测试工具,自动化工具等,测试人员可以了解这些工具的特点,选择适用于所在项目需求工具,以满足不同的需求和复杂性。

编程
tools

当我们谈论编程时,QA当然不会像开发人员一样工作,但是QA需要理解应用程序的实现原理与项目架构,这样我们可以更容易的创建所需的测试。编程知识有助于识别应用程序代码中的可能发生的错误,这就进一步降低了应用程序发生错误的概率。所以建议学习至少两种编程语言,这样的话测试人员就能够更好的了解应用程序的解决方案,以确保的应用程序生命周期的质量。

沟通 - 书面和口头
communicate

每个QA还应具备良好的沟通能力。通过良好的沟通,对于项目的所有角色来说,QA应该是一个好的作家,演讲者,听众和读者,例如将项目的状态更新给客户,向团队通知story的需求变更,与开发人员交流bug的细节,将需求文档转化为测试用例,准备测试报告等。除此之外,良好的沟通有助于表现出个人高度的理解能力,进一步帮助QA在逻辑思维和理性分析基础上向技术人员和非技术人员提供反馈意见。

智力与创意
软件测试并不是一个程序化或平凡的任务,而是一个需要创造力和逻辑分析的过程。智力和创造力无法改变,但是,可以通过质疑应用程序行为并分析应用程序的不同方面来了解其工作原理。另外,通过设计一些应用场景,测试人员可以尝试探索性测试,来识别更多缺陷,并寻求提供有效产品质量的可能解决方案。

测试计划和文档

测试计划和文档对于每个QA至关重要,因为它有助于确定正确的需求以及采取合理的步骤。此外还可以帮助跟踪需求变化,检查测试过程和跟踪偏差,并有助于报告和记录工作。一个记录良好的测试过程也可以帮助个别测试者和企业将正确的预算和资源分配给一个项目,这就是为什么测试计划和文档技能是每个测试人员必须学习的重要技能之一。

项目管理
学习项目管理的技能,帮助QA提高对于处理问题的能力。例如项目中某个环节发生问题,通过项目管理技能,能够及时的分析问题影响广度,及时寻找相关人员协作处理问题,项目管理技能有助于QA了解项目流程中所存在的问题,来帮助更好改进整个测试过程。

客户支持
customers

与过去项目有所不同,现代测试项目要求QA提供客户支持并从他们的角度思考。作为QA并不意味着我只是关心功能是否正确,因为测试项目的成功或失败因素很多,而不仅仅只是局限于功能层面,因此QA应及时应对和支持客户提出的需求,并所他们角度思考哪些方面仍然需要改善。

报告
report
优秀的QA必须拥有良好报告技能,才能向项目的成员与客户提供测试项目和被测试应用的确切状态。这种报告实践可以更好地协调整个测试项目,同时也为高层管理人员提供执行详细的数据,例如测试用例覆盖率,bug的数量,发布时间表等,最终有助于其做出正确的决策。

独立工作
最后,QA应该学习如何独立工作的技能。这将提高他们从需求理解(技术和业务需求)到产出的最终交付工作的能力,采取正确的步骤,在没有他人的帮助或经理的监督。学习独立工作将会增加对他们的信心。

无论经验多少,QA都应努力不断学习和提高软件测试技能和知识。无论是自学习还是参与培训计划,测试人员应不断学习新的方法,以提高测试工作中的效率,并继续应用新技能和学习,使自己处于领先地位。