自动化测试&持续集成

1.问题思考
A.什么是自动化?自动化分为哪几个?
B.自动化测试是不是可信?
C.自动化并没有解放我们?

A.1:
“手工测试”:
如图可以,手工测试就是手动地去遍历被测软件的所有功能。


image

自动化测试:
自动化测试就是让被测试的软件自己运行起来,执行软件的功能。


image

实际上我们所说的自动化测试就是通过编写一点的脚本,让被测程序按照编写好的路径遍历功能


image

事实上,自动化测试覆盖了从 UI (功能测试)到接口测试以及单元测试的整个过程,要想很好的掌握自动化测试,那么的确需要以下三种领域的经验积累:
编程语言,面向对象编程优先,因为大量的开源技术方案,都是基于面向对象的编程方式
第三方测试工具和测试框架,这些主要通过官网的文档学习
测试的理念与设计,工具和语言,只是测试的手段,如何准备测试数据,如何设置测试的检查点与测试步骤,这些决定了测试的成败

1,UI自动化(以selenium2为例)

  • 多浏览器支持
  • 多语言支持
  • 多操作系统支持
  • 开源免费
    image

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.自动生成报告

image

选择一个ci平台?
Jenkins。

image

Jenkins是一个独立的开源自动化服务器,可用于自动执行与构建,测试,交付或部署软件相关的各种任务。
打包:

image

场景:昨天这个功能还是好的,今天怎么就出错了?(也可能是不知道什么就出错了)
定时测试:

image

场景:需要手动更新平台代码。需要在电脑前等待

部署-测试-结果

image
报告.png

以及消息通知:

[图片上传失败...(image-1d57c1-1576578798461)]

未完:持续交付

你可能感兴趣的:(自动化测试&持续集成)