webpack配置篇(三十三):冒烟测试介绍和实际运用

简介: webpack配置篇(三十三):冒烟测试介绍和实际运用

说明

玩转webpack学习笔记



冒烟测试 (smoke testing)

冒烟测试是指对提交测试的软件在进行详细深入的测试之前而进行的预测试,这种预测试的主要目的是暴露导致软件需重新发布的基本功能失效等严重问题。


冒烟测试执行


构建是否成功


每次构建完成 build 目录是否有内容输出

  • 是否有 JS、CSS 等静态资源文件
  • 是否有 HTML 文件


判断构建是否成功

在示例项目里面运行构建,看看是否有报错


20210422180651272.png


判断基本功能是否正常


编写 mocha 测试用例

  • 是否有 JS、CSS 等静态资源文件
  • 是否有 HTML 文件


20210422180839117.png



冒烟测试实战


1、在 test 文件夹里面添加冒烟测试的文件夹 smoke,在 smoke 文件夹里面添加模板项目 template,里面的文件就拷贝 my-project 的主要文件即可,如下所示


20210511204129813.png


20210511203959731.png



2、完成这一步之后,我们需要用到 rimraf 这个库去删除 dist 这个文件夹,先安装依赖

npm i rimraf -D

20210511204645162.png


3、最后我们开始编写测试脚本 index.js

const path = require('path');
const webpack = require('webpack');
const rimraf = require('rimraf');
// 进入到 template 项目里
process.chdir(path.join(__dirname, 'template'));
// 构建之前需要删掉 dist 目录
rimraf('./dist', () => {
    // 找到打包的配置
    const prodConfig = require('../../lib/webpack.prod.js');
    // 通过 webpack 运行构建
    webpack(prodConfig, (err, stats) => {
        // 错误的情况
        if (err) {
            console.error(err);
            process.exit(2);
        }
        // 成功打印
        console.log(stats.toString({
            colors: true,
            modules: false, // 不显示
            children: false
        }));
    });
});



4、运行脚本

node test/smoke/index.js


如果报下面的错:

20210511211416510.png


需要将 __dirname 改成 process.cwd()


   __dirname会指向lib,process.cwd()指向template


参考资料:NodeJs中process.cwd()与__dirname的区别


   process.cwd() 是当前执行node命令时候的文件夹地址 ——工作目录,保证了文件在不同的目录下执行时,路径始终不变


   __dirname 是被执行的js 文件的地址 ——文件所在目录


修改如图:记得 base 里的都要替换掉

20210511211538151.png


再次运行就会发现构建成功了

20210511212312987.png


单元测试用例

需要编写两个文件

  • css-js-test.js:用来检测 JS、CSS 等静态资源文件
  • html-test.js:用来检测 HTML 文件


1、在开始之前,我们需要安装 mocha,以及glob-all

npm i mocha -D
npm i glob-all -D



20210511212912219.png


20210511213235476.png


关于 mocha 可以看一下我转载阮一峰大佬的文章:测试框架 Mocha 实例教程

2、编写测试脚本

html-test.js

const glob = require('glob-all');
describe('Checking generated html files', () => {
    it('should generate html files', (done) => {
      // 同步判断是否生成文件
        const files = glob.sync([
            './dist/index.html',
            './dist/search.html'
        ]);
        if (files.length > 0) {
            done();
        } else {
            throw new Error('no html files generated');
        }
    });
});


css-js-test.js

const glob = require('glob-all');
describe('Checking generated css js files', () => {
    it('should generate css js files', (done) => {
        const files = glob.sync([
            './dist/index_*.js',
            './dist/index_*.css',
            './dist/search_*.js',
            './dist/search_*.css',
        ]);
        if (files.length > 0) {
            done();
        } else {
            throw new Error('no css js files generated');
        }
    });
});


3、在index里面添加测试用例

