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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 1088|回复: 0

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

[复制链接]
发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
: M/ B+ r- E6 x7 e' g. o
$ X1 Y# R" r: H
1.png
一. 功能

/ J; Z& h( Z8 W4 u, U
, R8 o# x# _- }7 `" Z2 Z- I) I
1. 依托于robotframework
! {) J: l- o) L: v  p- i4 [
0 Q& f# ]+ E1 R/ X0 |; s
2. 根据代码注释,自动生成测试库
: R2 m  F! Q# [; I  C! s2 {

  K3 a" j+ y  w* u# f
3. 自动搜索测试用例或指定测试用例文件运行
. w5 s5 v% B# n$ p2 y$ c' r5 n
! C" W9 p% T1 r) p6 C
4. commit触发测试和周期性定时(按天/小时)测试

& }) `( M. @' @& _2 ?

$ z+ I8 ]' R/ `$ q
5. 测试报表统计(区分环境)

7 V7 k6 S2 D7 I# @; i- J
, N& ~: Y" W) a% f; |
6. 企业微信通知测试结果
; M+ {6 L. t2 c( r: ~2 Z  c

8 o7 y1 w9 K0 g3 o2 P
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png

- f4 d  c3 \( {6 Q: D
1 j0 M, V+ z7 k% n/ b. M. ~
另一个是【基于关键字和数据驱动的测试】
* x/ v5 [/ y4 `" K! g+ }6 h, w

/ y+ k1 P7 y. X! X- |

3 y- T  S( W  d9 `" y$ Z! k9 r9 c( ]
二. 自动化测试架构
1.png
3 e% A" M: [1 [" t- V
1 y* S2 [- {/ Y& t# ?6 |: n
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png

$ _, _4 `: V8 Q& t

2 P# U8 G+ t, i: H4 `
基于代码的comment,能完成如下能力的输出:
& V( H% j4 Z1 l. f

' A1 Z% B& f& o( ~
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
& x5 U7 o2 Y$ a1 G

' K* f8 R* v0 \# b* J
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。

; O' ]" p' I. T  ?
三.根据代码注释,自动生成测试库

5 k# f4 }# v; I3 h/ i
7 l& I" \/ e7 `/ n
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
* p; N7 E6 Z4 U, y7 j3 N1 C/ p1 P
1 V, [+ y5 x& z' b, I
1.png

! l2 \+ t5 `' e8 h+ \5 L

# [5 u- s" a2 P- W; Y4 J, a5 R
如下代码
1.png
/ H" R. I1 D& G' v# }* X

* V  |$ x7 E4 Z9 d% T9 U/ I, ~) h% K

7 @6 V, J% n4 R
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
9 m1 E  b) I' N$ V7 Q, Z
& t# o5 `+ D6 S( x, m" Q8 I
1.png
) h; `' c; Y5 T$ d9 m

$ |: F, v( O& O& z2 F* ~* }
使用者,只需要撰写测试数据即可(数据驱动测试)& [$ K( T; K. s6 V$ l, ~
1.png

" t/ E6 k9 t. P/ Q6 H

. \/ w. ~) R6 c6 O; q5 }* L9 T( y) }. e8 Z  I$ [+ ~0 L/ Q

( C* [- j! E; o
+ {3 w2 d! F" _; O  ?% @: R
* C- n* ~+ N& x  b4 c- L
四. 自动搜索测试用例或指定测试用例文件运行
1.png

/ G7 b8 E8 |$ u" X" A" L' V1 S
6 @- \8 r8 C+ ^3 V4 H1 u
1. 自动搜索测试用例
8 |: g8 _* v1 Q5 ~5 c& I) R# ~

/ ?. n, k: P' b* Y' {3 ~根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:
( ]5 t/ P' R  ~. m1 b$ G4 V* A

% ~- o, E) m3 ?  n$ \/ ma. 文件夹必须是全小写的

% c  I0 R' N5 y

: @9 R4 D& \9 u' i# h. ub. 文件夹下有test/case目录1 ?& C3 x( z% k) ?. C4 c( c
3 _  a; B$ `) l3 `  A8 J% E
" ^  `1 ~0 z0 y5 o$ w# T. k* k2 e
2. 指定测试用例文件
8 l7 }$ e5 S& J5 v. ~) N. b( Z, J7 D

$ p. K' U" g& L4 T2 ~可指定测试用例的文件/目录测试
  v, k$ N/ C4 u/ p8 n0 s- o7 k' H

, \6 d6 o9 c3 p+ H$ x

) l1 A& y* N- |4 b. r! l
五. commit触发测试和周期性定时(按天/小时)测试, D2 P6 C" q' T7 c7 H6 u
1. 工具会自动监听commit,触发测试

, Z# C2 D( H% o7 N+ t% n3 h$ E; [  ]

& ^, u2 J9 J" m2 G
2. 也可指定每1h或每1d测试
1.png
: Z# R5 `) p: K# @% O5 q* t) C  Y
  u% a8 Z. V+ O3 I3 c; ~  k/ I& |# j
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。

, Q. f( I* f* k- z* J2 V3 r+ ?% ~  E
* Q" R. Y% i# [
1.png

& |3 A' b6 i5 t. U; v7 H

3 S) z1 W& w+ c# n! Y+ E; P4 T  F4 Q6 W1 ~% `

2 d4 q6 p6 E% ]' n; {# Z6 V1 I& r4 B

/ O' y" g& f* D& r/ c( y  V$ B六. 测试报表统计

7 b, Z5 M3 h( o5 z7 B  n
4 Z6 \  m4 \  v1 [* M4 I: a" L
我们提出3个评价指标:
) A: y  k+ I8 H7 u4 G+ M
3 H/ o5 V% S7 k- e( r. X0 K' g
1.成功率:成功的用例个数/ 总的测试用例个数

$ B& D/ w: o/ z! }) h

. B# ^1 n  k2 e, O8 O& X2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数
$ v! h& ]# y! I' Y. w  h" O# |6 i
4 }3 @5 b" l4 Q2 L4 C# Z
3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5  l) Z. |& i7 Y6 @
! g9 H( ]7 a! E( U# M

, O0 T2 y$ K: S4 Y$ Y' _) T测试的结果数据会自动解析并存储到influxdb,利用grafana来展示
2 w4 ^" h. U) [6 l: ?! a7 @* R+ y. F
9 ~$ _( X6 W' |' J. g  N
1.png

- j) s) S( Y1 @
- x2 z; s- |/ _7 F0 z6 e1 J& X

1 l2 r$ j4 W1 c4 `: r" W3 b
2 N  ^; u; ?* q5 w3 C# T8 J
七. 企业微信通知测试结果

' x* t1 e8 W# I* V3 w- B4 {/ S( {1 J  [9 U" A* Y3 [
项目的测试成功率小于100%,将会发送到企业微信

1 w7 M" f$ s' V/ p  r- O9 U( _

  ~4 a, H: S. P! L& o  }# t# g% a8 z
1.png
. c' o. V/ _: G

/ C( P+ P7 K, S+ p# D: {) U
八. 总结
9 S4 P, r! f. Y% w

9 H, {; B( [: C/ V; l; F, |/ t
一个完善的自动测试体系背后,是有很多经验值得分享的:
. m2 X. T2 N6 G6 H9 ^" E4 S3 s6 j

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

# }5 D# u1 a' L  ~( @

: d. c( H1 k3 R& I( N" y4 x
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。

, u8 e9 e4 P2 A8 U

7 H( s5 M& d, |. V4 h
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。

9 d; b, ?8 x5 _- l+ Z+ `; r, m

' Z* j& }; j- G2 i& W- `
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
# k6 c* p  e( [8 }- D+ }5 y' {6 ~) w+ p
" F: U! ~1 E! p8 m" W9 h5 q
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
, d$ z) `& K$ I5 V% b
' u$ X) k: ~2 g6 d0 M7 o
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。

4 a5 u. W9 A. \

% O) [: S1 L1 u# o: x5 e
原创:老王

! ~1 d4 c' V. J; O4 K; z4 T. ~, a; ~# c. q

本版积分规则

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

Baidu

GMT+8, 2019-11-18 06:08 , Processed in 0.155849 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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