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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 1886|回复: 0

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

[复制链接]
发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-10-31 11:20 编辑 ( p8 C4 d9 x) z1 h$ l
1 U' H2 S7 Q& G3 d6 Z8 X
1.png
一. 功能

& R1 w* O0 x* W6 y* u

- G0 \( P9 _. w8 F7 N' K
1. 依托于robotframework

3 C4 c( N5 L: T& i) L# f- _

9 x7 I* \& ?7 A; ~
2. 根据代码注释,自动生成测试库
3 K. Q$ Z3 d# G5 q# z& X
- g' h$ ?, ~7 F) w7 U
3. 自动搜索测试用例或指定测试用例文件运行
* d$ |9 ~" B* V8 [) Q0 B  E

3 L$ y. ~1 D3 g( M
4. commit触发测试和周期性定时(按天/小时)测试

1 y8 ]! h1 y4 u
3 V6 ?! E. X: h' ~' t1 o/ \, b
5. 测试报表统计(区分环境)

- K4 f9 N5 q) K3 e

$ L& K, v  `' D& B5 A
6. 企业微信通知测试结果

" l6 S# b+ `0 R6 S! q

4 G3 ^9 D' ^7 S" b
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png

( Q! @) L" N& k6 w2 d2 z

4 D, b6 q' N8 D8 M  {% p9 t( O/ x
另一个是【基于关键字和数据驱动的测试】
! H5 w! T5 x. o) Z* i! f- k; G

+ _2 a5 ^. s# e/ ~1 F

) ~: [% F# H/ d* S. R& R1 W0 g
二. 自动化测试架构
1.png

6 x( W! v" s* [; R8 i+ n& A( a4 t
$ e, }4 R5 O# o$ l5 H4 `
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png

' f1 f/ X- g" B& a+ V& T9 V2 y1 y
$ ^% j% o9 x( q1 x# H  \( J  N: \
基于代码的comment,能完成如下能力的输出:

, r3 J5 F% m. r) q: O8 Y1 X
+ L9 g* n8 F* u) m. E7 B- l* {
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。

& ~, K0 M- X& ~1 C+ j& h8 d! q6 q

, M2 N3 n0 B2 i) s+ R
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。
# K: n. }9 V' W) g* N- c% }
三.根据代码注释,自动生成测试库

3 N6 _- y6 s) r- k  c2 p
5 y" N: N! u; O" I8 j
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
; U; \" s. d5 y3 s6 I

