南昌购物网站开发,永州网站建设优化,产品广告视频制作,长春seo排名收费软件测试工程师面试的时候#xff0c;但凡简历中有透露一点点自己会自动化测试的技能点的描述#xff0c;都会被面试官问#xff0c;那你结合你的测试项目说说自动化测试是怎么实现的#xff1f;一到这里#xff0c;很多网友#xff0c;包括我的学生#xff0c;也都一脸…软件测试工程师面试的时候但凡简历中有透露一点点自己会自动化测试的技能点的描述都会被面试官问那你结合你的测试项目说说自动化测试是怎么实现的一到这里很多网友包括我的学生也都一脸懵逼的样子。
有心放弃吧但是看着那么高的薪资还是很眼热的但是说吧可感觉自己说的是不是太简单了能成么其实大家远远不需要这么担心因为自动化测试没有大家想的那么神秘那么可怕说出了本质那就是都一样的
自动化测试的本质是把以人为驱动的测试行为转化为机器执行的一种过程。一般在设计了测试用例并通过评审之后由测试人员根据测试用例中描述的规程一步步执行测试得到实际结果与期望结果的比较。自动化测试的目的是为了节省人力、时间或硬件资源提高测试效率。——这是百度百科中的介绍。
从上面一段文字描述中我们能够知道自动化测试跟手工测试有着密切的关系并且是先有手工测试设计测试用例再将测试过程转换为脚本语言让计算机运行的过程。
所以大家在在进行自动化测试的过程实现的时候一定要根据手工测试中使用的测试用例进行设计脚本因为自动化测试要模拟人的实际操作。下面我们以实际案例说一下自动化测试的实现过程和手工测试的关系。
案例在QQ注册页面对QQ的注册进行功能测试。
页面地址https://ssl.zc.qq.com/v3/index-chs.html
确认页面中各个表单元素的需求
1、昵称必填不能超过24个字母或12个汉字 2、密码必填8-16个字符必须包含字母、数字、符号中至少2种 3、国家地区编码默认 86 4、手机号格式必须正确用来接收验证码 5、验证码输入收到的验证码 6、手机号符合要求可以点击【发送短信验证码】否则不可点击 7、用户协议复选框默认处于勾选状态。 接下来我们设计一条测试用例
【用例标题】各项信息填写正确注册QQ
【测试步骤】
1打开Firefox浏览器
2在浏览器地址栏输入页面地址https://ssl.zc.qq.com/v3/index-chs.html
3在昵称文本框输入测试小梧
4密码框输入TestKai2020
5手机号码输入13366244232未注册过
6点击【发送短信验证码】按钮
7输入收到的短信验证码321564
8点击【立即注册】按钮
【预期结果】
页面跳转到注册成功页面。
假如页面地址为https://ssl.zc.qq.com/v3/success.html
如果大家觉得上面没问题能看懂那说明我的测试用例写的还行哦
但是这是刚刚开始测试用例的设计就是这个样子大家都看得懂的测试用例才是好的用例。执行就不说了因为接下来我们要说的是如何利用自动化进行实现。
自动化测试有三点核心内容脚本语言对象识别自动执行和结果判断。这不是什么名人名言是凯哥自己说的。
首先选脚本语言。我们就选择比较流行的Python。简单、好用、时髦。选择Python3.7版本不高也不低正好。
其次做Web系统的自动化测试我们选择对象识别机制的时候就选择Selenium有同学可能说QTP/UFT也行但是我想说这个Selenium不花钱。Selenium就不介绍了。安装好Python后直接使用pip install selenium就能装上。
最后自动执行我们要用外部参数文件脚本写好了使用参数化多跑几次总不能换一个数据手工测试要用到等价类、边界值或者其他很多正常数据就改一次代码吧还有结果得计算机通过脚本自动的判断如果没有那还叫什么自动化
当我们确定好了这几个内容之后就可以开始写代码了。确保Python、Selenium都安装成功。
# 导入Selenium包和time包
from selenium import webdriver
from time import sleep# 定义函数
def test_qq_reg():# 定义浏览器驱动driver webdriver.Firefox()# 打开页面driver.get(https://ssl.zc.qq.com/v3/index-chs.html)# 休眠2秒钟sleep(2)# 在昵称文本框输入 “测试凯哥”driver.find_element_by_id(nickname).send_keys(测试凯哥)sleep(2)# 在密码文本框 输入“TestKai2020”driver.find_element_by_id(password).send_keys(TestKai2020)sleep(2)# 在手机号文本框输入 “13366244232”driver.find_element_by_id(phone).send_keys(13366244232)sleep(2)# 点击 发送短信验证码 按钮driver.find_element_by_id(send-sms).click()sleep(2)# 在短信验证码文本框输入 321234driver.find_element_by_id(code).send_keys(321234)sleep(2)# 点击 立即注册 按钮driver.find_element_by_id(get_acc).click()sleep(2)# 判断注册后页面是否跳转到 成功页(预期结果)exp_url https://ssl.zc.qq.com/v3/success.htmlsleep(2)# 浏览器获取页面url地址real_url driver.current_url# 判断实际结果和预期结果是否相同 相同就输出 success# 如果不同就截图保存if exp_url real_url:print(success)else:driver.get_screenshot_as_file(./test_qq.png)# 调用函数运行脚本
test_qq_reg()以上内容就是把我们手工测试用例中的内容完全使用自动化脚本去实现不要崇拜我哦只要好好学了都能学会
但这还只是开始刚才我们就说了如果要改变测试数据难道要我去改代码么那还不如手工测试呢接下来我们就看看如何实现自动化脚本迭代运行。
我们使用CSV表格进行测试数据的构建和保存。 然后在脚本中导入数据。下面直接看代码
# 导入Selenium包和time包
from selenium import webdriver
from time import sleep
# 导入csv包
import csv# 定义函数
def test_qq_reg():# 读取csv中的数据默认会以列表嵌套的形式保存数据到脚本的变量中data csv.reader(open(reg_qq.csv,r)) # 定义浏览器驱动driver webdriver.Firefox()# 使用循环获取data中的列表数据for info in data :# 定义昵称变量获取列表中的用户名name info[0]# 定义密码变量获取列表中的密码passwd info[1]# 定义手机号变量获取列表中的手机号phone info[2]# 定义验证码变量获取列表中的验证码code info[3]将代码中输入数据的地方都用上面的变量代替# 打开页面driver.get(https://ssl.zc.qq.com/v3/index-chs.html)# 休眠2秒钟sleep(2)# 在昵称文本框输入 “测试凯哥”driver.find_element_by_id(nickname).send_keys(name)sleep(2)# 在密码文本框 输入“TestKai2020”driver.find_element_by_id(password).send_keys(passwd)sleep(2)# 在手机号文本框输入 “13366244232”driver.find_element_by_id(phone).send_keys(phone)sleep(2)# 点击 发送短信验证码 按钮driver.find_element_by_id(send-sms).click()sleep(2)# 在短信验证码文本框输入 321234driver.find_element_by_id(code).send_keys(code)sleep(2)# 点击 立即注册 按钮driver.find_element_by_id(get_acc).click()sleep(2)# 判断注册后页面是否跳转到 成功页(预期结果)exp_url https://ssl.zc.qq.com/v3/success.htmlsleep(2)# 浏览器获取页面url地址real_url driver.current_url# 判断实际结果和预期结果是否相同 相同就输出 success# 如果不同就截图保存if exp_url real_url:print(success)else:driver.get_screenshot_as_file(./test_qq.png)sleep(2)# 调用函数运行脚本
test_qq_reg()然后可能还有网友说那用到了框架怎么办呢我们上面的代码没有使用任何框架可以理解为就是个人行为但是企业里面的代码是要统一管理的各自写各自的没有统一标准那怎么行啊于是就有了unittest这样的框架进行代码编写和组合的规范化还有了像HTMLTestRunner这样能够生成网页版测试报告的外部库和包也称为框架。所以我们的代码又可以强化了
# 导入Selenium包和time包
from selenium import webdriver
from time import sleep
# 导入csv包
import csv
# 导入unittest包
import unittest
#导入生成HTML测试报告的包
from HTMLTestRunner import HTMLTestRunner# 定义测试类,继承unittest
class QQ(unittest.TestCase):# 定义函数def test_qq_reg(self):# 读取csv中的数据默认会以列表嵌套的形式保存数据到脚本的变量中data csv.reader(open(reg_qq.csv,r)) # 定义浏览器驱动driver webdriver.Firefox()# 使用循环获取data中的列表数据for info in data :# 定义昵称变量获取列表中的用户名name info[0]# 定义密码变量获取列表中的密码passwd info[1]# 定义手机号变量获取列表中的手机号phone info[2]# 定义验证码变量获取列表中的验证码code info[3]将代码中输入数据的地方都用上面的变量代替# 打开页面driver.get(https://ssl.zc.qq.com/v3/index-chs.html)# 休眠2秒钟sleep(2)# 在昵称文本框输入 “测试凯哥”driver.find_element_by_id(nickname).send_keys(name)sleep(2)# 在密码文本框 输入“TestKai2020”driver.find_element_by_id(password).send_keys(passwd)sleep(2)# 在手机号文本框输入 “13366244232”driver.find_element_by_id(phone).send_keys(phone)sleep(2)# 点击 发送短信验证码 按钮driver.find_element_by_id(send-sms).click()sleep(2)# 在短信验证码文本框输入 321234driver.find_element_by_id(code).send_keys(code)sleep(2)# 点击 立即注册 按钮driver.find_element_by_id(get_acc).click()sleep(2)# 判断注册后页面是否跳转到 成功页(预期结果)exp_url https://ssl.zc.qq.com/v3/success.htmlsleep(2)# 浏览器获取页面url地址real_url driver.current_url# 判断实际结果和预期结果是否相同 相同就输出 success# 如果不同就截图保存if exp_url real_url:print(success)else:driver.get_screenshot_as_file(./test_qq.png)sleep(2)#生成单元测试流程
testunit unittest.TestSuite()
#加载测试用例可以把多人的测试用例导入进来放在一起
testunit.addTest(QQ(test_qq_reg))
#创建测试报告
fpopen(./result.html,wb)
runner HTMLTestRunner(streamfp,titleQQ注册测试,description用例执行情况:)
runner.run(testunit)
fp.close()好看到这里希望能够消除大家对自动化测试实现过程的恐惧真的没有那么多难点如果大家还有什么疑惑可以找我深入沟通和交流哦
最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走【文末领取】 【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】 一、Python编程入门到精通
二、接口自动化项目实战 三、Web自动化项目实战
四、App自动化项目实战 五、一线大厂简历
六、测试开发DevOps体系 七、常用自动化测试工具
八、JMeter性能测试 九、总结文末尾部小惊喜
生命不息奋斗不止。每一份努力都不会被辜负只要坚持不懈终究会有回报。珍惜时间追求梦想。不忘初心砥砺前行。你的未来由你掌握
生命短暂时间宝贵我们无法预知未来会发生什么但我们可以掌握当下。珍惜每一天努力奋斗让自己变得更加强大和优秀。坚定信念执着追求成功终将属于你
只有不断地挑战自己才能不断地超越自己。坚持追求梦想勇敢前行你就会发现奋斗的过程是如此美好而值得。相信自己你一定可以做到