单元测试的规范

  • 格式:pdf
  • 大小:220.62 KB
  • 文档页数:3

单元测试的规范⼀、测试准则

必须满⾜AIR原则

A:Automatic(⾃动化)

I:Independent(独⽴性)

R:Repeatable(可重复)

可参照27条准则。

引⽤链接:

原⽂链接:如下:

27条准则⼆、结构规范

⽬录结构规范:

1.源码存放在src⽬录,每个功能模块创建单个npm包

2.src同级创建test/unit作为单元测试⽂件⽬录

3.test/unit⽬录下创建源npm包同名⽂件夹,⽤于存放单元测试⽂件

4.src同级创建test/integration作为集成测试⽂件夹

5.test/integration⽬录下创建源npm包同名⽂件夹,⽤于存放集成测试⽂件

⽂件命名规范:

1.test⽬录下测试⽂件名同源码⽂件名同名,后缀以.test.js结尾

2.test/unit和test/integration创建测试⽂件夹时,参照短横线(kabab-case)规范命名。

3.js和ts⽂件依照短横线(kabab-case)规范命名,Vue⽂件依照驼峰(camelCased)规范命名。

4.每个源码⽂件(如js,ts,vue)对应⼀个同名.test.js⽂件。(index⽂件可以忽略)三、编码原则

必须符合 BCDE 原则:

B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。

C:Correct,正确的输⼊,并得到预期的结果。

D:Design,与设计⽂档相结合,来编写单元测试。

E:Error,强制错误信息输⼊(如:⾮法数据、异常流程、⾮业务允许输⼊等),并得到预期的结果。

避免以下情况:

1)构造⽅法中做的事情过多。

2)存在过多的全局变量和静态⽅法。

3)存在过多的外部依赖。

4)存在过多的条件语句。

建议:

1.涉及到的某些扩展模块可以使⽤mock模拟

2.测试⽤例不要使⽤@ignored或者被注释掉,切记切记。如何编写更好的单元测试

原⽂链接:

单元测试在最近的⼯作中使⽤⽐较⼴泛,我已经收集了⼀些关于如何编写更好的测试类的准则,并且我已经尝试着坚持这些准则多年了。记住,编写糟糕的测试是在浪费时间,并会在以后造成更⼤的问题。所以最好把这些准则记在⼼⾥。

19条建议

四、编码规范:

1.test对应每个源码创建单元测试包

2.每个npm包,都要添加descript,描述名为npm包名。

如descript("awp-lib-moment",()=>{});

3.需⽣成快照⽂件的单元测试,快照需要每次提交。

4.expect test('') 中描述的是调⽤和期望输出结果。

如test("Moment.format('yyyyMMdd HH:mm:ss','2019/07/09 17:41:01') 期望输出结果:20190709 17:41:01", () => {});

5.进⾏参数或属性校验。

校验包含正向和反向校验,即正确类型正确输出和异常类型返回异常信息等。

校验种类包含,参数个数、参数类型等。

6.测试要覆盖实现中的代码的各个分⽀

7.⼀个测试⽅法只测试⼀个⽅法,不测试私有⽅法

8.⼀个测试类只对应⼀个被测类.

9.测试⽤例的变量和⽅法都要有明确的含义

五、测试维度

编写单元测试,主要参考以下⼏个⽅⾯:来源链接:

1.接⼝功能性测试

接⼝功能的正确性,即保证接⼝能够被正常调⽤,并输出有效数据!------------------> 是否被顺利调⽤

------------------> 参数是否符合预期

2.局部数据结构测试

保证数据结构的正确性------------------> 变量是否有初始值或在某场景下是否有默认值

------------------> 变量是否溢出3.边界条件测试

------------------> 变量⽆赋值(null)

------------------> 变量是数值或字符

------------------> 主要边界:最⼤值,最⼩值,⽆穷⼤

------------------> 溢出边界:在边界外⾯取值+/-1

------------------> 临近边界:在边界值之内取值+/-1

------------------> 字符串的边界,引⽤ "变量字符"的边界

------------------> 字符串的设置,空字符串

------------------> 字符串的应⽤长度测试

------------------> 空⽩集合

------------------> ⽬标集合的类型和应⽤边界

------------------> 集合的次序

------------------> 变量是规律的,测试⽆穷⼤的极限,⽆穷⼩的极限

4.所有独⽴代码测试

保证每⼀句代码,所有分⽀都测试完成,主要包括代码覆盖率,异常处理通路测试------------------> 语句覆盖率:每个语句都执⾏到了

------------------> 判定覆盖率:每个分⽀都执⾏到了

------------------> 条件覆盖率:每个条件都返回布尔

------------------> 路径覆盖率:每个路径都覆盖到了

5.异常模块测试

后续处理模块测试:是否包闭当前异常或者对异常形成消化,是否影响结果!

六、测试⽬标说明:以下仅作为参考,实际还需要按照各⾃项⽬进⾏评估。语句覆盖率:>=70% 分⽀覆盖率:100% 函数覆盖率:100% ⾏覆盖率: >=80%

执⾏覆盖率, 业界标准通常在 80% 左右!!