! }2 \/ _. E& J) R( {
1.png

. S: b2 E) g, b0 Z

; {7 {$ q( Q2 v6 A* @
如下代码
1.png
1 e8 a3 w7 I% y8 u% y

0 j) x: L$ r, I4 r' Q8 Q

$ e  @$ [3 @6 m- Z9 a; s
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
* \3 H/ ?$ \5 _8 {$ U7 `' |; G
2 O0 p1 D* `; j
1.png
6 A+ T  k* R8 _! l  C6 b

: T( J7 V$ n2 k8 K* H9 X
使用者,只需要撰写测试数据即可(数据驱动测试)
) [. l  f5 c: y9 w5 c8 D1 K5 ^
1.png

. |7 r5 D  e" `& K& \2 C

4 [7 D4 P+ x; l7 a" D8 G
$ H# r. d% u- V1 K! k; W

2 n6 R+ P( o6 n3 k( y: ]  c5 i+ V. m' d

% w; i, |# ]$ A' u3 q& b四. 自动搜索测试用例或指定测试用例文件运行
1.png
' ]5 ]1 ~% |7 D, N6 q6 I
! A: \2 \/ Z4 h1 Q
1. 自动搜索测试用例
$ ]$ O9 B) O: \/ @

# k8 |& ^* y/ G( l* m- A: ]根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:

& ~5 q7 \5 @4 w! _$ w$ @0 f6 A

7 k& C: o, ]4 J" B& Xa. 文件夹必须是全小写的
0 s/ t% @" [( ^; m: z% A: k
& w  k* L& ~' G9 S6 J: @
b. 文件夹下有test/case目录+ _  w- J* g8 k3 x

( t3 M% O5 c9 A/ ?+ F
* Y! e  ]* d1 B7 `/ V
2. 指定测试用例文件
! G3 v1 g0 r: ^4 R) v( |/ c
1 u! z3 b: g6 f% j5 m3 u0 {% I
可指定测试用例的文件/目录测试
( x7 }! f" ^' f3 w' f  c* Y  ?  r
9 l8 N8 L4 l9 E3 N# M) T" Q5 `
2 \' S3 h! `+ @$ ]! Y
五. commit触发测试和周期性定时(按天/小时)测试+ G9 H0 j4 G, V( F, ]/ x8 f& b, a
1. 工具会自动监听commit,触发测试

2 y! D) {7 s' [* f
. U' x8 i( q! P( _7 i! J
2. 也可指定每1h或每1d测试
1.png

3 U/ _6 _$ w. F0 f

) S  `9 q( H  H& h9 j
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。
5 y0 p8 o- A; F: a. n& [

* [; c# J! A. X7 y! ]2 ]! N
1.png
: Z, C: \; n3 @: N5 ?

' t% J+ E; {, w6 S8 l% k6 ]2 w4 c) y  [) b! _6 `. b+ D

% Y1 K7 \) |+ u' S( [6 U0 x) |. ?/ q

8 K1 k# \& }/ k0 R- G( X六. 测试报表统计
' o# u3 L6 n5 r. D2 v. C8 R8 i

- J( q/ x( Z( g; Y9 S' L
我们提出3个评价指标:
9 d, d" {; F- I
  h* m/ x; T- m; L& F" }4 P
1.成功率:成功的用例个数/ 总的测试用例个数

1 p: \! _1 `, K. w. k
# \7 L# E+ y" w; ?  u
2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数

. g0 x! P( i  |+ S* G
' k, X% r. l9 X" L! I
3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5
, `. o( \$ q0 ^  e  b4 a+ B2 h' {6 Y- M3 _9 }

9 g4 `- N& m$ j7 A. j, t测试的结果数据会自动解析并存储到influxdb,利用grafana来展示
- R: i7 }1 I' V$ {; M4 u

; C+ W5 j% M3 I8 _
1.png
1 E/ H' z( A! }2 y

: K& W3 x  n0 p+ P/ [
6 `6 w* l5 ]9 }* o2 x
! P( i9 |2 q8 C9 Y
七. 企业微信通知测试结果
# h2 x: s9 ^/ M: [  H
6 c8 i' l! ^! P. L- f3 t
项目的测试成功率小于100%,将会发送到企业微信

: Y% Z/ Z8 a8 j. L- l$ U  k

4 [3 o. T& H1 x$ y3 y
1.png

2 w% f* b# Q% u0 m/ S1 p& i+ _9 G

7 t6 t+ j" |, T: o* X
八. 总结
% W) z; l- _0 U
; I# @6 K" o0 C/ o. W3 f
一个完善的自动测试体系背后,是有很多经验值得分享的:
' I8 C3 ]: f. m4 F

& t1 F% u: C; t2 p. A+ c# E: y
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。
& l" Z8 E& w. T  v$ w/ u, }

: z0 d* ?& {$ }( p
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。
" ]6 `9 ~7 z* A8 m5 _8 ~# j
8 l& @* _8 G9 L
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。

' ?; n: \% Z# V1 g

$ d! f) z( y3 y7 z; |
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。

9 M7 B: T: E$ c: {

1 V! e9 N# w. a
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
7 R7 A' H+ r- U5 w: C! d

" _* X; `3 H/ U8 A% k$ L8 K
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
) V  b* |5 B! T  B: ~+ k

( C5 `! z) L! ]  v
原创:老王

; V% W( c( S7 K" g( \. |* ]# _, C% G9 d' E




上一篇:避免文化空谈的陷阱,落地DevOps工具才是关键
下一篇:用DevOps 5.0版本的150天经验总结

本版积分规则

参加 ITIL 4 Foundation和中级过渡MPT认证、DevOps专家认证、ITSS服务经理认证报名

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

Baidu

GMT+8, 2020-7-6 19:10 , Processed in 0.177674 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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