前端测试初窥
前端测试测什么###
Unit testing。具体到现在组件化的前端代码中就是对每个组件(中的每个函数)来进行单独的测试,这些测试包括组件的渲染结果、组件的事件处理、乃至某个函数被调用的次数等。
在看Jest官方文档的时候看到一种测试方法(它称之为snapshot testing),每次测试它会把一些React组件渲染得到的DOM tree保存下来,并和之前得到的结果做比较,如果结果没有变化则算是通过测试(这里以该组件没有什么改动为前提)。
还有一种测试和snapshot testing有一些像,叫做visual regression testing,该测试每次会把渲染好的页面截图保存为图片,再和之前保存的结果图片进行像素级别的比较。
End-to-end testing,这种测试也很好理解,即利用脚本在渲染好的页面上来模拟人为的一系列页面操作,通过操作结果来判断页面的功能是否正常运作(因为是在“实地”操作,所以找到的bug也可能是后端的)。通常,在每个步骤中也会进行页面的截图来进行visual regression testing。(对于这类测试,其实可以通过monitor页面的操作变化(手动操作)来自动生成操作的脚本,这样我们就只需要写assertion就可以啦)
Performance testing,相比于后端,前端的性能测试就要简单不少,并且已经有比较成熟的测试工具,其目标就是花尽可能短的时间加载完整个页面。为了提高前端的性能,要从多个方面入手,不仅仅是JS代码优化这一块,比如还要减少资源的请求数目、异地部署CDN、压缩资源、优先加载页面中重要的部分(准确地说这只算是提高用户体验,但提高性能目的不就是优化用户体验嘛)等。当然,现在前端的大部分方面都已经有比较成熟的优化解决方案了,比如webpack打包的JS代码已经做了minify,能让JS代码体积减少到原来的1/N,因此我们所最需关注的仍然回到了JS代码逻辑本身。