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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 986|回复: 0

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

[复制链接]
发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式
本帖最后由 adminlily 于 2018-10-31 11:20 编辑
5 \# d* R1 S5 S( E
" L4 c& V" X" a; R
1.png
一. 功能

8 F8 k9 l/ z" b6 P3 m1 \' M2 B

/ T. ~' {: M, m- H
1. 依托于robotframework

4 B- |2 _. X1 [% |% _) B
% h& Y% Y! W9 r' E
2. 根据代码注释,自动生成测试库
7 z; ?1 G' X* t1 \/ b( ]

& s. e" v, c# @/ i' r* X
3. 自动搜索测试用例或指定测试用例文件运行

/ ^5 G" K5 V" y! S# W
9 V, y1 g& J4 K( \9 [* L( G
4. commit触发测试和周期性定时(按天/小时)测试

/ l) v! A) g. D, [, ]: [
" h: Q& ]* C5 A+ H
5. 测试报表统计(区分环境)
) w# w0 u. J7 T! Y/ {8 K/ j. M- O* C1 w
8 Q4 Y) @$ w- E% U6 ~! k$ _
6. 企业微信通知测试结果
6 x% \! X0 J) @7 O6 I/ |

$ V6 a* h* m1 C4 l* s4 H6 N/ Y- H
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png
! E) ?: F- S# j& h8 E$ {5 D, T4 ]' f

