zoukankan      html  css  js  c++  java
  • 一个软件测试小白的进阶之路

    强哥是一个软件测试新人,毕业以后他的职业发展是这样的。

    1

    功能测试人员,也就是我们常常俗称的进行点点点测试工程师。前 1-2 年做功能测试,使用其他人开发的工具进行测试。这个阶段的测试工作都比较初级,严重依赖于别人开发的工具和系统。当系统进行升级换代的时候,强哥会明显的感觉到有阵痛期,一下适应不了这种变化。

    做了 2 年功能测试,强哥悟出了一个道理:功能测试人员一般最遵守行业规则,但是也最没存在感。强哥发誓在下班以后学习自动化测试技术,摆脱这种随便被人甩锅的命运。

    2

    自动化测试人员。强哥终于面试上了一个自动化测试的岗位,这一年每天晚上熬夜学习终于得到了回报,试用期结束,强哥已经上手了第一份自动化测试的工作。

    他在部门内部受到了其他同事尊重,尤其是部门的功能测试人员,一双双膜拜的眼神。强哥心里窃喜,这一年的付出是值得的,现在我也可以给别人脸色了。

    自动化测试的工作内容,主要是使用编程语言编写脚本啊,进行自动化测试。强哥明显感到了测试效率的提升,一个人可以干两个人的活,用老板的话说:小强不错,能打能扛。

    2 年过去了,小强隐约感觉到了几点自动化测试工作的不足:

    • 写出来的代码,功能测试人员看不懂,也没有办法用。平时他和功能测试的同事也是各干各的,相当于在两个部门。这就意味着,从老板的角度来说,没有发挥 1 + 1 > 2 的效应。

    • 自己使用的是 Python 语言,部门的另外一位自动化工程师用的是 Java 语言,她被招来做另外的项目测试。强哥很想去看看她的代码是怎么写的,怎么运行的,奈何看不懂,也不知道怎么运行。同是一个岗位的人,却没办法切磋技术,好不孤独啊。

    • 还有一个问题。前 3 个月自己写的代码,过几个月自己再去看,居然有点看不懂了,要调试一段时间才能弄清楚中间的思路。要是被别人知道了,肯定会认为自己很菜的,自己代码自己都看不懂。

    虽然看到了自动化岗位的一些不足,但是强哥心里清楚,相比之前的功能测试,瞧别人的脸色,现在简直太幸福了。自从学习了 Python 自动化测试,他感觉真正融入了这个行业,情不自禁的开始关心行业动态,关心起 Python 这门编程语言的发展势头了。

    3

    在一次技术开发者大会上,强哥接触到了 ”测试开发“ 这个岗位,心中很久的疑惑终于被解开了。进行技术分享的是国内某大型电商平台的技术专家,详细介绍了测试开发这个岗位的优势和进阶路线。

    强哥赶紧掏出一直放在双肩包里的袖珍笔记本,开始记录:

    • 测试开发是给测试部门开发交互界面友好的测试工具和效率工具,像大家熟知的 Postman 和 Jmeter 属于测试开发的工作;

    • 测试开发研发出来的产品,功能测试人员和其他工作人员经过简单培训就可以上手使用,充分发挥 1 + 1 > 2 的效应;

    • 可以将部门管理,BUG 管理,自动化运行,测试报告, 性能分析, 同事登录等工作模块全部集成到一个平台,大大减少了部门内部和跨部门的沟通成本,提高整个部门和工作的工作效率。

    • 测试开发是行业规则大的制定者。使用工具和平台的人需要遵循这些规则。强哥终于知道自己以前做功能测试的时候是被谁左右了。他默默下定决心,要成为测试开发,成为规则制定者。

    测试开发这个工作确实挺好的,商业价值和技术价值都很高,技术演讲到后半段,强哥发现,事情也没那么美好,准入门槛挺高的,要学习的内容很多,初略总结下来,包含的最基本内容就有许多。

    • HTML,GUI ,手机端等页面构建技术。用来给使用者观察和使用的 UI 界面。强哥在自动化测试的时候学过 HTML,打算再学深一点,就可以比较轻松的完成前端页面技术积累。

    • 服务端开发技术。最初强哥不理解这是个什么技术,后来越听越明白,其实就是进行测试的时候接触的后端开发,以前经常和这帮人打交道,报了 BUG 去找他们,他们还死不认账,几次差点和他们打起来。强哥忽然想到:如果我要学这个技术,那我岂不是可以和后端开发做同样的事情了?他们私底下都在做自己的产品和工具,我也可以啊,搞不好还能融到资,卖点钱。

    • 数据库。数据库这东西强哥也接触过,不过了解得不太深入,只会几个简单的 SQL 查询语句,一旦设计到建表和多表查询,那就只能召唤搜索引擎了。这方面可能还需要下点功夫。

    • 服务部署。服务部署强哥还是第一次听,很多概念都不懂,不过有一个名词强哥经常听到,那就是 Docker,以前只知道概念,完全不知道它干嘛用的,今天终于算是启蒙了。

    听完这个基础技术准备,强哥感到热血澎湃,都想立刻起身回家开始学习这些东西了。可没过几分钟,站在台上那位大佬就给他泼了一盆冷水。他一再强调,这些是入门测试开发的基础内容,要真正开发一款好用的测试工具和平台,只会简单的使用这些技术是不够的。

    必须要对网络协议有一定的了解,要对开发模式非常熟悉,要会使用版本控制,更重要的,要深入编程语言的高级特性和编程技巧,如果 CS 基础不够,玩出来的都会是花架子,对职业发展没有太多好处。

    强哥心灰意冷,大学学的 CS 课程全部忘光了,现在要捡起来谈何容易啊。没想到一个小小的测试岗位要求这么高。不过演讲者还是给出了一个比较可行的方法,那就是熟读源码,分析源码。我们使用的框架,比如 Selenium 和 Appium, 里面包含了很多优秀的设计思想,强哥当年学习的时候被整得一脸懵逼,苦不堪言,一度想放弃,后来用得此次多了,源码重读的次数也越来越多,慢慢能够理解他们写的代码有多么厉害了。想到这,强哥不由得感叹一声,要是有个人带我分析源码该有多好啊,能少走好多弯路。

    演讲结束了,强哥决定回家试一试用 Python 语言写一个最简单的 UI 测试工具,在公交车上他已经思考好了大体的框架:

    • HTML 页面展示;

    • Python 开发框架接受 HTML 页面上的请求。现在还不知道有什么框架,回去了解一下。

    • 之前写好的测试脚本。将脚本封装成函数或类,开发框架接受到请求,调用对应的方法就完成了自动化测试。

    回到家,强哥喝了口水就开始了解开发框架,上网了解了 Flask 和 Django 两大框架,他赶紧把想到的架构图画下来。

    如果用 Java 开发,把中间的开发框架换成 Springboot 就可以了。

    1. 先把 HTML 写好:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>Lemon Web Test</title>
    </head>
    <body>
      请选择你要测试的项目:
       <form action="http://127.0.0.1:5000/ui-test/" method="get">
       <select name="project">
           <option>百度</option>
           <option>豆瓣</option>
           <option>Github</option>
       </select>
           <input type="submit">
       </form>

    </body>
    </html>
    1. 强哥看网上 Flask 用的代码不多,他初略看了一下官方文档就开始依样画葫芦写简单的 Demo。

    from flask import Flask, request

    # 初始化服务对象
    app = Flask(__name__)

    @app.route("/ui-test/")  # 定义访问的网址
    def ui_test():
       # 获取 HTML 数据,要测试的项目或者功能
       project = request.args.get('project')
       # 自动化测试脚本封装的函数
       if project == '百度':
      # auto_test()

       # 返回给用户操作成功
       return "test success"

    # 运行服务,开放端口 5000
    app.run(port=5000)
    1. 至于自动化脚本,他从以前写的 Selenium 脚本随便抽了个最简单的拿出来用,封装成 auto_test 函数。

    def auto_test():
    # 初始化了一个浏览器
       driver = webdriver.Chrome()

       # 进入项目路径
       driver.get('http://www.baidu.com')

       # 找到要输入的输入框, 元素定位
       input_ele = driver.find_element_by_id('kw')
       input_ele.send_keys('柠檬班')
       # 提交内容
       input_ele.submit()

       # 定位元素
       e = WebDriverWait(driver, 20).until(
           ec.presence_of_element_located((By.CSS_SELECTOR, 'h3.t')))

       # 测试结果是否通过
       if '柠檬班_腾讯课堂' in e.text:
           driver.quit()
           return 'Test Success'

       driver.quit()

    虽然这个 Demo 非常的简单,但是强哥已经通过自己写的例子认识到测试开发的强大之处了,接下来,他要努力学习 Python 高级特性,开发框架 ,前端语言、数据库和部署技术,然后就是源码分析能力了。行业规则制定者,这个信念已经在心里。

    =====请大家尊重原创,如要转载,请注明出处:转载自:https://www.cnblogs.com/wagyuze,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。=====
  • =====有任何疑问,欢迎加微信 qd20150815 (加时请备注:博客园-雨泽)=====

查看全文
  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/wagyuze/p/10813630.html
  • Copyright © 2011-2022 走看看