推荐几款项目中常用的前端单测工具——软件测试圈软件测试文章

单元测试(unittesting),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。——来自百度百科

前端如何做单元测试

前端代码都运行在浏览器里,对于Javascript来讲,单测通常是针对函数、模块、对象进行测试。前端单测框架如QUnit、Sinon、Mocha等,也有如vue&react初始化工程自带的如e2e、unit、jest等,单测的执行环境可以是日常使用的浏览器ie、Chrome等,也可以是无界面浏览器比如PhantomJS、HeadlessChrome。

在前端的世界里,至少需要三类工具来进行单元测试:

测试管理工具

测试管理工具是用来组织和运行整个测试的工具,它能够将测试框架、断言库、测试浏览器、测试代码和被测试代码组织起来,并运行被测试代码进行测试。我们经常使用Karma。

测试框架

测是框架是单元测试的核心,它提供了单元测试所需的各种API,你可以使用它们来对你的代码进行单元测试。我们使用Mocha。

断言库

断言库提供了用于描述你的具体测试的API,有了它们你的测试代码便能简单直接,也更为语义化,理想状态下你甚至可以让非开发人员来撰写单元测试。我们使用sinon-chai。

可选工具包括:

测试浏览器

这个比较好理解,就是测试代码所执行的浏览器环境。我们使用PhantomJS或者HeadlessChrome

测试覆盖率统计工具

我们使用和Karma配套的Karma-coverage

使用mocha+karma工具链总结

·在Node环境下测试工具链可以为:mocha+chai+babel

·模拟浏览器环境可以为:mocha+chai+babel+jsdom

·在真实浏览器环境下测试工具链可以为:karma+mocha+chai+webpack+babel

使用Jasmine工具链总结

1.Node环境下测试:Jasmine+babel

2.模拟JSDOM测试:Jasmine+JSDOM+babel

3.真实浏览器测试:Karma+Jasmine+webpack+babel

使用Jest工具链总结

·Node环境下测试:Jest+babel

·JSDOM测试:Jest+babel

·真实浏览器测试(不推荐)

·E2E测试:Jest+Puppeteer

本文主要讲解在Vue工程的单元测试如何做

区分在现有项目中安装karma和在新建项目安装karma,这里分别进行安装介绍

1.新建项目安装karma+mocha

1.1在vueinitwebpack的unittests选项中选择Yes,testrunner选择karmaandMocha,会在项目中默认安装karma,mocha,chai断言库等在内的所有依赖包,并自动生成test文件夹,以及unit单测所有文件,包括HelloWorld.spec.js测试用例、index.js文件、karma.conf.js配置文件。

1.2如果没有安装karma-cli,则先要全局安装karma-cli:npminstallkarma-cli-g

1.3安装chrome-luncher:npminstallkarma-chrome-launcher--save-dev;更改配置文件karma.conf.js配置文件,将运行浏览器改为Chrome

1.4在package.json文件中将scripts中的unit选项中的--single-run删除,以便可在karma中进行debug

1.5安装Vue.js官方的单元测试实用工具库:npminstall--save-devvue-test-utils

1.6运行:npmruntest,karma会开启chrome跑HelloWorld.spec.js测试用例代码

2.在现有项目(以personalofferpc端为例)中安装karma+mocha

由于我的项目搭建时已经安装了e2e及jest测试框架,这里需要加入karma+mocha,并将单元测试默认配置项设置为karma+mocha

2.1

如果没有安装karma-cli,则先要全局安装karma-cli:npminstallkarma-cli-g

2.2

安装mocha:npminstall--save-devmocha

安装karma:npminstallkarma--save-dev

安装chai断言库:npminstallchai

安装karma-sourcemap-loader:npminstallkarma-sourcemap-loader

安装karma-webpack:npminstallkarma-webpack

安装karma-macha:npminstallkarma-mocha

安装karma-coverage:npminstallkarma-coverage

安装sinon、karma-sinon-chai:npminstallkarma-sinon-chai;npminstallsinon

安装karma-sepc-reporter:npminstallkarma-spec-reporter

2.3

在build文件夹中添加webpack.test.conf.js配置文件

在test文件中复制mocha文件到test文件中,其中包括覆盖率文件,spec测试用例代码文件,index.js配置文件及karma.conf.js配置文件

2.5

安装chrome-luncher:npminstallkarma-chrome-launcher--save-dev;

2.6

安装Vue.js官方的单元测试实用工具库:npminstall--save-devvue-test-utils

2.7

将package.json文件中的test/unit设置为:karmastarttest/mocha/karma.conf.js--coverage

2.8

运行:npmruntest,karma会开启chrome跑测试用例代码,测试成功

以上就完成了vue项目的单测

前端单元测试在真实项目中的现状如何?

目前缺少单元测试在前端工程中的主要原因分析:

1:前端缺陷在功能测试中易于暴露(肉眼即可观察);

2:开发人员不了解单元测试方法,缺少实践经验,对单元测试能带来的好处存在怀疑,同时也增加了开发工时及工作量。

效果和质量要求并行,真实情况下业务开发量已经把程序员大部分精力淘空

