测试主要内容

测试主要内容

2023年6月28日发(作者:)

测试主要内容1.计算机历史:四个阶段1.计算机历史2. 操作系统: 1.移动端系统:android和ios 端:Windows linux,macOS,Unix3 分类:Ubuntu ,centos,分类2 .虚拟机安装3. 虚拟机的创建命令1.⽬录切换切换到根⽬录 cd /

切换到上⼀级⽬录 cd../切换到⽤户主⽬录 cd ~切换到指定⽬录 cd/usr切换为超级⽤户 su root2.⽬录创建⽬录:mkdir ⽬录名称删除⽬录 rm -rf ⽬录名称移动⽬录 mv -r 被移动的⽬录 ⽬标位置(想要移动到哪⾥)复制⽬录 cp -r被复制⽬录 ⽬标位置⽬录查看⽬录 ls ,ls -a,ls-l,(ll)修改⽬录名称 mv 旧名字 新名字查找⽬录 find ⽬录,find /-name ⽬录1 ssh安装2 jdk3 Mysql4 tomcat安装,解压 开放端⼝5 jenkins 持续化继承⼯具shell脚本1.变量定义变量:变量名=值输出:echo双引号:遇到$输出变量值,但是被处理为字符串单引号:遇到$默认字符串linux⽤反单引号`包裹2.脚本输出当前⽬录#!/bin/bashdir=`pwd`echo $dir3 输⼊,输出,调⽤echoread./sh4 参数的传递格式:sh 参数列表$1:接收第⼀个参数~~$n$n: ⽂件名称$@: 所有参数 s$#: 参数个数 $05 运算符1逻辑-a-o!2 ⽐较1.数字-eq-ne-gt-lt-le2 字符串==!=1.单条件语句if [条件]then操作else操作语句fi2.多条件语句if[条件]then语句...elif[ 条件 ]then语句...else语句se "$变量名"in"")语句;;esac8 forfor i in 1 2 4for i in `seq 开始值 间隔 结束值`9 whilewhile [ 条件 ]do语句done函数 :先定义,在调⽤函数 :参数 :返回值 0没问题 1有问题参数 :jmeter⼀.下载,配置,安装⼆.线程组1.进程 ,线程,线程组1.创建 :测试计划-》添加-》线程-》线程组2.3个参数 线程数,准备时长,循环次数三.http请求指定域名,路径四 .查看结果(监听器)1.察看结果树2.汇合报告3.聚合报告4.后端监听器5.汇总图6.断⾔结果7.⽐较断⾔可视化器8.⽣成概要结果9.图形结果五.事务控制器事务控制器会⽣产⼀个额外的采样器,⽤来统计该控制器⼦结点的所有时间。在线程组下创建事务控制器六. 逻辑控制器七.循环控制器⼋.断⾔-检查点预先判断可能会出现的字符串,如果匹配成功断⾔成功,否则断⾔失败 1.响应断⾔ 断⾔九.前置处理器和后置处理器主要是⽣成请求之前和之后完成⼯作。⼗.定时器数组之间的间隔Jmeter组件参数化1.添加——>配置原件——>⽤户定义变量2.定义⼀个变量并赋值3.在http请求中调⽤变量4 在http请求电泳第⼆步中定义变量5 数据库导出TXT⽂件函数助⼿⽂件中不要出现中⽂⼯具——>函数助⼿对话框Jmeter正则表达式线程组——>添加——>后置处理器——>正则表达式提取器七单元——Jmeter脚本录制第⼀⾏要写 #!/bin/bash vim 编辑 执⾏: ./⽂件名 sh ⽂件名 chmod 777 ⽂件名 修改⽂件权限定义变量规则:变量名=值

shell定义变量的规则:1: 等号两边不能有空格2:定义特殊的变量需要⽤单引号或者双引号结合3:定义linux命令需要⽤反单引号区分:双引号中有$变量名,输出的是变量名对应的变量值单引号中有$变量名,输出的是$变量名命名格式:脚本名称⽤ . sh命名格式:脚本输⼊输出格式:输⼊语句⽤:read-p"描述"Shell输出值:echo$变量名参数传递:$1:接收第⼀个参数~~$n$n: ⽂件名称$@: 所有参数 s$#: 参数个数 $0⽐较运算符1⽐较运算符(数字)-eq ⽐较是否相等equal-ne ⽐较不相等 notequal-gt ⽐较⼤于 greater than-ge ⽐较⼤于等于 greaterequal-lt ⽐较⼩于 less than-le ⽐较⼩于等于 lessequal2计较运算符(字符串)== ⽐较是否相等!= ⽐较不相等加⼀操作 : ((i++))((i+=1))加n操作 : s=$(($s+$i))s=$[$s+$i]((s=$s+$i))3逻辑运算符-a 逻辑与 -o逻辑或 !逻辑⾮if语句格式: if [ 条件 ] then 语句 else 语句 fi多条件:if [ 条件 ]多条件: then 语句 elif [ 条件 ] then 语句 ...... else 语句 ficase规则:格式:case $变量名 in格式: "值") 语句;; "值") 语句;; ..... esac注意:1、case这第⼀⾏以in结尾2、值可以是字符串也可以是数字, 如果数字范围[0-9]

3、结束语句;; 4、esac结束标志for循环格式:for 变量 in 列表格式: do 语句 done数量过多时不能全列出来时: for i in `seq 1 2 100` do echo $i done注意:in之后的 ` 内 seq mix step maxmix 开始数据 step:间隔 max 结束数据,如果step为1,可以省略,需要⽤mix 开始数据 step:间隔 max 结束数据,如果step为1,可以省略,需要⽤反单引号,seq语句标志反单引号,seq语句标志While循环格式:while [条 件 ]格式: do 语句 done注意:1、 while后⾯有空格2、条件两边有空格3、while条件⾥⾯存在变量,需要$,⽽且变量两边需要双引号4、done是结束标识Shell脚本的函数 格式:函数名(){代码 } 调⽤格式 函数名函数中的参数使⽤$n来接收数据函数中的返回值:Shell中函数默认存在返回值查看返回值是$?如果没有代码错误默认返回值为0 有代码错误返回1⼋单元——Jmeter1、下载、配置、安装2、线程组 1、进程、线程、线程组 2、创建:测试计划→添加→线程→线程组 3、三个参数3、Http请求: 指定域名、路径、端⼝、⽅法、指定参数、协议4、查看结果 监听器: 1、查看结果树 ** 2、图形 结果 ** 3、聚合报告 4、⽤图表看结果 **5、逻辑控制器 1、循环控制器 2、事务控制器(有开始、有结束)6、断⾔ 预先判断可能会出现的字符串。如果匹配成功,断⾔成功。否则断⾔失败7、处理器前置处理器:前置处理器常常⽤来修改请求前的设置前置处理器:后置处理器:后置处理器则常常⽤来处理响应后的数据后置处理器:8、定时器 控制两个请求之间的间隔

