一个软件测试小白的进阶之路

本贴最后更新于 1561 天前,其中的信息可能已经时移世易

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

1

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

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

2

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

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

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

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

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

3

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

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

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

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

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

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

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

回到家,强哥喝了口水就开始了解开发框架,上网了解了 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 高级特性,开发框架 ,前端语言、数据库和部署技术,然后就是源码分析能力了。行业规则制定者,这个信念已经在心里。

  • Python
    104 引用 • 237 回帖 • 1 关注
1 操作
yuze 在 2020-08-06 17:51:05 更新了该帖
回帖
请输入回帖内容 ...