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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

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

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

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

参加活动:0

组织活动:0

发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式 来自- 广东广州
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
6 ]7 ~: \" H+ r5 @4 |3 r; Z0 D
# Z8 y4 t3 ]7 a/ E/ A+ O- z: q% K! a
1.png
一. 功能
2 A9 Z0 M8 [. I$ O4 S

! ^; ]9 S, K4 ^& o' l
1. 依托于robotframework

" O/ l8 ]  @% k3 ?( s: V
9 K0 M8 A0 a+ Y; ^# I( f
2. 根据代码注释,自动生成测试库
3 F  ?0 s# Q+ l: d, \
: ]) N6 V9 U& ~8 S( l
3. 自动搜索测试用例或指定测试用例文件运行
( l: w- M% }+ w: H4 Q0 `3 t) v
+ N+ u, G% Q5 o. F
4. commit触发测试和周期性定时(按天/小时)测试

" s0 m$ T' S; f8 U* X

+ A0 d$ }; K. E
5. 测试报表统计(区分环境)
1 K" ?1 M7 m" z1 v9 q
( I- i! V! }3 g/ C
6. 企业微信通知测试结果

4 s' F" k; E' g7 V

" C  [: Z6 \5 g
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png

4 m9 i6 k' ]# g& m" L6 v8 _. w

  ]' ~6 `3 f/ K! l# ]0 M9 E
另一个是【基于关键字和数据驱动的测试】
; Y7 R: Y' M  x7 f& G

, w  Z0 y6 R5 u& ]. p
2 @" A) |0 |5 g# v) x3 b) E
二. 自动化测试架构
1.png
( V3 ?7 Y1 j6 v4 f$ g

# [; Q6 }+ \+ V
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png
: y( t# a( [' R2 U5 H3 `( w0 j
& Q. X* D$ B+ [' O& y" S' m
基于代码的comment,能完成如下能力的输出:

# g  I3 o2 \" D9 V7 G
9 z5 i' e4 U9 ^
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
; I- V2 _. _5 t5 P# O
/ V7 c, H: Z% O+ j# L6 P
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。

, c: j( Q* m& x# ?& {$ z$ D
三.根据代码注释,自动生成测试库

) R) H9 h, H9 z, `

8 S; l1 u% u2 w/ {, p+ c! a
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
/ @) k- ?/ {% b6 `) I' z# r
5 V7 G, [% q8 H+ W! [
1.png

: {4 {! R" a6 ^+ [. c; N
" c* i. _; t: @4 \  m- f, r( z
如下代码
1.png

) v! g3 d- R2 c9 k! m- d

& I8 \3 K8 K0 }0 \# \" ^
1 E, P  {! |8 g- d
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
# P7 C# O/ ]" w) h1 ]# f

" A- b/ c1 U0 f, G# n! t& C
1.png
& P" d; H3 D; b+ J2 b% g

) l2 }' m% y6 Z+ Q1 P# d/ g, u* |- m6 H
使用者,只需要撰写测试数据即可(数据驱动测试)
/ Z! k/ o: ~+ h, Y: S
1.png
4 u% S! A, Y$ O0 D5 x, ]+ |% u: g

. O% k( `2 P% C. h
* ^1 L/ g/ f9 G" p/ ~
6 M; t' \7 }) a

" R9 V1 T8 C5 j0 G( V& Z% o

6 S: b: W2 z' h, ?0 l" V% f8 v( N四. 自动搜索测试用例或指定测试用例文件运行
1.png

! S& D3 v/ ^- H& Y( e+ @$ J

% ?3 N& r, y7 L2 c
1. 自动搜索测试用例

! G/ h4 W% D! `; s1 \! \: _
( W. R& U2 w! v! R
根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:

6 {3 ^  O5 F" H1 B, k
( V( ~8 \7 ~: D* b/ Z$ n& q
a. 文件夹必须是全小写的

# O; M) S, d+ T3 O% ]0 r/ U$ `: g
: b' f; N2 X4 N1 K3 R' ^' E
b. 文件夹下有test/case目录( ?! q  N9 p; N1 `

. H  h' o$ K7 a7 l. H' {( R

+ F( Q: A. \' Q, A0 V( {
2. 指定测试用例文件

# I+ E/ g3 C/ H& S  r/ [' W
! B$ Y' }8 c/ C0 {
可指定测试用例的文件/目录测试

1 w, ^; v; T, w6 p
* n4 Y" X. ^: b& z: V! c

7 D" h, F& z: }6 o% z' a- u0 b2 ~7 @
五. commit触发测试和周期性定时(按天/小时)测试
, J, m# U* [, w& @0 g, d
1. 工具会自动监听commit,触发测试

. g& i. A5 f% r! D
3 f' f. [, ?% i' m* x
2. 也可指定每1h或每1d测试
1.png

  f/ W4 r  u' H" i2 ~$ i
1 o- B' e. i4 ~0 a, ^+ \
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。
; R" K& X; V5 |' f1 J

# d9 u% q9 m* S5 h& w$ m
1.png

* k3 l: e2 j$ z

$ [4 j" v6 F( N  m: k9 @
0 B1 d3 j+ R( B8 w

0 Q0 ~- V6 d$ ?( o* L; ~
! ?% Q+ Z4 Q4 J( t9 c

: J: p2 Q  z" A) A# ~# i六. 测试报表统计
0 B( {! n5 [* I2 E

8 p, w5 \0 e( K
我们提出3个评价指标:
  ?; y/ m. K- W, W
, v: k$ b% P0 K$ u0 G
1.成功率:成功的用例个数/ 总的测试用例个数
( s6 p+ S2 O  [8 i
# ]$ k1 V" C7 R, U+ v
2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数

" ^/ F2 e/ ~) u) V7 r# E6 ~/ N
, q+ [+ J. _/ X$ s. d/ P" [4 R7 q
3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5- ~& o$ Q: v& X# Y+ d
' S; c* P4 D% `# w) A
0 c' |5 X7 F! d8 _
测试的结果数据会自动解析并存储到influxdb,利用grafana来展示

6 [  ^3 A' c+ _7 |2 W

3 U! m+ O5 X5 \3 u7 n
1.png

5 ~' I6 j" `. [( _" u" e- g

' m' H( @* Z, N: H- v# Z1 I
: S! F7 m; N, d
! B9 R1 Y' R2 o! f6 k
七. 企业微信通知测试结果

$ G9 M: B6 B, V
, s/ G: A8 R+ w
项目的测试成功率小于100%,将会发送到企业微信

2 A4 w% Q. k& n% C! j$ |

6 }' x; l4 H3 T! V
1.png
. g: g5 t' W7 W

2 W% b# d: m! O! n% v% }; e
八. 总结
, B/ E8 P  ^; V. t: R  E
2 x% g0 b$ L9 R& G
一个完善的自动测试体系背后,是有很多经验值得分享的:

& V+ r1 M, A/ P0 n
3 M. Z& R* i0 }# i5 U
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。
$ D. b/ z; h; \+ U
+ p' x( J( }1 B) ]' l# J4 c4 |
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。

+ ^( W! S" B5 I: P- k

* F9 d7 [5 A- I+ k( ^* Y* ~4 g, b
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。
. o- i, G. v" C$ L) h) a
0 v& K. q/ V# C1 o" A
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
  f( U3 \+ E0 J& t; b# o8 c$ ~' R$ c
" t. ]" C8 Q. A7 d' [) @% g8 r
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
- u" ?8 m, m+ I; s* w5 W1 P" ^
5 F5 Y9 w$ J% g/ x9 p
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
1 p& x* ?3 {$ m2 }+ B

% n; a! w7 L; g- b9 h# z" b
原创:老王

  P1 ^- G7 _6 J4 I) W7 ]" Z# ]8 V% f7 ]2 F4 N

本版积分规则

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

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

Baidu

GMT+8, 2019-4-25 00:18 , Processed in 0.224090 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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