霍格沃茨测试学院 – 自动化测试

Coding Alan 4年前 (2020-08-20) 7257次浏览 0个评论 扫描二维码

基础知识

研发阶段常见的质量保证手段
❖ 代码评审code review
❖ 代码审计
❖ 单元测试
❖ 自动化冒烟测试
❖ 研发自测

Code Review代码评审

❖ 对源代码进行检查,以期发现问题的过程
❖ 价值点

  • 代码规范约束,培养良好的代码习惯和追求
  • 深入了解业务,知识和规范的传承
  • 沟通设计思路并改进,互相评审防止烂代码烂设计进入

❖行业观点和落地

  • 行业经验普遍认为代码评审是最有效的质量保证手段
  • 借助标准的代码管理工具即可。比如gitlab的pr机制
  • 整个过程测试工程师参与度低

代码审计

❖综合性的代码分析平台

❖IDE辅助功能

  • xcode android studio 编辑器报警
  • 阿里巴巴java开发手册ide插件支持

❖独立的静态分析工具

  • findbugs scan-build
  • pmd androidlint
  • 阿里巴巴java开发手册pmd插件

自动化测试框架选择

❖推荐Appium

  • 跨语言
  • 跨平台
  • 底层多引擎可切换
  • 生态丰富,社区强大

❖KIF Robotium Uiautomator1/2 更底层的框架

❖calabash也是同样优秀的方案

❖阿里开源的macaca性能更好

兼容性测试方法

❖商业服务方案

  • 阿里MQC [免费+商业]
  • 百度MTC [免费+商业]
  • Testin [免费+商业]

❖私有部署方案

  • stf平台 [开源]
  • Appium grid方案 [开源]
  • 迪原锐测盒子 [商业方案]
  • Appetizer

服务端性能测试

❖加压工具

  • Gor TcpCopy 线上导流
  • 开源压力测试工具: JMeter ab Gatling nGrinder
  • 商业压测工具:LoadRunner

❖监控工具

  • influexDB+grafana graphite时序数据监控,监控系统资源
  • elk 日志监控,监控应用级别log

 

第三方测试服务

  • 商业性性能监控平台:听云 NewRelic OneApm
  • 崩溃收集和分析平台:Bugly Fabric Flurry
  • 内测与公测平台:pgyer fir.im testflight
  • 兼容测试服务: mqc mtc testin
  • 云压测服务:xmeter 云智慧压测宝
  • 跨地域的可访问性测试:。。。。

Bash

特殊符号的应用

  • “” 双引号用于括起一段字符串值,如果里面有特殊字符,就进行替换。比如$var形式的变量,\n 转义等。
  • ‘ 单引号也表示其内容是字符串值。保持原义。
  • `反引号。用法比较独特,代表命令的输出。非常有用。
  • \ 反斜线,某些情况下表示转义。
  • $(ls) 表示执行ls后的结果。与 ``类似。不过可以嵌套。
  • $(()) 对变量进行操作。比如相加$((a+b)) $((2+3))
  • (()) 是整数扩展。把里面的变量当作整数去处理。
  • :<<EOF here document
  • {1..10} 等价于 seq 1 10。表示1到10
  • () 子shell中运行
  • {} 当前shell中执行

字符串比较

  • [ string1 = string2 ]如果两字符串相同,则结果为真
  • [ string1 != string2 ] 如果两字符串不相同,则结果为真
  • [ -n string ] 如果字符串不是空,则结果为真
  • [ -z string ] 如果字符串是空,则结果为真
  • [[ “xxxx” == x* ]] *在表达式中表示0或者多个字符
  • [[ xxx == x?? ]]  ?在表达式中表示单个字符

逻辑判断

系统内置的判断

  • -d file 如果文件是一个子目录,则结果为真
  • -e file 如果文件存在,则结果为真
  • -f file 如果文件是一个普通文件,则结果为真
  • -g file 如果文件的set-group-id被设置,则结果为真
  • -r file 如果文件可读,则结果为真
  • -s file 如果文件的长度不为0,则结果为真
  • -u file 如果文件的set-user-id被设置,则结果为真
  • -w file 如果文件可写,则结果为真
  • -x file 如果文件可执行,则结果为真

逻辑控制

  • 条件if
    • if [ condition ] ; then …;fi
    • if [ condition ] ; then …;else …;fi
    • if [ condition ] ; then …;elif …;fi
    • 简单的逻辑可以使用 && || 去替代
  • 条件 case
    • 用于条件太多的情况。每一个条件最后使用两个分号结尾,不可缺少。
  • For 循环

    举例
  • While 循环
    i=0;while [ $i -lt 3 ] ;do echo $i;((i=i+1));Done
    一个有用的小技巧。一行行的读取文件内容 while read line;do echo $line;done < /tmp/tmp

()中的内容在子 shell 中执行;{}中的代码在当前 shell 中执行

break, continue

Shell 输入输出

  • Read 用来读取输入,并赋值给变量,echo ,printf可以简单输出变量。
  • > file 将输出重定向到另一个文件。>> 表示追加
  • < file 输入重定向
  • | 表示管道,也就是前一个命令的输出传入下一个命令的输入 grep
  • 输入文件—标准输入0
  • 输出文件—标准输出1
  • 错误输出文件—标准错误2
  • 使用 2>&1 >/tmp/tmp < /tmp/tmp

移动端自动化测试方案

Android

iOS

  • calabash-ios
  • Frank
  • UIAutomation
  • ios-driver
  • KeepItFunctional
  • Expresso
  • Appium

霍格沃茨测试学院 - 自动化测试

Appium 环境安装

生态工具:

  • adb
  • Appium Desktop
  • Appium Server
  • Appium Client
    • Python
    • Java
    • Ruby
    • Robotframework-appium
  • AppCrawler 自动遍历工具

Desired Capabilities配置参数

淘宝 NPM 镜像

Appium Clients

单元测试

unittest 编写规范

  • 测试模块首先 import unittest
  • 测试类必须继承 unittest.TestCase
  • 测试方法必须以 test_开头
  • 模块名称、类名没有要求
  • setUp、tearDown、setUpClass、tearDownClass、setUpModule、tearDownModule

PyCharm:Preferences > Tools > Python Integrated Tools > Testing > Default test runner 修改默认测试框架

pytest 优势

  • 简单灵活,像写 Python 代码一样写测试用例
  • 为测试方法输入不同参数化
  • 自动重度失效的测试用例
  • 支持 allure2测试报告
  • 有很多第三方插件:http://plugincompat.herokuapp.com/

Pytest 编写规范

  • 测试文件以 test_开头(也可以_test 结尾)
  • 测试类以 Test 开头,且不能带有__init__方法
  • 测试函数以 test_开头

pytest-sugar、pytest-assume( pytest.assume() )、pytest-rerunfails( pytest –reruns 3 xxx.py )、pytest-ordering( @pytest.mark.run(order=2) )、pytest-fixture(@pytest.fixture)

conftest.py 进行配置共享

https://pypi.org/search/?q=pytest

http://allure.qatools.ru/

https://github.com/allure-framework/allure2/releases

参考代码:https://github.com/powerccna/vipstudent

https://github.com/linda883/testframework

HTMLTestRunner,下面Python 3兼容方案

 

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址