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



目录
相关文章
|
3月前
|
前端开发
在Webpack配置文件中,如何配置loader以处理其他类型的文件,如CSS或图片
在Webpack配置文件中,通过设置`module.rules`来配置loader处理不同类型的文件。例如,使用`css-loader`和`style-loader`处理CSS文件,使用`file-loader`或`url-loader`处理图片等资源文件。配置示例:在`rules`数组中添加对应规则,指定`test`匹配文件类型,`use`指定使用的loader。
|
1月前
|
运维 关系型数据库 MySQL
os-copilot安装_配置_功能测试全集
我是一位中级运维工程师,我平时工作会涉及到 各类服务器的 数据库 与 java环境配置 操作。 我顺利使用了OS Copilot的 -t -f | 功能,我的疑惑是不能在自动操作过程中直接给与脚本运行权限,必须需要自己运行一下 chmod 这个既然有了最高的权限,为什么就不能直接给与运行权限呢。 我认为 -t 功能有用,能解决后台运行基础命令操作。 我认为 -f 功能有用,可以通过task文件中撰写连续任务操作。 我认为 | 对文件理解上有很直接的解读,可以在理解新程序上有很大帮助。
171 86
|
3月前
|
缓存 前端开发 JavaScript
Webpack与Babel的进阶配置与优化
通过以上的进阶配置和优化策略,可以更好地发挥`Webpack`与`Babel`的功能,提高项目的性能和开发效率。
|
3月前
|
JavaScript 前端开发 UED
如何配置 Webpack 进行代码分离?
通过以上方法,可以有效地配置Webpack进行代码分离,根据项目的具体需求和场景选择合适的方式,能够显著提高应用的性能和用户体验。在实际应用中,还可以结合其他优化技术,进一步优化Webpack的打包结果和应用的加载速度。
101 5
|
3月前
|
前端开发 JavaScript
webpack相关配置
以上只是Webpack配置的一些常见部分,实际应用中还可以根据具体的项目需求和场景进行更复杂和细致的配置,以满足不同的构建和优化要求。
82 2
|
1月前
|
人工智能 Ubuntu Linux
os-copilot使用之全面配置与使用测试
作为一名个人开发者,我主要从事云服务器架设工作。近期,我成功使用了OS Copilot的 `-t -f |` 功能,解决了执行语句、连续提问及快速理解文件的问题。我发现这些功能非常实用,特别是在使用Workbench时能快速调用AI助手。此外,建议将AI功能与xShell工具联动,进一步提升效率。文中详细记录了购买服务器、远程连接、安装配置OS Copilot以及具体命令测试的过程,展示了如何通过快捷键和命令行操作实现高效开发。
142 67
|
8天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
111 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
1月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
39 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
域名解析 弹性计算 监控
slb测试基本配置检查
slb测试基本配置检查
125 60
|
3月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
245 60

热门文章

最新文章

  • 1
    小鱼深度评测 | 通义灵码2.0,不仅可跨语言编码,自动生成单元测试,更炸裂的是集成DeepSeek模型且免费使用,太炸裂了。
  • 2
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • 3
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 4
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 7
    「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
  • 8
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 9
    AxBench:斯坦福大学推出评估语言模型控制方法的基准测试框架
  • 10
    Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描