9 M+ j; E- C3 }/ Q3 ]
另一个是【基于关键字和数据驱动的测试】
0 H  J$ z: [1 v8 O7 o( C

. F' M7 D2 G) O3 e9 C$ p) @

2 {& q" ^! h4 ^; ]8 n  G
二. 自动化测试架构
1.png

, C( g! J  H/ f9 \, j3 m  w
4 d# Y' G' F6 ?* a+ g$ [
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png

: b. y- T6 i# J( d
4 P8 j# {. d: ^/ U) E) u' g
基于代码的comment,能完成如下能力的输出:

4 ]% d6 J  p4 L
/ C7 Y1 \7 O3 h4 s! V, @
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。
+ ^; x2 Z. M; H( T" D3 B( F6 _* t( q
% Y$ ^% b3 H( C2 x7 J
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。

6 _- i+ E0 a/ s( t. x: n3 h
三.根据代码注释,自动生成测试库
* w1 v7 R0 Z3 U, t9 w2 t5 m

6 n5 l7 @; F" |* J) o" j8 ~' ^
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
, ^& K) d' ^! O/ V: v
6 V1 y& t3 q' z! B
1.png

% F7 z) N" N) j" {% Y* F" N
8 M, T# i  ]; O$ F4 l; Q
如下代码
1.png

  P: z, E, M* Z5 o, S
! W* s1 ~4 h3 g  p, M- m
# T& W3 L8 B" f  p( G: Y
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
) ~9 j# u1 x% n5 S
6 Y: N# H1 @# e2 C9 s( `6 W# E
1.png

8 s5 d, [0 ~9 _" Z; o

. V6 {4 |) {, A; n$ d7 o5 _
使用者,只需要撰写测试数据即可(数据驱动测试)8 M, @( }/ l1 `) c! p- R5 n/ d
1.png
8 E# n( b) Z3 c' I) D
+ |' o, a* X& ^# }% E! d
& k& W& D, Z1 D' |  A+ y

4 W/ Q/ e/ ^% X* d2 N# N0 x9 H# [. ^5 A; w4 T

, ]2 B7 R' K: ~- D( |" E+ J四. 自动搜索测试用例或指定测试用例文件运行
1.png

8 d. P; g6 e* D0 n# h4 b

5 j. r( p: ?/ K: l8 ^
1. 自动搜索测试用例

2 |, K( ?5 k6 x- P: p: `  Y! H3 {

! {8 b9 g9 a9 u根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:
% D- D* r2 t" \4 @: u
# b# k  S5 N# d+ ]2 t" K
a. 文件夹必须是全小写的
# J: K) `; x8 L. f9 V, J2 H2 F
- }6 v6 Y( e: i8 G! T: ]
b. 文件夹下有test/case目录; e/ V# q1 v9 o: k
% I# x% U1 E+ J0 m. U6 ~1 _( }- }
4 J  T+ W1 S( t4 ^
2. 指定测试用例文件
6 F1 ^$ ^* |4 H7 d
% u! ?% w; o' H$ Y9 `! x
可指定测试用例的文件/目录测试
; P; X8 i8 Q' @+ a7 J

( H/ a$ T* h! {% _" C) t1 G* a
- X; r  G3 I9 o
五. commit触发测试和周期性定时(按天/小时)测试* k' {) j( u, @+ O; F# s3 ?
1. 工具会自动监听commit,触发测试

" t" Y( B5 ]$ s* N* H

- w' e* @1 K% k  b) \5 L9 \& c
2. 也可指定每1h或每1d测试
1.png
; U& h' b. m4 ]% S+ t
1 R! o8 x- ]6 L1 l" f
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。

% C6 `& n$ r$ t. t. N: V

( a7 }. i8 [+ d* I
1.png
1 I6 q. y# m( |4 `6 q- j  f& c

, N2 T+ ]9 I8 ^+ d# T- ]1 D" V- y5 `8 A" \
( ?0 t4 b; N: i# y7 T5 |0 i
/ k+ @& Y2 ~& {  [5 ?" L$ z
$ d3 [7 D1 l3 u
六. 测试报表统计
1 z$ v6 v. {4 s- o) q
- @4 ^; p' p% V' ]3 S/ |  S" Y
我们提出3个评价指标:
- p5 S* f; S' S( H* [
% D. E6 l) x# U
1.成功率:成功的用例个数/ 总的测试用例个数

0 r6 i% f. A7 T

. B3 ~; d5 u2 ^3 J( P2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数

9 w3 w! V/ O' y1 \3 n7 _, \# r

: Q8 b7 z# q3 d, z: ~, O8 W3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5
' ]1 s/ u% A2 I( [; c
, f: {; K0 I& }# E9 ^7 n4 W; {  C
; w1 C: b9 J7 R4 G测试的结果数据会自动解析并存储到influxdb,利用grafana来展示

! R+ u/ o$ i. c
& x- y% u! V& ~; J
1.png

# I& R0 G% z' H6 @. E
1 z0 O* X& {  A/ \4 q% l
$ L! ~# [- i9 O/ ?) `1 a

3 W2 I% D0 f# e; N4 j% e- P七. 企业微信通知测试结果
/ a! o* P3 A, m* E- b' v
' [' u( Y9 v  Q7 P5 i" p
项目的测试成功率小于100%,将会发送到企业微信

3 }( ?/ T/ a" P/ g0 p$ A
2 ]1 Y$ t" L4 j1 z
1.png
2 u3 T# \4 U7 k3 {$ I4 E( o

) t( F0 ]* E7 k) Z$ @; D  l1 \& f; a
八. 总结
: s$ q+ e8 d5 Z  I* E

* ~9 `5 G7 U( o. `: \
一个完善的自动测试体系背后,是有很多经验值得分享的:

; E& w, s# n; `& \# u

' b( S( s0 t$ B$ K7 M' p2 K
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。

( z3 X- Z2 N) F
8 ?" j+ b# U: ?) w; i5 x" g. j5 B
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。
, i' h8 I6 F" X; ?) B

5 p$ X- p( m. h# n4 q- l
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。

8 h2 I& M: y3 k9 c

2 l9 ?. @" n( y6 z7 ?. I$ w/ \& Q7 m
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
( I" z, s5 y. d6 y* z' A- r
5 x  x% y% ?4 k8 Q5 m$ K' E  Q
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。

4 F( _! r/ G) n( q

0 c# x8 X) t3 F5 ~- w; I4 m
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
: E! p& D* {$ p; ~

1 u1 P1 C% c* `% P* U
原创:老王

$ }7 f0 E" L2 V9 L9 v9 ?! X  Y, K! C+ {1 U

本版积分规则

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

Baidu

GMT+8, 2019-9-23 06:55 , Processed in 0.153723 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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