9、参数化 1、⾃定义变量 1、添加→配置元件→⽤户定义变量 2、定义⼀个变量并赋值 3、在http请求中调⽤变量$(变量名) 2、引⽤⽂件中的变量 1、添加→配置元件→CSV DAta Set Config 2、设置线程组的线程数 3、⽂件路径、编码、变量、⽤到⽂件结束符(true、false) 4、在http请求中调⽤第⼆步中定义变量 5、数据库导出TXT⽂件10、Jmeter 函数助⼿

1、⼯具——》函数助⼿—>选择CSVRead——> ⽂件路径(必须放在bin⾥⾯)列名(0,1,2)——>⽣成 2、把⽣成的码复制到HTTP请求界⾯参数值11、脚本录制 1、移动端录制 1、保证同⼀⽹络 2、jmeter——>测试计划——>添加⾮测试元件——>Http服务代理——> 2、PC录制:badboy九单元——Python的基础语句和语法⼀、下载、安装、第⼀个程序⼆、变量1、数据类型 Numbers(数字型):int(整型)、long(长整型)、float(浮点型)、complex(复数型) bool(布尔型):true、false String(字符串) List(列表型) Tuple(元祖型) Dictionary(字典)2、标识符组成、命名规则 1、什么是标识符? 开发⼈员在程序中⾃定义的⼀些符号和名称 标识符是⾃⼰定义的,如变量名 、函数名等 2、标识符命名规则 1)只能由字母、下划线、数字组成 2)不能以数字开头 3)不能使⽤关键字 4)严格区分⼤⼩写3、注释 分为单⾏注释和多⾏注释 单⾏注释:光标移动⾄注释⾏Ctrl+/ 多⾏注释:选中需要注释内容输⼊‘’‘ 4、关键字三、输⼊和输出 输⼊语句:input()⽤来获取控制台的输⼊ 输出内容:print(内容)⽤于打印输出,最常见的⼀个函数 objects -- 复数,表⽰可以⼀次输出多个对象。输出多个对象时,需要⽤ , 分隔。 sep -- ⽤来间隔多个对象,默认值是⼀个空格。 end -- ⽤来设定以什么结尾。默认值是换⾏符 n,我们可以换成其他字符串。 file -- 要写⼊的⽂件对象。四、运算符1、赋值运算符:简单的赋值运算符:=:=加法赋值运算符:+=:+=减法赋值运算符:- =:- =乘法赋值运算符:*=:*=除法赋值运算符:/=:/=取模赋值运算符:%=:%=幂赋值运算符:**=:**=取整赋值运算符://=://=海象运算符::=::=在⽰例中,赋值表达式可以避免调⽤len()两次 2、⽐较运算符等于:====不等于:!=!=⼤于:>>⼩于:<<⼤于等于:>=>=⼩于等于:<=<=3、逻辑运算符逻辑与:andand逻辑或:oror逻辑⾮:notnot 4、算数运算符加:+:+减:-:- 乘:*:*除:/:/取模:%:%幂/次⽅:**:**取整://://五、判断语句1、if if 要判断的条件: 条件成⽴时,要做的事情2、if else if 要判断的条件: 条件成⽴时,要做的事情 else: 条件不成⽴时,要做的事情 3、if elif else if 要判断的条件: 条件成⽴时,要做的事情 elif 要判断的条件: 条件成⽴时,要做的事情 else: 条件不成⽴时,要做的事情六、循环1、while while 条件: 条件成⽴时,要做的事情 条件成⽴时,要做的事情..... 2、for for 临时变量 in 列表或者字符串等可迭代对象: 循环满⾜条件时执⾏的代码⼗单元——Python的列表⼀、格式变量=[,,,]⼆、列表的新增append, extend, insert append:直接在列表后⽅进⾏拼接添加的是⼀个元素(列表会占⽤⼀个索引位) append:extend:直接在后⽅拼接追加的多个元素(列表会占⽤多个索引位)extend: insert:对指定索引位进⾏新增数据(如果新增的索引不存在,则会默认添加到最后索引位) insert:三、列表的修改 1、通过索引来修改 列表名 [要修改的索引位]="要修改的内容" 索引不存在的时候,会报错四、列表的删除1、del 删除指定索引位的内容 del 列表名 [需要删除的索引]2、pop 默认删除最后⼀个元素3、remove 根据元素的值来进⾏删除五、列表的查询index, count1、ndex 查询列表中的元素,如果存在就返回给元素的索引,不存在就报错 格式: 列表名称 . index ( 查询的内容 )2、count 查询列表中的元素的个数 格式; 列表名 . count ( 所要查询个数的元素 )六、列表的排序1、sort ⽅法是将list按特定顺序重新排列,默认为由⼩到⼤,参数reverse=True可改为倒序,由⼤到⼩。2、reverse ⽅法是将 list list 反转七、列表的循环取值⽅法⼀:for 循环 ⽅法⼆:while 循环⼋、列表嵌套变量=[,,,]⼆、列表的新增append, extend, insert append:直接在列表后⽅进⾏拼接添加的是⼀个元素(列表会占⽤⼀个索引位) append:extend:直接在后⽅拼接追加的多个元素(列表会占⽤多个索引位)extend: insert:对指定索引位进⾏新增数据(如果新增的索引不存在,则会默认添加到最后索引位) insert:三、列表的修改 1、通过索引来修改 列表名 [要修改的索引位]="要修改的内容" 索引不存在的时候,会报错四、列表的删除1、del 删除指定索引位的内容 del 列表名 [需要删除的索引]2、pop 默认删除最后⼀个元素3、remove 根据元素的值来进⾏删除五、列表的查询index, count1、ndex 查询列表中的元素,如果存在就返回给元素的索引,不存在就报错 格式: 列表名称 . index ( 查询的内容 )2、count 查询列表中的元素的个数 格式; 列表名 . count ( 所要查询个数的元素 )六、列表的排序1、sort ⽅法是将list按特定顺序重新排列,默认为由⼩到⼤,参数reverse=True可改为倒序,由⼤到⼩。2、reverse ⽅法是将 list list 反转七、列表的循环取值⽅法⼀:for 循环 ⽅法⼆:while 循环⼋、列表嵌套格式:变量名 = [ , [ , ] ]⼗⼀单元——元组和字典⼀、元组1、元组的格式变量名=( , , , , )