const path = require('path');
const webpack = require('webpack');
const rimraf = require('rimraf');
const Mocha = require('mocha');
// 设置超时时间
const mocha = new Mocha({
    timeout: '10000ms'
});
// 进入到 template 项目里
process.chdir(path.join(__dirname, 'template'));
// 构建之前需要删掉 dist 目录
rimraf('./dist', () => {
    // 找到打包的配置
    const prodConfig = require('../../lib/webpack.prod.js');
    // 通过 webpack 运行构建
    webpack(prodConfig, (err, stats) => {
        // 错误的情况
        if (err) {
            console.error(err);
            process.exit(2);
        }
        // 成功打印
        console.log(stats.toString({
            colors: true,
            modules: false, // 不显示
            children: false
        }));
        // 开始执行测试用例
        console.log('Webpack build success, begin run test.');
        // 添加测试用例
        mocha.addFile(path.join(__dirname, 'html-test.js'));
        mocha.addFile(path.join(__dirname, 'css-js-test.js'));
        // 跑用例
        mocha.run();
    });
});


4、执行脚本

node test/smoke/index.js


发现用例可以正常跑出来

20210511213659520.png



目录
相关文章
|
19小时前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之holo源表有6亿数据,binlogStartupMode配置为initial,无法插入数据到结果表,少量数据测试可以,该怎么办
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4天前
|
缓存 前端开发 JavaScript
Webpack作为模块打包器,为前端项目提供了高度灵活和可配置的构建流程
【6月更文挑战第12天】本文探讨了优化TypeScript与Webpack构建性能的策略。理解Webpack的解析、构建和生成阶段是关键。优化包括:调整tsconfig.json(如关闭不必要的类型检查)和webpack.config.js选项,启用Webpack缓存,实现增量构建,代码拆分和懒加载。这些方法能提升构建速度,提高开发效率。
25 3
|
12天前
|
存储 网络安全 Android开发
接口测试:抓包工具证书配置
Charles 抓包工具配置指南:包括Charles的基础设置,证书安装(Mac和Windows),SSL代理设置,移动端(同一WIFI环境,启用透明HTTP代理)和模拟器的代理配置,以及iOS系统的代理与证书安装步骤。注意Android 6+及iPhone 10+的特殊信任设置。配置完成后,通过Charles进行网络请求监控。
13 0
|
1月前
|
DataWorks NoSQL 关系型数据库
DataWorks操作报错合集之在使用 DataWorks 进行 MongoDB 同步时遇到了连通性测试失败,实例配置和 MongoDB 白名单配置均正确,且同 VPC 下 MySQL 可以成功连接并同步,但 MongoDB 却无法完成同样的操作如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
1月前
|
前端开发
【专栏】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译
【4月更文挑战第29天】`webpack` 的 `DefinePlugin` 插件用于在编译时动态定义全局变量,实现环境变量差异化、配置参数动态化和条件编译。通过配置键值对,如 `ENV: JSON.stringify(process.env.NODE_ENV)`,可以在代码中根据环境执行相应逻辑。实际应用包括动态加载资源、动态配置接口地址和条件编译优化代码。注意变量定义的合法性和避免覆盖,解决变量未定义或值错误的问题,以提升开发效率和项目质量。
|
1月前
|
缓存 JavaScript 前端开发
webpack学习笔记--基本配置
webpack学习笔记--基本配置
|
1月前
|
JavaScript API
【vue】分环境构建(开发/测试/生产)配置
【vue】分环境构建(开发/测试/生产)配置
23 1
|
1月前
|
JavaScript 前端开发
构建工具:配置Webpack打包Vue项目
【4月更文挑战第24天】本文介绍了如何配置Webpack来打包Vue项目。首先,Webpack作为模块打包器处理依赖并打包成可执行文件。接着,通过安装Node.js和npm,创建Vue项目,进入项目目录并配置Webpack的入口、输出、加载器和插件。最后,运行构建命令完成打包。理解Webpack基础并按需配置,能优化前端项目构建和开发体验。
|
1月前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
73 1
|
1月前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(上)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
175 0