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

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

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

扫描二维码登录本站

QQ登录

只需一步,快速开始

搜索
查看: 772|回复: 0

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

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

参加活动:0

组织活动:0

发表于 2018-10-31 11:15:59 | 显示全部楼层 |阅读模式 来自- 广东广州
本帖最后由 adminlily 于 2018-10-31 11:20 编辑 7 }( n/ y, [; Y/ [
! J7 @4 k2 t* P. ?/ q; ]6 O$ O
1.png
一. 功能
: b1 }# O8 E. }% z4 ?4 s

' p3 C3 @( }' H+ M$ g9 t! ^# E% u
1. 依托于robotframework
" G: p" _  e3 j7 u
5 o- q' m  Z( C- S& V" n. ^% U
2. 根据代码注释,自动生成测试库
* A* r1 z$ e% {1 C1 V5 y
' f- \2 f! T2 y& f: f5 C3 I
3. 自动搜索测试用例或指定测试用例文件运行

4 u- t3 R5 p7 R0 j! v9 C6 H" b$ {" |
$ `$ Z8 y; `% [8 `
4. commit触发测试和周期性定时(按天/小时)测试

7 j' v* l8 H! g# _

6 o3 c* _( n# @# u! d0 |
5. 测试报表统计(区分环境)

! K7 i2 @' `" \; j9 j% T$ }8 j/ c

* G8 A! v+ r+ d- w5 `* b
6. 企业微信通知测试结果
$ r/ j9 G4 e8 Q1 v7 i/ g5 l
5 S% w2 L1 i' t# R* Y7 [5 e
在此之前,大家要去复习两个重要的概念,一个是【测试金字塔】模型,
1.png
% Q. V4 t3 ?' R/ {3 {; S8 m# j
* `+ L) P! L! H+ o8 W
另一个是【基于关键字和数据驱动的测试】

3 G! q% R, \, K& f( d# L$ A+ _
! y& `# H2 r/ z3 M0 b+ q8 v
5 f0 p+ q: m* P: r" p
二. 自动化测试架构
1.png

4 I9 c3 G- G$ q3 R8 L6 J8 F

" `1 D5 O- I: H. ?
在这一套自动化测试架构中,代码注释起到了核心的作用,背后就是标准化的要求,代码注释的格式如下:
1.png

0 N/ c: D0 V# W7 l- F/ E0 j
  y" y) C  {% U1 L# W3 [2 |/ I. F
基于代码的comment,能完成如下能力的输出:

3 o& }- X4 E0 t6 e2 i: p

2 T( a- ?0 M6 Q& p/ }
1、Document。我们要自动生成api接口说明文档,可以依赖此方法生成。

0 a" \& y' e1 L3 A& E3 m) c
; U( G% d8 k! ~1 e9 m
2、自动化生成服务测试用例。自动根据关键字构造自动化测试的方法和用例。

( m* V( D, a/ [& O/ ~5 k& ^$ ]
三.根据代码注释,自动生成测试库

8 s% H! h( [! J4 u

1 W% O) D' Z. b7 h; s  W) P* F
指定项目的根目录,会自动将测试库写入到test/library/[项目名].py
7 |! Y+ S- ~0 ~; e2 d" U4 C
* B' _8 O) F" t3 J: F  q, v
1.png
  n$ l: e; X* @2 {( ~

, a2 f0 X/ I4 F6 u6 e
如下代码
1.png

) y/ I; H1 u3 F$ Y  W) Y' P
' {; c& A) c6 ^1 [

- W2 l7 v  A8 d6 U1 `7 Z' r5 S
注意,如果post/put请求发送的是一个list数据,这里param请写struct类型。如@param struct data然后测试数据构造data=[{"a": 1}],框架将会发送[{"a": 1}]作为http body会自动扫描并生成robotframework的测试库
1 v  R9 Y# M  [1 X9 q- \& D& y

5 b* D: j4 v5 w5 s6 N
1.png

- k$ b- t2 l& w* ?8 j

, z& L" x2 v& ^' x( P" W
使用者,只需要撰写测试数据即可(数据驱动测试)
( p- P" _+ {$ J9 E6 B5 n4 d0 i: R+ w
1.png
4 d0 T! _4 z9 ^; }& ~8 i

/ n% c% ^) W, F9 [# C# D. F: Y; n. U( P

: Z2 M, \, t  n5 i& r' E" v) f# \6 H& J& s$ p

6 j3 ?: E" F3 u. T四. 自动搜索测试用例或指定测试用例文件运行
1.png
3 j& d/ e, l0 h; @

* a0 Y! ^" K  m! F
1. 自动搜索测试用例

, |8 h/ X: }+ f+ G" e( S
$ N6 j0 @& l7 J" d
根据我们的部署规范,工具会自动搜索/usr/local/easyops目录下的项目,符合如下要求:

  Z# ?: A; M% i# \. l* w
# Y$ {. J6 [9 ^& E; s( k/ R1 f  x+ o" B
a. 文件夹必须是全小写的

( U6 a+ {+ M# ^% u  b8 c

$ D9 g! y( J' o$ ~2 U& Db. 文件夹下有test/case目录! _7 {3 s2 a; q9 W( A: J

, @' X' k( P' _! w+ j; ~7 g
: ^! A- w) H. h# c: c
2. 指定测试用例文件
  t/ }$ l* f2 E& B
9 e/ Y9 @% y! m% b2 d0 a: x2 G( _
可指定测试用例的文件/目录测试

' b! ]+ f* g+ m( Y1 X5 R# l6 L  q

* Y% A) N( M  y  m
6 a- X- [: u$ a4 U5 d+ r/ V  ~  D
五. commit触发测试和周期性定时(按天/小时)测试' m; F/ T9 n% C0 B( o+ {' [' {
1. 工具会自动监听commit,触发测试

" ~* P: j" \( v& Q- o% V4 N' d
' `# N( u) M, T. G
2. 也可指定每1h或每1d测试
1.png

/ M( D% ?# ~1 j4 i

, \+ D: k0 T+ r& e0 r( V
自动触发流水线执行全流程的验证,开发、测试和发布亦是如此。
& K0 y, E) ]* h) e7 I4 r; W

& {& J' {: s% ^+ y' s0 v+ q3 a
1.png

* @7 _* t0 y% z6 x( O9 S9 J& b
6 @6 X  a+ C; Y7 h1 C" ?# o) V
; z; v! d+ e- `3 I

& X9 O. t- h6 K( w1 }2 v9 E8 [. Q
3 }& S$ ?2 G8 l) Q5 K; K

5 x2 v5 z" t+ m! v, h8 @6 }六. 测试报表统计
+ J' Z  ~. a9 ?2 O" u5 s) [

& X3 i, e7 c# v
我们提出3个评价指标:

9 f+ h2 A" |1 Y' g. F6 Q

* i! [6 B+ T$ M6 u1.成功率:成功的用例个数/ 总的测试用例个数
; ]( K: w: C0 \" ]) s3 M

6 R! t7 J- P% i) q: [' H) z$ e2.覆盖率:(keyword总数-未测试的keyword个数)/ keyword总数

4 _% Z$ T7 R$ F. F

& A+ i  Z, N$ Z4 ?3.测试用例指数:测试keyword的测试数据个数的平均。最小是1(每个接口都只有1个测试数据),希望能达到3~5
. x8 O3 l0 c6 K' ]* R# v
3 z" r9 Z" ]/ u2 o# `
: C& S  `# i* {测试的结果数据会自动解析并存储到influxdb,利用grafana来展示

/ A. G3 n! Z% X1 q+ D' n; ^
+ n2 p9 i6 n( X: R/ s4 g; ]* e4 x: H
1.png
9 r' G7 d/ K% P1 ^0 }: [0 u
6 P4 }9 n/ i3 M5 ~1 s
' D9 J1 O  n/ |

% o1 E# h; D' h3 Q6 ?七. 企业微信通知测试结果
( c# o% Q7 K; w8 v

' Q! u0 s1 ?( ]0 e" ?$ {" q
项目的测试成功率小于100%,将会发送到企业微信
7 O2 E, D% k8 t& W# E. |2 R
3 H& U- p) X( V3 z+ m4 @% M
1.png
3 C* X0 Y# l3 l  k; C1 |

0 C9 Z$ o9 b' C- k
八. 总结
+ c3 z+ g% l- ^
& b/ h$ s* [2 y" c- U" t
一个完善的自动测试体系背后,是有很多经验值得分享的:

3 l9 G( U+ u0 m+ M, t

7 T  P+ Q+ K/ y# U! v
1、研发参与测试。我们说的参与测试不是参与测试本身,而是参与测试体系的搭建。研发和测试为了共同的目标,稍作改变,而不是完全依赖后续环境,自动化测试体系构建成本就可以大大降低。
2 o$ Q% T0 I6 m3 y' A3 P

) Z; t& ^8 `: i6 u3 j' w' W/ s  F
2、标准化。研发坚持标准化的代码习惯,基于标准化,传递能力给自动化测试过程,效率和质量都能得到保障。
. \3 _) I. b. ]

- x' y& ~+ Z  J5 f
3、质量意识前置。我们不把“质量当成测试组的职责”,而是把这部分的能力前置到研发阶段,共同构建质量保障壁垒。

3 K+ x/ ^- g$ e, D+ U. |3 H* c
$ B: A$ n) K+ b
4、自动化。我们在开发自动化测试体系的同时,把其能力和平台流水线能力对接起来,让执行和接入成本大大降低。
' b5 L. p' o9 T8 S* C

& t; }. U# W0 T! o* ~
5、数据化度量。即使建立了完善的测试体系,如果没有很好的度量,效果依然不会很好,度量最好的方式——看板。
7 }: `, Z& i; p( @4 H
5 T' O( ~/ E% G" N5 n% }
6、闭环。有问题就立即要去解决,让测试发现的问题闭环起来。
' x/ s" j4 F+ W$ K

8 ]/ d- p, }. `
原创:老王

3 m  ~" I1 M# h" i; f# C
- K1 i$ |& y" L5 w

本版积分规则

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

Baidu

GMT+8, 2019-6-17 23:05 , Processed in 0.239403 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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