HomeAboutLinkArchivehi灯泡

开发人员要知道的测试

test

如果你喜欢写笔记,但是笔记里面都是无聊的文字,那么就上这个网站 https://mkd.bibooo.cn/ 添加好看的 mrak down 表情吧!!!

静态代码检查&&单元测试

在测试中,有静态测试和动态测试,还有一个分类就是黑盒测试白盒测试。

静态测试

静态测试不运行程序叫静态测试。

动态测试

运行程序测试数据,它会产生数据结果叫动态测试。

黑盒和白盒它的区别就是黑盒测试我只知道输入输出,不知道里面是怎么运行的,不知道程序的流程,程序的结构,程序的组成啊,这叫黑盒。白盒我不但知道输入输出,我不但知道程序功能,我还知道程序里边怎么组织的,有多少个模块,程序执行流程,工作原理,这叫白盒。

静态代码检查是静态白盒测试 单元测试是动态白盒测试 !!!注意这都是白盒测试。

学测试专业的人基本不搞白盒测试,所以这是作为开发人员的技能。

静态代码检查

开发要知道的是 walkthroughs-代码走查 inspection-检查,这些都是术语名词啊,有些人喜欢装,就拿一两个英语单词忽悠你,这两个是静态测试常用的。

通常代码走查,不会去一行一行看,成本较高。一般借助工具 ESLint 用它来做自动的静态代码检查。

ESLint

  1. 语法检查

JS 是解释性语言,没有编译过程不会在编译的过程当中帮你来检查语法,那么语法的错误就可能在运行时才暴露。

  1. 代码风格检查

驼峰,缩进,分号这些啊。在团队中,我们需要让每个人的代码风格都一样,去掉个性化。

  1. 格式化

代码会审

git

packjson

在生产环境中,npm i --production ,它只安装项目依赖,不安装开发依赖。

ESLint

https://eslint.org/

单元测试 unit test

一个系统有很多单元搭起来的,单元是什么?

POP,OOP,FP,AOP 由于Code不一样,我们的答案是不一样的。C 的代码系统里面这个单元就是函数。 JS既是面向过程,也可以面向对象,也可以是函数式,也可以是面向切面,如果你是面向过程你的单元就是 函数,如果你是面向对象就是 class。

如果你是基于函数来做单元测试,函数名,入口参数,返回值 最好是纯函数,必须有返回值的叫纯函数这样的函数为 unit为单元的单元测试很简单。我们就给函数传参,为数据给它输入,然后看它的输出结果返回值和我们的预期是否吻合,符合预期测试通过不符合预期测试失败

面向对象,一个对象或一个类包含3个成员属性,方法,事件。我们在面向对象里面,我们的类也好,我们的成员函数我们做单元测试的时候呢是测接口还是测函数。我们的选择是测试接口,其实接口也是函数。这里面涉及一个问题(访问权限)公共和私有的。公共的方法我们称为是类的接口 只测试类或者对象的公共接口,私有函数不测。

单元测试和集成测试

单元测试每次只测一个单元。集中测试是测试的面比较大。纯函数最适合单元测试,集成测试最适合在浏览器中自动进行。 单元测试和集成测试两者的区别,注意,两者测试都需要编写,二者之间不是互相排斥的。

单元测试做法

有很多单元测试框架供我们选择 mocha,Tape,jest,Karma 。 https://jest.nodejs.cn/ 我们在写单元测试代码的时候呢,涉及到一个断言风格。断言风格里面边有两个断言风格。一个叫 BDD,一个叫 TDD。 DD就是 driven development 。BDD是 behavior Driven development就是行为驱动开发。TDD 就是 test driven development,测试驱动开发。

断言库(assertion library)是用来写断言的库。

https://www.chaijs.com/api/assert/

维基百科的 断言(程序))一文是这么解释断言的:在程序设计中,断言(assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果-当程序运行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止运行,并给出错误消息。

根据风格,断言库又区分为 TDD 风格 和 BDD 风格。Chai Assertion Library 便是其中一个著名的代表,它同时支持这两种风格。

TDD 测试系统开发

在测试的情况上,就是你的代码一行没写的情况下,先写测试代码。先写测试代码再写程序代码。

BDD 行为驱动开发

BDD是先写我们的功能代码,先写程序代码,再写测试代码。

程序员的交付就是代码,代码

单元测试三个动作

arrange,action,assert,你的单元测试代码包括三个动作。准备,测试,断言。 https://testing-library.com/docs/react-testing-library/example-intro/ https://www.albertgao.xyz/2017/05/24/how-to-test-expressjs-with-jest-and-supertest/

the end.