请选择 进入手机版 | 继续访问电脑版

ITIL,DevOps,ITSS,ITSM,IT运维管理-ITIL先锋论坛

 找回密码
 立即注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

查看: 2489|回复: 0

DevOps实践:面向服务的全自动化测试体系分享

[复制链接]
发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
1 @( A) c" f; g! a2 H0 r* D5 o- ]8 @9 m& G6 G7 J; w' r
1.png
一. 功能
2 m2 T  F1 [4 T& G
4 W# o+ p5 B6 o, c! p, B
1. 依托于robotframework
6 d6 N( R" n, }# M" E+ h
7 I6 E+ `8 V7 f- Q8 V
2. 根据代码注释,自动生成测试库
0 z# y, z( m# i

1 k3 y: }% V" y2 {' G
3. 自动搜索测试用例或指定测试用例文件运行
7 e. z0 }+ @* P3 N' o

6 s+ M: t3 R! D& g1 {6 u- B
4. commit触发测试和周期性定时(按天/小时)测试

. C) H7 u- u" E# i
. t* b) H8 F" X( [
5. 测试报表统计(区分环境)

2 w8 O4 f; s6 t! a) B

: w+ u: L7 e: R! p- [  e, Y
6. 企业微信通知测试结果
: N$ L$ s1 q: G: L# Y$ U. n3 j
4 M2 \. O0 J3 y7 s
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png
0 j5 \- l. L# \4 }) B  @6 ~
  u! {' ?# g+ R& T
另一个是【基于关键字和数据驱动的测试】
2 {9 x# F& {+ Z3 x% a* T: [

$ W% T. [4 ?0 v& v- o( m
$ Z# D5 q9 d+ {( A
二. 自动化测试架构
1.png
$ i# Q8 d- r+ Q5 R

% Y- ]' E/ V8 }* R9 v; L+ D- K
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png
! |, w1 H6 S* N2 x3 g) v8 q
% y' @5 }$ a6 H
基于代码的comment,能完成如下能力的输出:

/ R0 @5 `8 g. H! A3 n

' w4 x4 m% k% r4 T
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
2 H0 B, d+ C, O8 T$ v% ~

  }% q, ?3 z& z: L: D/ J) p
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。
& x) m0 ]$ G3 U% R" O+ [5 K/ }$ i
三.根据代码注释,自动生成测试库

! R$ a5 e8 c( u9 m# T; O# U+ s- r  G
. r9 b- r, H# i8 m5 J8 G. a* ?, y
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
" B% d3 r# A" o+ W( r# y, G+ B
. H# A( p, H! i- o
1.png

0 {0 U. J& M1 w* J$ ]

+ R# ^. W( b3 c; X! z+ T
如下代码
1.png

- [5 w% C" d) q- B# J

) S- s* o  o) u" t9 K
7 z& }9 F+ y' c: J; k" V# J; w/ f0 E
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库

' T6 k$ ~, Q. V
9 I; B+ s4 q; @0 D6 u
1.png
2 E1 r! n3 j6 U3 c1 ?
5 E# _% `9 P" ^, }/ `! u+ L
使用者,只需要撰写测试数据即可(数据驱动测试)
6 U, r0 y' l6 v* i5 x  k, u9 \+ s4 f
1.png

! {4 K1 D4 x! r8 n+ Z
. `. A9 y# c. f, Z
5 z+ u1 h0 \0 V5 J& R; j

3 k% R+ h" m6 e; K) {0 C! i5 f' ~9 z( J  ?9 {1 Y
9 S- }% a8 Y0 {. u9 ~/ z1 R
四. 自动搜索测试用例或指定测试用例文件运行
1.png
0 S* q& W* c6 k) l9 Q+ ~

, G! I% K. W- c! X) n' V/ e
1. 自动搜索测试用例

6 ~+ |- v$ w  O6 E/ L

8 M% ^1 m8 H( a5 v根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:
, q4 m6 L8 p  h9 w2 W- J/ F7 s
: q9 G! c+ W4 m. ?" k* ^/ d
a. 文件夹必须是全小写的
4 ?4 G( W6 b2 @* u# |

8 \& S- D) Z* p2 rb. 文件夹下有test/case目录) k/ g; h3 ~8 B- R0 M/ V0 I
- j# v* J1 g, |$ F5 A4 @
- J3 g- `2 V5 j+ V
2. 指定测试用例文件

) a8 f4 N$ Y0 R* Z- t  r

