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

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

 找回密码
 微信、QQ、手机号一键注册

扫描二维码登录本站

QQ登录

只需一步,快速开始

艾拓先锋
搜索
查看: 116|回复: 0

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

[复制链接]
来自- 广东广州

参加活动:0

组织活动:0

发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式 来自- 广东广州
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
0 ]0 b4 p8 Z* W7 ^' n/ t* \% P5 ^& Z5 V" h8 h# x' F
1.png
一. 功能

$ _6 w3 }( }# ?

0 h' g, V+ A6 ~! D; `
1. 依托于robotframework

9 r% w/ Q% a3 I7 @& _& r

: r1 D3 G" {$ ?: \' ^3 E
2. 根据代码注释,自动生成测试库

' L* p( d  H, F1 J" {& S

! E1 H3 r) B- R. F
3. 自动搜索测试用例或指定测试用例文件运行
! V/ e! v7 |' D4 u6 a. \# ]# Q
, o; M7 s& F) o! m# R4 d# k, X
4. commit触发测试和周期性定时(按天/小时)测试
% i7 R& F( Y9 @( ^7 h  H) q
* d" B* [9 ^! F
5. 测试报表统计(区分环境)
' e5 G/ a+ B$ G: N# X1 }
" J0 Q: ?- i  R; q% z4 o
6. 企业微信通知测试结果

! e3 a. ^; b( ?, m  ~7 b, R5 v
  ~2 v: X& n4 i" j
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png
" _' T* _1 O5 W; I. W2 E  h9 E! u

% T9 v9 S* t7 W  \* ~( M' V
另一个是【基于关键字和数据驱动的测试】
  P* _2 s: O) G5 B
* t9 S+ P6 ]4 f
4 w7 F' R. J1 E! d: w% h# u0 s; V2 Y
二. 自动化测试架构
1.png
4 u+ Z* o; B/ q( G% B8 G" L# Q
$ k6 W' a- d" {
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png

8 N' S6 s: S2 I9 h/ i9 k4 Z. A+ f
. t+ B9 j8 N6 s4 p) W
基于代码的comment,能完成如下能力的输出:

7 t3 `# z5 k8 o  Y

7 ?! Y) h4 Q2 s! x9 L( \% M8 n4 n
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
8 R! V4 n; M, w; R( h. k
0 w5 h+ M" ?$ r% @# \! c
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。

" _9 _& U* k2 i
三.根据代码注释,自动生成测试库
, r5 J% i6 S" Q" D
3 b& Q8 N) ]( a# n/ k6 q  k
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py

" U* ~9 C4 [) K

- M% z! w* i* P# \# p
1.png
% y$ L" _$ o6 D8 C
2 W3 u: o1 k- h; g8 d/ G
如下代码
1.png
% I# C2 ?" N/ L. B$ M

+ l( _5 k# p" |6 v% G6 A/ k

9 i( D7 Y( L" i; h8 a9 s
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库

; U8 U. _& a6 X. |$ M

9 F" i: `# p3 b; x6 Y; o8 _
1.png

' D3 J% g& i" x) |/ c# k" a
, W+ V' \  x1 j) l  g
使用者,只需要撰写测试数据即可(数据驱动测试)! f/ x: F  c  ?% k5 ^- D2 C7 ^* Y
1.png
( S- R! [( `6 v8 s8 w
# ?+ D# m1 s  u4 e% }  W" Z

+ y" a  A% Q" F. c6 i5 t: P

# v5 R9 H+ _. }! j
- {1 k7 m; a: b

( Q* |$ q) H& J! N四. 自动搜索测试用例或指定测试用例文件运行
1.png

; R  q! R2 |3 f- A# \

3 B' Q$ F0 l  w( i5 F5 {, F
1. 自动搜索测试用例
$ [5 B, i' K" M$ }. H5 D5 A& H
8 A- l! J4 w/ M4 A2 H
根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:
: @$ G9 i3 i; f- P
8 x0 I6 _3 `0 F) y5 Y; p
a. 文件夹必须是全小写的
  S0 h  j! }+ Y' t% k

; i! |5 ?( E: ?b. 文件夹下有test/case目录4 ]' f/ W8 d) j& @
* G0 l, I7 y# `6 q( v& R9 }
' ]0 U4 e5 J8 o$ w. u
2. 指定测试用例文件

* f- q" O, X0 j, t5 J! J# S, N1 V

$ {4 T, i* p0 }  h6 N3 x: x, I可指定测试用例的文件/目录测试
; U8 X4 @3 u8 c8 L0 t$ G

# c6 _  l& d  @3 ^+ U7 x$ _1 _8 ]
% P- J$ t" R8 J* B0 R
五. commit触发测试和周期性定时(按天/小时)测试3 e- l- P& {- \* J: Q& a
1. 工具会自动监听commit,触发测试

+ V( Z2 Y5 `5 u6 j1 ~" l6 Q

( q) E4 C. w) y2 |6 V0 t+ Y
2. 也可指定每1h或每1d测试
1.png

& Z/ X( I/ F* f" ?
. l' l+ S* C: n1 I3 l
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。

. K* ~0 D4 E" f5 p2 o% R; B
. c4 Y% A* V6 W& d! F
1.png
! O: F* b# I0 c6 d7 Y' {: w! v

% q5 ?$ U3 T$ k. k* T% V8 p4 D  _9 R$ M& N8 n) Z

, }. n6 g1 P* F/ t& W2 Y, J8 H; l' e  X- o+ R
8 `, A  C4 ~! w9 {7 ?+ l& X
六. 测试报表统计
/ f8 i' ]4 |8 e' \' ?

, {% |  M' n5 q/ R8 |4 P
我们提出3个评价指标:
: ?& m9 k4 V, g, j
8 b! V- Q. }1 K. ]" A0 q5 ^( P  }
1.成功率:成功的用例个数/ 总的测试用例个数
3 q9 u/ Q; U- B

# E6 ~. G3 G' m8 d5 b2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数
( [+ D) c+ ^3 s$ H. \+ K
% t: b$ `8 H$ n2 O
3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5# C; b! Q6 l# T! H
' b) X7 @, e% B0 O' i2 n

7 _( p$ y8 y+ m7 z2 M- d! R" `; {测试的结果数据会自动解析并存储到influxdb,利用grafana来展示

& V+ |9 Z. w3 R6 j
4 @0 G& F: G1 N& ?
1.png
. k. }8 m# A( s0 E( b

3 X* r) P* e% Y& S! L3 W2 H
( L2 U& ^, j* ?! b- Z5 b
4 X- J. Q5 I0 ~0 W. ]
七. 企业微信通知测试结果
$ m* `  ^  B  r2 \1 w

, V' \. Q0 b3 j) B! C
项目的测试成功率小于100%,将会发送到企业微信

, Y+ F" @) o* ^4 E4 f9 F
* f9 G! \/ `% o
1.png

% J6 H$ j1 p0 K, x5 E
4 w, y  n% |9 ]4 s$ W
八. 总结

* w8 f1 N3 r) w$ M+ z/ Y

0 e$ e5 H2 _- J6 v/ ~/ E
一个完善的自动测试体系背后,是有很多经验值得分享的:
9 N$ J' z9 R$ K9 S  h

  y& e/ L$ @3 c
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。

' T4 Q- }9 B! R7 s
9 s  |  b% `3 T0 @/ u* z! I
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。
' {: C0 q: O* {7 c$ ~3 I! I6 W

6 a3 w5 J7 H/ `* Y" p
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。
5 t+ F, q# w# j! B

( b# L* [% l. R9 I2 d. S- \2 t
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
) Q' j. ~& H3 U- K9 Z9 n
5 y" r2 D6 v% {' z4 @
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
5 P* f' P  f# ^2 Z( q) a4 @

$ z6 I4 I* f+ A$ t; l0 a/ I" l6 X
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。

3 ^* @) S& O1 l3 S$ t
$ X1 D5 t+ [. ?) Z
原创:老王
2 p5 M$ `% E& y" i9 J. l0 j4 _4 b
% v8 @" c8 \+ ]

本版积分规则

选择云运维时代的王牌讲师-长河老师,助你轻松入门ITIL Foundation培训课程

QQ|小黑屋|手机版|Archiver|艾拓先锋网 ( 粤ICP备11099876号-1|网站地图

Baidu

GMT+8, 2018-12-15 19:54 , Processed in 0.235947 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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