2、访问元组 通过索引来取数据: 索引存在时会输出相对应索引的元素 索引不存在时会报错3、查询个数count查询元素存在的个数4、查询索引index查询元素的索引,有对应元素返回索引,如果⽆则报错5、修改数据 元组不能修改数据(需与列表相互转换之后才可改变元素)6、类型转换元组转列表:list(元组名)list(元组名)列表转元组:tuple(列表名)tuple(列表名)7、元组循环取值 ⽅法⼀:for循环取值for i in 元组名 :print( i ) ⽅法⼆:while 循环取值 先定义变量 i = 0while i < len(元组名): print( 元组名 [ i ] ) i + = 1⼆、字典1、字典格式变量名={ key1 : value , key2 : value ,,,} 字典的每个元素由2部分组成,键(key):值(value)2、根据键访问值 有对应Key时,会输出相应的Value值info={"name":"anfly","age":18,"sex":"男"}print ( info [ " name " ] )# anfl 若⽆对应的Key时,则会报错 如果不确定字典中是否存在某个键⽽⼜想获取其值时,如何操作?列表名 . get ( 不确定的key值 )列表名 . get ( 不确定的key值 , 不存在时提⽰内容)3、修改元素 字典⾥每个元素都是可修改的,只要通过Key找到Value,即可修改,否则是新增 有对应的key则是修改数据,没有对应的key是新增数据4、添加元素格式:字典名 [ 新增Key值 ] = 新增 Value值5、删除元素1)deldel 字典名会删除整个字典del 字典名del 字典名 [ key值 ]会删除指定元素del 字典名 [ key值 ]2)clear 清空字典名 . clear ( ) 可以清除字典全部元素6、查询长度 len ( 字典名 ) : 查询键值对的个数7、字典中循环⽅法⼀:for i 字典名 . keys() :for i 字典名 . keys() :print ( i , 字典名 [ i ] )⽅法⼆:for k , v 字典名 . items():for k , v 字典名 . items():print ( k , v )⽅法三:for i in 可迭代 :for i in 可迭代 :print ( i )for i , ch in enumerate( Key值 ):print ( i , ch )⼗⼆单元——集合和函数⼀.集合定义特征:集合是⽆序的,集合中元素是唯⼀的,集合⼀般是⽤于元组或者列表中元素去重格式:变量名=set() 变量名.add(元素) #不能初始化添加元素:add update删除元素:remove pop discard⼆.集合的交集和并集交集:使⽤&连接多个集合,得到相同的元素并集:使⽤|连接对个集合,得到全部集合中全部的元素三.公共⽅法运算符:* (复制) +(合并) in(元素是否存在) not in(元素是否不存在)python中的内置函数:zhangyiwen长度:len()最⼤值:max()删除:del()四.函数定义:在开发程序时,需要某块代码多次,但是为了提⾼编写的效率以及代码的重⽤,所以把具有独⽴功能的代码块组织为⼀个⼩模块,这就是定义函数格式:def 函数名():格式 执⾏语句 函数名()位置参数格式 def函数名(参数1,参数2):位置参数格式 代码块 函数名(值1,值2)定义时⼩括号中的参数,⽤来接收参数⽤的,称为 “形参”调⽤时⼩括号中的参数,⽤来传递给函数⽤的,称为 “实参”关键字参数格式:def函数名(参数1,参数2):关键字参数格式 代码块 函数名(参数1=值1,参数2=值2)缺省参数定义:在形参中默认有值的参数,称之为缺省参数缺省参数定义:不定长参数:有时可能需要⼀个函数处理⽐当初声明时更多的参数,这些参数叫做不定长参数,声明时不会命名不定长参数参数位置顺序:deffun(位置参数,*args,缺省参数,**kwargs):参数位置顺序 代码块 fun(参数值)函数类型:函数类型 1. ⽆参数,⽆返回值:此类函数,不能接收参数,也没有返回值,⼀般情况下,打印提⽰灯类似的功能,使⽤这类的函数 2. ⽆参数,有返回值:此类函数,不能接收参数,但是可以返回某个数据,⼀般情况下,像采集数据,⽤此类函数 3. 有参数,⽆返回值:此类函数,能接收参数,但不可以返回数据,⼀般情况下,对某些变量设置数据⽽不需结果时,⽤此类函数 4. 有参数,有返回值:此类函数,不仅能接收参数,还可以返回某个数据,⼀般情况下,像数据处理并需要结果的应⽤,⽤此类函数函数的嵌套:⼀个函数⾥⾯⼜调⽤了另外⼀个函数,这就是所谓的函数嵌套调⽤函数的嵌套五.变量定义:局部变量,就是在函数内部定义的变量全局变量,在函数外边定义的变量叫做全局变量⼗三单元——python的⽂件操作异常处理⼀.⽂件的介绍1.⽂件2.⽂件的作业⼆.⽂件的打开和关闭1.打开⽂件打开⼀个已经存在的⽂件,或者新建⼀个⽂件zhangyiwen2.写数据 write3.读数据 read readline readlines4.可写 a5.读数据 rd6.写数据 wb7.关闭⽂件 close()三.⽂件和⽂件夹的操作1.⽂件重命名os模块中的rename()可以完成对⽂件的重命名操作2.删除⽂件os模块中remove()可以完成对⽂件的重命名操作3.创建⽂件夹os模块中的mkdir()可以完成对⽂件的重命名操作4.获取当前⽬录os模块中的getcwd()可以获取当前⽬录四.异常1.定义:异常即是⼀个事件,该事件会在程序执⾏过程中发⽣,影响了程序的正常执⾏。⼀般情况下,在Python⽆法正常处理程序时就会发⽣⼀1.定义:个异常。异常是Python对象,表⽰⼀个错误。当Python脚本发⽣异常时我们需要捕获处理它,否则程序会终⽌执⾏。2.作⽤捕捉异常可以使⽤try/except语句。try/except语句⽤来检测try语句块中的错误,从⽽让except语句捕获异常信息并处理。如果你不想在异常发⽣时结束你的程序,只需在try⾥捕获它。3.语法4.使⽤except⽽不带任何异常类型5.使⽤except⽽带多种类型-finally语句7.异常传递8.触发异常9.⽤户⾃定义异常五.模块1.定义:Python 模块(Module),是⼀个Python⽂件,以.py 结尾,包含了Python 对象定义和Python语句1.定义:2.引⼊:import2.引⼊...import语句...import*语句六.python中的包定义:包是⼀个分层次的⽂件⽬录结构,它定义了⼀个由模块及⼦包,和⼦包下的⼦包等组成的 Python 的应⽤环境。简单来说,包就是⽂件定义:夹,但该⽂件夹下必须存在 ⽂件, 该⽂件的内容可以为空。init。 ⽤于标识当前⽂件夹是⼀个包。第⼗五单元 Python单元测试之unittest⼀、单元测试、集成测试、功能测试单元测试:颗粒度最⼩,⼀般由开发⼩组采⽤⽩盒⽅式来测试,主要测试单元是否符合“设计”;是指对软件中的最⼩可测试单元进⾏检查和验证集成测试:介于单元测试和系统测试之间,⼀般由开发⼩组采⽤⽩盒加⿊盒的⽅法测试,即验证设计⼜验证需求。主要⽤来测试模板与模板之间的接⼝,同时还要测试⼀些主要的业务功能。功能测试:颗粒度最⼤,⼀般由独⽴的测试⼩组采⽤⿊盒的⽅式来测试,主要测试系统是否符合需求规格说明书。⼀、UnitTest组成 (1)setUp():准备环境,执⾏每个测试⽤例的前置条件;

