1.问题思考
A.什么是自动化?自动化分为哪几个?
B.自动化测试是不是可信?
C.自动化并没有解放我们?
A.1:
“手工测试”:
如图可以,手工测试就是手动地去遍历被测软件的所有功能。
自动化测试:
自动化测试就是让被测试的软件自己运行起来,执行软件的功能。
实际上我们所说的自动化测试就是通过编写一点的脚本,让被测程序按照编写好的路径遍历功能
事实上,自动化测试覆盖了从 UI (功能测试)到接口测试以及单元测试的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:
编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式
第三方测试工具和测试框架,这些主要通过官网的文档学习
测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败
1,UI自动化(以selenium2为例)
- 多浏览器支持
- 多语言支持
- 多操作系统支持
- 开源免费
1,脚本运行之后打开指定的浏览起,接收测试脚本的命令
2,webdriver操作浏览器(通过浏览器的原生组件,转化webserver命令为浏览器调用)
3,用户操作web application过程
手动功能测试:
1.打开浏览器,输入网址
2.找到账号输入框输入账号
3.找到密码输入框输入密码
4.点击登录按钮
5.判断是否登录成功
自动化测试
最小测试case
以及修改后只关心流程的代码
测试报告
接口测试:
接口简介:
用户登录平台
接口地址:
https://luoqingfu.cn/api/account/login
请求类型:
post
请求参数
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
device_type | string | 是 | 设备类型 | 空 | web |
token | string | 是 | token值 | 空 | 空 |
company_id | string | 是 | 组织id | 空 | 空 |
target | string | 是 | 账号 | 无 | 132xxxxxxxx |
password | string | 是 | 密码 | 无 | 123456 |
target_type | string | 是 | 账号类型 | 无 | 1(手机号码) |
{
"code": 1,
"msg": "登录成功!",
"data": {
"token": "4baf601b78ebbc99a29bd97d604de65c879afc7e091b7ea209e3eb5f4e1aabee",
"user": {
"id": 2215,
"mobile": "+86-132xxxxxxxx",
"user_email": "",
"user_type": 2,
"user_login": "",
"user_name": "",
"user_nickname": "+8****2263",
"qq_openid": null,
"weibo_openid": null,
"weixin_unionid": null,
"sex": 0,
"birthday": 0,
"score": 0,
"balance": "0.00",
"user_status": 1,
"avatar": "https:\/\/lqf.oss-cn-shenzhen.aliyuncs.com\/default\/avatar\/1.png",
"signature": "",
"last_login_ip": "219.137.186.204",
"unique": "74f6f5718db0cd3d6f9fce8c8e8981f9",
"im_token": "29266c5c935fdf4866a71458874cbe89",
"more": [],
"from_device_type": "web",
"last_login_time": 1557851794,
"create_time": 1556443720,
"update_time": 1557851794,
"delete_time": null,
"wx_pay_openid": null,
"has_company": 1,
"company_id": 148,
"company_name": "lqf"
}
},
"runtime": 0.13,
"time": 1557851968
}
接口测试:
B:提高自动化的可信度
1,失败重试机制
2,自动化场景用例设计依据测试用例(完善场景)
3,及时更新自动化用例
4,更好的协作(自动化与手工相互补充,减少重复劳动)
5,每天定时构建。
C.自动化并没有解放我们?
自动化与ci结合。
场景:
这里没改过啊,怎么出错了?不知道是哪一次提交影响到了
什么是持续集成?
持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起
价值?
(1) 减小风险(快速发现错误);
(2) 减少手动过程;
(3) 生成构建结果;
成本?
持续集成的成本在于对持续集成代码的维护成本和集成的时间成本。因为随着项目进行,软硬件环境会越来越复杂,成品代码也会不断膨胀。此时,需要团队而修改或增加原有的测试代码,以适应这些变化,同时,每次集成所需时间也会变长,这就是持续集成的成本。
持续集成应该自动化什么呢?
1.自动产生可部署的成品(android包,或者iOS包,或者docker镜像)
2.自动将成品部署到环境中去
3.自动的回归测试
4.自动生成报告
选择一个ci平台?
Jenkins。
Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务。
打包:
场景:昨天这个功能还是好的,今天怎么就出错了?(也可能是不知道什么就出错了)
定时测试:
场景:需要手动更新平台代码。需要在电脑前等待
部署-测试-结果
以及消息通知:
[图片上传失败...(image-1d57c1-1576578798461)]
未完:持续交付