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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

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

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

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

参加活动:0

组织活动:0

发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式 来自- 广东广州
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
- V" }4 U  u9 o3 z2 P
. U6 ?' B6 Y# B  I& e  C
1.png
一. 功能

& d# [, C6 C# \/ g5 y
$ ~) Z; k, l, l7 N  h8 q
1. 依托于robotframework
4 L* d3 H% b# e+ ?' K

4 S* ^; Q9 S, x2 j
2. 根据代码注释,自动生成测试库

$ Z+ V% w" K- S4 T- |5 R# x1 z# U
/ @6 |  a: N& A
3. 自动搜索测试用例或指定测试用例文件运行
7 S7 e( q) O0 i. Y+ L3 E/ }$ D

. I; n& _- [' b6 |/ k, l
4. commit触发测试和周期性定时(按天/小时)测试
: G. ~7 S8 ^- i- `. g& }% p/ ?
6 m) _7 T" l. ]5 a! d
5. 测试报表统计(区分环境)

3 x4 z5 }9 N2 U" U. y8 t3 }
) F8 Z/ @& ], c: P8 z, e/ |
6. 企业微信通知测试结果

/ `% p7 g" v' F
3 S, u* P$ [/ z% d8 @
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png
% L. d- V# ~' m/ M' `2 {3 \

9 w: x- u2 a- c7 {3 Z8 k2 Z
另一个是【基于关键字和数据驱动的测试】

1 E; q: a& i" d
6 A& m0 W& ~( G) p8 `
9 T* @8 W5 Z2 a0 h7 y9 `% U. F# f
二. 自动化测试架构
1.png

& s4 X" l3 A7 r9 Q

1 l' n# l$ A3 I! [
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png
: }9 j6 k) a& j

" e# x7 Z1 J! u
基于代码的comment,能完成如下能力的输出:
$ E; w) w. ^6 L