缺少单元测试在实际中带来的一些常见的问题

1:在项目初期开发时,由于没有单元测试,单个组件无法即时调试,必须等待页完成的模块代码完成才能调试;

2:在调试过程中,对于一些极限值必须要求服务来Mock或者增加侵入式的调试代码,我时常听到前一天接口调通了。后面又不通了,经过分析后端修改参数未通知到前端同学诸如此类的问题,增加了大量沟通成本,

这也在一定程度上影响了开发效率;

3:在需要重构旧项目代码时,更加依赖功能测试,需要浪费较多资源部署测试环境,有时由于牵涉的业务功能点过多,甚至导致开发人员不敢对老代码进行重构。

完善前端单元测试的优势?

为了进行Mock数据,通常我们在项目中添加mock数据,看似是增加一定成本,但要求开发人员对代码进行重构解耦,这在一定程度使的代码结构更加趋于合理;

单元测试同时也是一份很好的业务文档,每项测试的描述都可以体现业务逻辑。

单元测试可以确保在prd后产出时(我做过的,看过的;交付项目中80%如此),可以先使用单元测试模拟业务场景,避免先开发的功能。

THE END
1.软件测试工资一般多少,工作好找吗女生,综合数据解释定义摘要:关于软件测试的工资水平,因地区、经验、公司规模等因素而异。软件测试工程师的工资较为稳定且可观。对于女生从事软件测试工作是否好找,取决于个人的技能水平和市场需求。综合数据显示,软件测试行业对人才的需求较大,就业前景较好。关于软件测试的综合数据解释和定义,需要具体分析和了解相关统计数据。软件测试是一个有http://bbs.qywzy.com/post/24332.html
2.如何构建通用电子产品功能测试平台AET1.1.1目前现状 纵观国内外的电子产品测试系统,普遍存在以下几点问题: 1)整个大系统的测试任务中,其统一性与整体性缺乏体系支持; 2)测试工艺、流程、标准不统一; 3)测试模块的通用性、可移植性、可扩展性、可维护性较差; 4)测试人员问的素质不一; http://m.chinaaet.com/article/49984
3.软件测试实习报告(通用16篇)xx软测信息技术有限公司是xx地区唯一专注软件测试培训的基地。新梦想软件测试培训基地--xx地区最好的唯一的专业的软件测试培训基地。目前,在整个xx地区,只有新梦想有专业的资深的软件测试老师以及权威的软件测试课程体系。新梦想的办学目标是培养专业的、高素质的软件测试人才。”学习软件测试就选新梦想”这个认知已经深https://www.unjs.com/fanwenku/444161.html
4.平潭“智能环卫”监管平台二期采购项目附件9.2投标人应在投标截止时间前按照福建省政府采购网上公开信息系统设定的操作流程将电子投标文件上传至福建省政府采购网上公开信息系统,同时将投标人的CA证书连同密封的纸质投标文件送达招标文件第一章第10条载明的地点,否则投标将被拒绝。 10、开标时间及地点:详见招标公告或更正公告(若有),若不一致,以更正公告(若有)https://zfcg.pingtan.gov.cn/upload/document/20210707/f4e7d1eca6c648b89a59cbdeb245cdc9.html
5.2022软件测试行业现状调查报告腾讯云开发者社区以测试行业为分析对象,以真实数据为依据,从软件测试从业人员所在公司的基本属性、软件测试从业人员的基本属性两个大类全方位拆解测试行业,希望帮助企业从中得到启发与收获,做出正确的判断;帮助测试人员明确在测试生涯的不同阶段都要做些什么,攀登职业“高峰”! https://cloud.tencent.com/developer/article/2307936
6.医院信息管理系统医院计算机信息管理系统通过预设的软件可以对影像信息进行分类、储存,并且可以通过人工进行远程传递和调取。虽然相对于文字信息和数字信息来说,影像信息在数量级上要大得很多,存储需要大量的硬盘空间,传输也需要一定的带宽,但随着医院计算机网络建设水平的进一步提高,这些苦难正在逐步地有效克服中。https://www.jy135.com/guanli/1970928.html
7.需求分析总结报告8篇(全文)关于需求分析的总结报告 在学习了第四章的需求获取之后做出以下总结 这部分主要强调了在优秀的软件工程中抽象和建模的关键原则。使用模型来从已有的需求中梳理出误解和遗漏的的细节并与他人沟通需求。讨论了需求的不同资源和不同类型功能需求VS质量需求VS设计约束解释如何编写易测试的需求并描如何解决冲突。讨论需求引出https://www.99xueshu.com/w/filevefc2mrh.html
8.软件测试工作总结(精选23篇)正确理解测试的目的十分重要。如果认为测试的.目的是为了说明程序中没有缺陷,那么测试人员就会向这个目标靠拢,因而下意识地设计很多不易暴露错误的测试示例,这些测试用例恰恰证明软件实现了预期功能,这样的测试是不真实的。成功的测试在于发现了迄今尚未发现的缺陷。 https://www.cnfla.com/gongzuozongjie/2976267.html
9.网络安全设计论文汇总十篇2.2国内网络安全现状 由于我国在网络安全技术方面起步比其他信息发达国家晚,发展时间较短,技术不够纯熟,面对各种网络安全问题有些应接不暇,主要是由于自主的计算机网络核心技术和软件缺乏,信息安全的意识较为浅薄,不少事企单位没有建立相应的网络安全防范机制以及网络安全管理的人才严重缺乏,无法跟上网络的飞速发展。面对https://www.xueshu.com.cn/haowen/36523.html
10.软件工程的实习报告范文(通用10篇)我们于今年的暑假去天一软件进行社会实践,所做的项目为ST(系统测试)部门的MR(Modify Request)系统,MR系统为ST部门的最常用软件,是进行软件测试的必备工具,由于原有的工具已经不能满足现在的要求,我们将利用更新的技术,基于新的需求分析,重新编写该应用软件,该软件采用流行的Web_Browser的结构,利用ASP SQL Server来实https://mip.oh100.com/a/202204/4588766.html
11.关于对北京旋极信息技术股份有限公司的年报问询函之回函采购的软件产品主要包括仿真测试检测软件、综合数据解析软件、数据转换和快速验证软件、测试数据存储解析软件、硬件协议转换模块、自定义协议解析软件、遥测加解密软件工具、遥控编解码软件工具、串口自动测试模块和测试性验证建模工具。将配置在半实物仿真测试验证系统和EDA设计分析与仿真测试验证平台中。 https://finance.eastmoney.com/a2/201905171126193249.html
12.360极速浏览器添加油猴插件木马特征库每日更新,查杀能力媲美收费级安全软件; 7.[超强安全模式]采用“沙箱”技术,真正做到百毒不侵(木马与病毒会被拦截在沙箱 中无法释放威力); 8.将网页程序的执行与真实计算机系统完全隔离,使得网页上任何木马病毒都无法感染计算机系统; 9.颠覆传统安全软件“滞后查杀”的现状,所有已知未知木马均无法穿透沙箱,https://www.360docs.net/doc/7b1228099.html
13.2024本文主要介绍了软件测试人才培养与行业发展的现状与前景。随着软件行业的蓬勃发展,软件测试人才需求显著增长,但市场上人才供给不足,且对专业技能要求较高。文章提出了加强基础课程教育、注重实践能力培养以及引入新技术和新方法等教育与培训体系完善的建议,并强调了这些措施对提升软件质量、推动技术创新和促进产业升级的重要https://max.book118.com/html/2024/0712/8107140132006110.shtm
14.软件测试工作总结及反思(精选21篇)软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 https://www.ruiwen.com/word/ruanjianceshigongzuozongjiejifs.html
15.目前国内软件测试现状与软件测试工具的选择方法国内软件测试现状近期国家对软件行业也给出了很多鼓励政策,软件及相关行业在中国得到了很大的发展,我们也看到了一大批软件企业在国际中也占据了很重要的地位。不过我们发现很多软件公司在重视代码开发的同时,却没有把代码质量跟上去,忽略了测试在国内软件测试现状近期国家对软件行业也给出了很多鼓励政策,软件及相关行业在https://download.csdn.net/download/weixin_38660359/16059871
16.软件测试之困:测试工程化实践之路本书以软件测试工程化思维为基础,立足项目,采用描述、对话和独白等方式讲述测试工作中发生的故事,内容丰富、实用性强,是一本能帮助测试人员快速成长的图书。 本书首先介绍了测试工程化的认识和测试人员的商业意识;接着介绍了测试流程设计,以及如何通过流程拉齐各成员之间的目标,达到成员之间的合作有序和软件产品的质量https://labs.epubit.com/bookDetails?id=UB7da3e1c3b3dfd
17.软件测试个人工作总结(通用14篇)总结就是对一个时期的学习、工作或其完成情况进行一次全面系统的回顾和分析的书面材料,它能够给人努力工作的动力,让我们好好写一份总结吧。你想知道总结怎么写吗?下面是小编为大家收集的软件测试个人工作总结,供大家参考借鉴,希望可以帮助到有需要的朋友。 软件测试https://www.yjbys.com/gongzuozongjie/geren/4065602.html
18.人因工程实验室驾驶安全与驾驶仿真测试研究室设计了多款适用于不同研究目的的实验系统和实验场景,包括大屏幕全尺度模拟器(图1左,中)、桌面型模拟器(图1右)、险情反应及干预训练情景(图2)、导向标识评价场景(图3)、注意力分散测评场景(图4)等。研究成果已经发表于多篇国际期刊论文中,有关系统已被国内外多家单位采用。 https://www.ie.tsinghua.edu.cn/kxyj/sys/rygcsys.htm
19.AEIF2024议程重磅揭晓!2024 AEIF技术展览规模将全面升级,聚焦大模型与AI算力、汽车电子、人工智能三大领域并打造“汽车电子展区”、“创新IC设计成果展”、“IC设计展区”,参展企业及品牌将达200+,展览观众10万人次。展品展示范围包含:新能源整车、车规级芯片及功率模组、感知传感器、智驾软件及检测认证等五大类别。 https://www.eet-china.com/mp/a346243.html