很多新手,不知道软件测试学习该如何开始,软件测试需要掌握哪些知识。下面是根据本人的理解,粗略整理的一个学习大纲,基本上涵盖了软件测试工程师需要掌握的全部技能,希望对刚入行或者准备学习测试的朋友提供一点指引。
测试的定义、测试的分类、测试的方法、测试的生命周期。测试计划、测试方案、测试策略、测试用例的编写。BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型敏捷等等
以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
第一个是熟悉业务
第二个是分析定位问题
不管你到哪一家公司,你接手什么样的项目,熟悉业务的话,一定是你进公司要做的第一件事情。分析定位问题是你作为软件测试人员一定要具备的。
试想一下,你如果去提交一个bug,我只能说这个页面、这个数据显示错了。
但另外同事B他说,这个数据它错误的原因是什么,是某个模块,或者某个开发人员的代码有问题。他如果能准确的定位到这个问题,不说他会更受公司重要之类的。但是他会让开发更喜欢和他合作一些。
如果我们懂数据库的话,会对我们熟悉业务与分析定位问题会有什么帮助呢?
首先,如果我们懂数据库了,然后我又熟悉业务。
熟悉业务我们通常只会结合需求文档,然后我手动去操作。实践去熟悉我们的业务。
但如果你懂数据库,你可以通过数据的表结构,来帮助你来熟悉业务。
Linux操作系统一直被用作重要的服务端操作系统,作为软件测试工程师,我们常常需要在服务器端查看日志,从而定位问题的源头。当然,更多的场景是,我们需要在linux系统上搭建测试环境。这些都需要我们掌握基本的linux系统知识,熟悉常见的命令及工具。更高级的使用,是通过编写shell脚本,自动化完成测试任务。
接口测试是测试系统组件间接口的一种测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
由于如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求, 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
性能测试,顾名思义,就是测试软件性能方面的质量,它是一种非功能性的测试。
在整个测试中,应用程序的性能在预期的或更高的负载下进行评估。在性能测试期间,我们评估系统的不同性能属性,如响应时间(速度)、可靠性、资源使用率、可扩展性等。
进行性能测试主要是为了保障软件能够在期望的负载下运行良好,并且通过发现性能问题来消除应用程序的性能瓶颈。
性能测试常用的工具有jmeter和loadrunner,大家可以根据需要进行学习。
自动化测试是指将人为驱动的测试行为转化为机器执行的过程。实际上,自动化测试经常使用一些测试工具或框架来编写自动化测试脚本来模拟手动测试的过程。例如,在项目迭代过程中,持续回归测试是一项非常枯燥且重复的任务,测试人员每天都在从事重复性的任务,工作效率低。此时,如果进行自动化测试,可以帮助测试人员从重复枯燥的手动测试中解放出来,提高测试效率,缩短回归测试时间。
学习自动化测试的基础是掌握一门编程语言,个人优先推荐Python,其次Java。还要掌握相关的自动化测试工具selenium、appium等,当然还要掌握常用的自动化测试框架。
对于接口自动化测试,如果用python实现的话,则需要掌握requests库和unittest框架的使用。