, a( @( J. n9 |- l# G5 S
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
& e: R7 w8 [1 H, B' m

+ q8 B/ r8 F0 I. N" {8 l' |& C& q8 V7 O
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。
- v$ }9 N: Z* j' t" D3 O
三.根据代码注释,自动生成测试库
% B2 e1 ?" u+ c9 U/ J, `2 R- r

! G2 c/ p  i# W
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py

3 g3 @' n# E8 s3 j

2 z8 m" y7 n( M- {/ s) u" v" G
1.png

9 T9 k; ~- x$ \

* d$ F, p% C; ^+ L0 I8 i# n+ x& \& c
如下代码
1.png

/ [( C7 \) O9 M7 f7 V! {4 u

5 d% t. L& ]4 Z" y% s5 t% L/ I
# H% c2 k* r" O$ \
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
+ O3 V# J  q, [! C

: q( O  p% i+ R+ d/ w- Z2 t* E
1.png
& \( q) L3 G/ [8 R8 _3 A( V3 y- t

. f7 z- u/ q' f. a
使用者,只需要撰写测试数据即可(数据驱动测试)2 i* P/ W3 x  B8 ?- H4 ]* E
1.png
( }9 j6 D# _0 ~2 z. v( N2 A- Y
9 g+ g/ u0 |6 V2 `1 k
8 x4 V& d" f% }  m6 I, L0 d
/ Z  {0 U6 {0 R
7 z1 l1 ^4 Y9 d; Z0 y/ G3 ?7 `2 \2 |
* w/ U$ E" `$ z/ `
四. 自动搜索测试用例或指定测试用例文件运行
1.png
8 k. _2 \* X  G4 X  I& ]

/ S: l: {* s( t$ R  q
1. 自动搜索测试用例

/ ~, y0 E4 w4 Y- O4 o
9 J, S) v# g2 k& D
根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:
2 L  F8 P- z( p, ~
0 \" N/ @0 L/ j9 @- ]6 |$ _
a. 文件夹必须是全小写的

; z( Z! ?! @- G6 `& \- o8 r# h
/ y4 E% r: L( q! K/ q* v- D( Y8 b
b. 文件夹下有test/case目录. L& }* u+ t) X( {  {; j/ v* t' {

0 f8 b7 J( ?/ C0 X8 r

, _) C) U* B) t) f
2. 指定测试用例文件
' H! J  Y  W9 P% Q4 w. V+ @

5 |0 d# \- M' F) ~可指定测试用例的文件/目录测试
0 Y1 M/ |9 z. M+ U* e

) [- [2 L. c: \/ y" E! O% Q. U3 I

7 E9 n% h3 L& C& R8 {" H/ K3 p# z
五. commit触发测试和周期性定时(按天/小时)测试" l" }/ r+ R% p. O# d; m5 o
1. 工具会自动监听commit,触发测试
$ r+ r, S) m5 a+ f& s
6 J, D8 L; o& X9 O- w
2. 也可指定每1h或每1d测试
1.png

: @3 `! R  \2 U0 y3 h: f- ~9 t
3 [$ K) K: L( q7 i8 c" j
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。
' }. U, c' X0 D9 d% v) h
- W) z) Z! L  y. ~
1.png

  Q, [! @0 x- d) o/ \: y4 n
% l  Y  b  z8 U7 y  w9 i
1 }  Y# A  C& y! v9 v& ^

4 E8 \+ @, v: V9 E: P0 e4 p, v' p: G% s. {* d: t2 T: }1 @2 D( N
& I* F: Y, J  ^
六. 测试报表统计

* c5 X" y* t' a1 l# B" R# W
" l4 W. W( Z$ [
我们提出3个评价指标:

0 }6 j: Q+ O/ Q- G1 h/ U& ?, z) h9 ^7 k

2 Y8 k# T6 c5 S% {4 E1.成功率:成功的用例个数/ 总的测试用例个数
4 O$ j: f" `. N  Q* a' t

( E$ ]4 }+ V" e! u) {' ^! C1 Z2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数
+ n* K$ S1 m3 a* D

( O0 G& y0 W8 Q5 ~# ^3 }* E3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5) e3 `3 l' ]. c" H
; z+ Q3 ]' a! G
, e' S$ Z% U$ m- s# t5 `7 y
测试的结果数据会自动解析并存储到influxdb,利用grafana来展示

+ J5 v* v1 `4 g5 Y; }; V" S; @

2 ]1 z  V* P* v2 t- M
1.png
/ y* Q, Y" H0 R  S

/ o# _$ k; ~' q
8 s- Y+ A3 s8 i
1 Y& v, K$ c" W/ B
七. 企业微信通知测试结果

/ w0 r; t& J. ]6 @) n9 k7 w7 k, I# F; b- ~% E3 y# v
项目的测试成功率小于100%,将会发送到企业微信
! |& Z/ u* j5 T, w. w4 Z
" w, p3 V  n' F! y
1.png
& A4 a( T+ r5 X0 R0 g* e9 n

( f; J% L# s) j, f) k, B4 I
八. 总结

4 W' m! r7 Q3 [) B- y
. |+ V1 H1 t1 ~
一个完善的自动测试体系背后,是有很多经验值得分享的:

; ~4 n4 D/ ^6 L: `& i" [

' H. l) L- r$ }# ?
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。

7 L- j( g# a. t2 v/ k

+ o, y2 N: [/ C
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。

4 U9 L0 Z$ R1 h

0 I( S! K  |% B9 M3 F8 |/ u
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。
# T1 t2 i/ ]* p1 l6 b9 `& B
8 N% _5 m, v3 r0 z4 M' h$ Z# b
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。

- h- {( w3 o2 O% Y$ Z% v
/ R  I) O8 u7 y% ?3 h0 r
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
4 t; W8 f  g* }

8 m! F$ @! [0 y# ^# y5 Z
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
) U- V# t5 s8 O6 f1 t, [

3 Q' ]9 O. q: q
原创:老王

6 P' D* f+ k/ G, p  X
+ m& Q& T+ e9 D& D6 |/ U

本版积分规则

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

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

Baidu

GMT+8, 2019-2-24 13:42 , Processed in 0.273833 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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