(2)tearDown():环境还原,执⾏每个测试⽤例的后置条件;

(3)setUpClass():必须使⽤@classmethod装饰器,所有case执⾏的前置条件,只运⾏⼀次; (4)tearDownClass():必须使⽤@classmethod装饰器,所有case运⾏完后只运⾏⼀次;1、testFixture 作⽤:⽤于⼀个测试环境的准备和销毁还原 2、testCase 定义:就是⼀个测试⽤例3、testSuite 测试套件,可以将多个测试⽤例集合在⼀起,能⼀起执⾏选中的测试⽤例 4、testRunner 执⾏测试⽤例⼆、断⾔ (1)assertEqual(a,b):断⾔a和b是否相等,相等则测试⽤例通过。(最常⽤的) (2)assertNotEqual(a,b):断⾔a和b是否相等,不相等则测试⽤例通过。 (3)assertTrue(x):断⾔x是否True,是True则测试⽤例通过。 (4)assertFalse(x):断⾔x是否False,是False则测试⽤例通过。 (5) assertIs(a,b):断⾔a是 否是b,是则测试⽤例通过。 (6)assertNotIs(a,b):断⾔a是否是b,不是则测试⽤例通过。 (7)assertIsNone(x):断⾔x是否None,是None则测试⽤例通过。 (8) assertIsNotNone(x):断⾔x是否None,不是None则测试⽤例通过。 (9)assertIn(a,b):断⾔a是否在b中,在b中则测试⽤例通过。 (10) assertNotIn(a,b):断⾔a是否在b中,不在b中则测试⽤例通过。 (11)assertIsInstance(a,b):断⾔a是是b的⼀个实例,是则测试⽤例通过。 (12)assertNotIsInstance(a,b):断⾔a是是b的⼀个实例,不是则测试⽤例通过。三、⽣成测试报告1、下载⼀个⽂件,,复制到项⽬中 2、使⽤四、读取CSV数据 1、创建CSV⽂件并添加数据 2、创建读取CSV⽂件 3、在测试类中调⽤即可五、xml读取 1、创建xml⽂件 2、编写读取xml⽂件的⽂件 3、调⽤第⼗六单元pytest⼀、命名规则 1、先安装pip install pytest 和 pip install pytest-html (⽣成html报告) 2、类名和⽅法名必须是以test开头⼆、⾃动⽣成html测试报告⽅式⼀ 1、("模块.py")【运⾏指定模块下,运⾏所有test开头的类和测试⽤例】 2、格式:(["--html=./","模块.py"]) ⽅式⼆ 1、运⾏指定模块指定类指定⽤例,冒号分割,并⽣成测试报告 2、格式:([‘--html=./’,‘模块.py::类::test_a_001']) ⽅式三 1、Pytest调⽤语句 -x:出现⼀条测试⽤例失败就退出测试 -v:丰富信息模式, 输出更详细的⽤例执⾏信息 -s:显⽰print内容 -q:简化结果信息,不会显⽰每个⽤例的⽂件名三、Pytest运⾏⽅式 1、“.”点号,表⽰通过 2、F表⽰失败,Failue 3、E表⽰⽤例中存在异常,Error四、⽂件读取 (1)读取csv⽂件:先创建⽂件,然后读取 (2)读取xml⽂件1、创建xml⽂件 2、编写读取xml⽂件的⽂件 3、调⽤五、Allure 概念:⽣成测试报告的框架

1、先配置allure的环境变量 2、验证allure是否配置成功 3、其次要安装allure:pip install allure-pytest 4、allure常⽤的⼏个特性 (1) @e# ⽤于描述被测试产品需求 (2)@# ⽤于描述feature的⽤户场景,即测试需求 (3)with ():# ⽤于描述测试步骤,将会输出到报告中 (4)# ⽤于向测试报告中输⼊⼀些附加的信息,通常是⼀些测试数据,截图等第⼗七单元Requests第⼗七单元Requests⼀、介绍 1、Requests是⼀个很实⽤的Python HTTP客户端库,是Python语⾔的第三⽅的库,专门⽤于发送HTTP请求。 2、下载:pip install requests 3、get请求 (1)get⽆参、get传参 (2)post请求⼆、Requests响应 _code 响应状态码 响应头 s 响应cookies 响应⽂本 r. encoding 当前编码 r. content 以字节形式(⼆进制)返回三、Requests扩充 1.添加等待时间:(url,timeout=1),如果超过等待时间则报错 2.添加请求头信息:(url,headers=headers),设置请求头 3.添加⽂件:(url,files=files),添加⽂件四、Requests+Pytest+Allure 1、流程:(1)读取⽂件中的数据 (2)requests拿到数据请求接⼝返回状态码 (3)通过断⾔验证返回状态码和200对⽐ (4)⽣成allure的测试报告五、读取csv⽂件 1、通过excel另存为csv即可 2、读取数据:readDemo 3、request请求接⼝返回状态码 4、pytest断⾔设置并结合allure⽣成测试报告 5、测试报告展⽰六、 读取excle⽂件流程 1、存储数据(xlsx) 2、读取数据:readDemo

3、request请求接⼝返回状态码 4、pytest断⾔设置并结合allure⽣成测试报告 5、测试报告展⽰第⼗⼋单元⾃动化持续集成⼀、概念 1、 就是⼀套标准的流程,最重要的组成部分就是持续集成(Continuous integration,简称CI) 2、持续集成:频繁地将代码集成到主⼲。 3、持续交付:指的是,频繁地将软件的新版本,交付给质量团队评审。 4、持续部署:是持续交付的下⼀步,评审通过后,⾃动部署到⽣成环境。⼆、Jenkins 1、概念:Jenkins 是⼀个开源软件项⽬,是基于Java开发的⼀种可拓展持续集成⼯具,主要⽤于持续、⾃动地构建 / 测试 / 集成软件项⽬以及监控⼀些定时执⾏的任务。 2、⽬的:(1)持续、⾃动地构建/测试软件项⽬。 (2)监控软件开放流程,快速问题定位及处理,提⽰开放效率。 3、特性:易于安装、易于配置、通过 RSS 发布构建结果或当构建完成时通过 e-mail 通知、⽣成 JUnit / TestNG 测试报告、分布式构建、插件⽀持,⽀持扩展插件 4、产品发布流程:产品设计成型 → 开发⼈员开发代码 → 测试⼈员测试功能 → 运维⼈员发布上线三、安装包 (1)启动⽅式:在tomcat的bin⽬录下启动(最常⽤) (2)⽅式2:打开cmd,进⼊jenkins⽬录,然后运⾏命令:java -jar 四、搭建Jmeter+jenkins+ant持续化 (1) Ant下载及配置安装 下载Apache-ant 解压到你想要安装的⽬录 配置环境变量 验证是否安装成功 拷贝Jemter包到ant下 新建⼀个⽂件 (2)进⾏命令⾏模式后,进⼊刚才创建的xml⽂件存放⽬录,如:D:build 输⼊ant即可五、集成jenkins 打开Jenkins,配置Ant环境 新建⼀个⾃由风格任务 构建触发器 构建配置 配置HTML插件 ⽴即构建 针对报告中不显⽰聚合报告的情况 Jenkins执⾏⾃动化测试后发送测试报告邮件第⼗九单元⾃动化⼀、⾃动化测试的好处 1、 缩短测试周期:计算机⾏业更新迭代快速,⼤量频繁的回归测试消耗时间,⾃动化测试能够将重复的实⾏交给计算机去做,加快测试速度。 2、避免⼈为出错:测试⼈员不可能持续⾼度集中,并且⼈类易受外界影响(头疼脑热,精神不振),可能会造成⼈为错误 3、测试信息存储:⾃动化测试将测试信息和数据储存在⽂件中,思路清晰明确,交接⽅便 4、轻易获取覆盖率:⾃动化测试能够解放测试⼈员,使测试⼈员能够有更多的精⼒做那些⾮重复性的⼯作。 5、其他:⾃动化测试可以是实现⾃动或者定时执⾏注意:⾃动化测试的⽅向是对的,⽽且趋势也是如此,但是有些⾃动化实现不了的还是会⼿动测试的。注意:⼆、⾃动化分类 1、 整体分类 (1)⾃动化功能测试 (2)⾃动化性能测试 2、⾃动化功能测试的分类: (1)单元测试:程序员搞定 (2)功能测试 (3)接⼝测试:⼤中型项⽬或长期项⽬可以采⽤⾃动化测试 3、性能测试主要是使⽤测试⼯具 (1)Loadrunner、Jmeter等,对软件进⾏压⼒测试、负载测试等等,因为这些⽆法⽤⼿⼯进⾏代替,所以必须⾃动化。三、web⾃动化条件的使⽤和范围 1、前提条件 (1)⼿动测试已经完成,后期再不影响进度的前提下逐渐实现⾃动化 ( 2)项⽬周期长,重复性的⼯作都交给机器去实现 ( 3)需求稳定,项⽬变动不⼤ (4)⾃动化测试脚本复杂度⽐较低 ( 5)可重复利⽤ 2、使⽤⾃动化测试的场景 (1)频繁的回归测试 (2)冒烟测试 (3)传统⾏业需求变化不⼤,应⽤频繁 (4)性能测试四、web⾃动化常⽤的⼯具 1、QTP(收费) 2、Selenium(开源) 3、RFT(收费) 4、(1)元素定位⼯具:css选择器、xpath (2)环境⼯具:(1)firefox35 (2)firebug插件 (3)firepath插件 5、什么是xpath:XPath即为XML路径语⾔,它是⼀种⽤来(标准通⽤标记语⾔的⼦集)在 HTMLXML ⽂档中查找信息的语⾔。 6、什么是xml:XML 指可扩展标记语⾔(EXtensible Markup Language)XML 是⼀种标记语⾔,很类似 HTMLXML 的设计宗旨是传输数据,⽽⾮显⽰数据 7、(1)xml是设计为传输和存储数据的。 (2)html是显⽰数据以及更好的显⽰数据 8、获取元素 (1)nodename:选取此节点的所有⼦节点 (2)/从根节点选取 (3)//从匹配选择当前节点选择⽂档的节点,不考虑位置 (4)“.”选取当前节点 (5)“..”选取当前节点的⽗节点 (6)@选取属性

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687931766a58358.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信