/ q% R& A1 f+ S可指定测试用例的文件/目录测试

  `$ m) [2 j/ |% H9 @, `2 }
& A. J% U- d0 p, F

; Q- {3 T! {. `/ ~; Z3 D: a+ r
五. commit触发测试和周期性定时(按天/小时)测试3 `$ }( W) y4 v, C$ a" ?& Q% x1 v
1. 工具会自动监听commit,触发测试
; h! t; v' q; e& D. k4 d

8 a& L3 B& M; ], r0 }! b
2. 也可指定每1h或每1d测试
1.png

# b1 T( K, z/ L# W+ ^
0 Y% d/ |, x. ?3 f8 e* k# B
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。
5 ~# Q, j- i# o! ~

2 K9 Z7 A; {! F1 @( k5 }9 z
1.png

0 h3 s1 i  n8 }; n/ T. j+ u. X

0 G- W  K1 K2 B- U+ N
! O% D' [( J1 @- }  ]! U! l

* n5 D# l1 H; C; _5 B7 f  R( u- u/ G  P6 M5 Q) b

4 v: l; j& ?4 c# I! x六. 测试报表统计

7 }" p* O' Z- k. j( O% |" r7 A3 I9 N
我们提出3个评价指标:

. C1 r: p; v* A1 f/ r

( N. @1 ^, ?! l/ _) {$ x1.成功率:成功的用例个数/ 总的测试用例个数

8 [7 Q3 C! w  T7 {  p5 f
2 n) p7 w9 S% g
2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数

, U; {+ z( |* s$ _

  s* V+ _# w$ ~* s4 W1 n8 p  X' K3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5
2 c8 ]( a  R- q& G( k) a- K
; S+ k+ h  u( }# q, t2 |& v- ]6 R' V. U+ w& l' D) L+ l
测试的结果数据会自动解析并存储到influxdb,利用grafana来展示
6 O8 P" Q" U/ A! M/ o4 t# u! B

7 E# V, M* O# ~  A6 O' O
1.png
! \, U- F+ I2 n7 Y) }
; Q% ]0 k% {0 v! v5 b- s
4 Y* P9 R( z# m5 v  ]/ J
9 S: L$ F( U# R
七. 企业微信通知测试结果
+ M' V1 \& o0 X0 e5 s" U( t7 e
" V  u8 X9 z! f
项目的测试成功率小于100%,将会发送到企业微信
: @# A: G" m  w, ?' y" V7 J

6 P/ K+ N* c, z/ h& b
1.png
& H1 @, B4 X& o4 C8 P8 N

. x; o* _( }+ ^6 s! W4 c
八. 总结
" [' J0 R6 m+ J6 e6 A6 m2 z# s
, V0 h1 O/ Z  u3 x
一个完善的自动测试体系背后,是有很多经验值得分享的:

' a/ v: }( y- E. W" W$ y5 f4 Q

9 A- Z5 s5 _5 l1 [# |, S& k" W
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。

: u' ~8 }4 b" W" ~4 B) w1 S
% V0 c1 G5 W4 |# @- ]/ p
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。

9 Z% N6 c5 B8 V5 W3 ?2 J  v

( V/ [6 ^6 Z3 B) |
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。

% L% o; L: @! d, @& {2 ?
) Z6 V( _+ O/ z- \4 `$ H. ]. O* {
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
- Z( N  Y- f2 B# J+ U& ^' @% Y

" _3 W" ]! b( @" `8 [3 p
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
. x1 L2 p' u$ J& g6 H+ J
. t, }6 _: _5 P, K, @; k
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
/ i8 S/ `( y% @  [! U$ P

, X& E: i9 G- z+ ]: h
原创:老王
9 E0 _2 }8 Q  R4 W! }5 I* m

/ Y. K- G; D  |0 n7 i




上一篇:避免文化空谈的陷阱,落地DevOps工具才是关键
下一篇:用DevOps 5.0版本的150天经验总结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

参加 ITIL 4 基础和专家认证、长河ITIL实战沙盘、DevOps基础级认证、ITSS服务经理认证报名
本站关键字: ITIL| ITSM| ISO20000| ITIL培训| ITIL认证| ITIL考试| ITSS| ITSS培训| ITSS认证| IT运维管理| DevOps| DevOps培训| DevOps认证| itop| itil4| sre| 开源ITSM软件

QQ|ITIL先锋论坛 ( 粤ICP备11099876号 )|appname

Baidu

GMT+8, 2022-5-23 04:26 , Processed in 0.121930 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表