【世界快播报】单元测试和集成测试之间的差别在哪里?单元测试和集成测试之间的差别有多大?
概念
(资料图片)
单元测试
UnitTesting,简称UT。是指对软件中的最小测试单元进行检查和验证,这是最低级别的测试活动,前端开发中单元可以是一个function也可以是一个class,也可以是一个组件。
对他们的输出做断言检查,是一个白盒测试,一般由开发者进行编写,开发者可以通过编写执行UT来判断自己的逻辑是否正确。
集成测试
Integration Testing,其实集成测试就是根据业务功能需要把多个单元整合起来进行测试。引用 React 官网上的说法:“单元测试”和“集成测试”之间的差别可能会很。
如果你在测试一个表单,用例是否应该也测试表单里的按钮呢?一个按钮组件又需不需要有他自己的测试套件?重构按钮组件是否应该影响表单的测试用例?不同的团队或产品可能会得出不同的答案。
端到端测试
end-to-end,简称e2e,也被称作功能测试(Functional Testing)或者浏览器测试或者冒烟测试,是指从使用者的角度出发,对真实系统进行测试。
e2e测试本质上是一种黑盒测试,相当于模拟用户访问应用程序,主要检查界面或功能是否正确,自动化测试不完善的时候通常是由人工来完成这项测试工作。
界面测试
User Interface Testing,简称UI测试,与e2e测试存在大量重叠,通常在做e2e的时候就能够覆盖UI测试。
TDD
Test Drive Development,即测试驱动开发。
简单地说就是先根据需求写测试用例,再代码实现,接着测试,循环此过程直到产品的实现。
可以看出来,TDD 的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。
BDD
Behavior Drive Development,即行为驱动开发,BDD可以看作是对TDD的一种补充,或者说是TDD的一个分支。
在TDD中,我们并不能完全保证根据设计所编写的测试就是用户所期望的功能。BDD将这一部分简单和自然化,用自然语言来描述,让开发、测试、BA以及客户都能在这个基础上达成一致。
BDD更加依赖于需求行为和文档来驱动开发,这些文档的描述跟测试代码很相似。e2e测试更多是和BDD的开发模式进行结合。
综上所述,后文主要会针对单元测试和端到端测试常用的工具进行使用说明和对比。
前端测试工具
前端测试工具有很多,可以分为几类:
断言库
测试覆盖率工具
测试框架
断言库
测试的时候我们需要使用断言来判断代码是否到达目的,如果没有断言,我们的测试也将失去意义。
assert
assert是Node.JS内置的断言库,下面是一个简单的例子:
const assert = require("assert");assert(1 === 2);const test = "hello world";assert.strictEqual("hello world", test);
chai
这个断言库很全很强大,提供了常用的assert、should、expect断言关键字。
power-assert
如果你在使用assert的话,无需使用 require("power-assert")来引入power-assert,它的API与assert一样,而且拥有强大的提示信息,如下图所示。
安装:
npm i power-assert
(左右滑动查看完整代码)
测试覆盖率工具
Istanbul
这个软件以土耳其最大城市伊斯坦布尔命名,因为土耳其地毯世界闻名,而地毯是用来覆盖的。
安装:
npm install -g istanbul
(左右滑动查看完整代码)
运行:
istanbul cover path
(左右滑动查看完整代码)
测试框架
测试框架的作用是提供一些方便的语法来描述测试用例,比如可以对一组用例进预处理和后处理(beforeAll、beforeEach、afterAll、afterEach等),使用describe函数表示一组用例。
下面将会列举一些常见的测试框架,并做简单的分析。
Jest
Jest 是Facebook出品的一个测试框架,算是一个大而全的测试框架,内置断言、测试覆盖率工具、Mock工具,开箱即用,支持浏览器和 NodeJS,支持BDD写法(也就是expect语法)是React官方推荐使用的测试框架。
Jest既可以用来做单元测试,也可以用来做端到端测试,在做端到端测试的时候可以使用jsdom,网络请求使用本地mock数据,这样可以确保毫秒级完成单元测试,如果需要使用真实DOM,还是需要配合其它测试工具。
Mocha
Macha也是一个功能丰富的JS测试框架,支持浏览器和NodeJS,不过没有内置断言库、测试覆盖率工具和Mock工具,需要和其他三方库配合使用,比如配合chai使用 就可以支持TDD写法(也就是assert.equal语法),当然BDD写法也是支持的。
Mocha既可以用来做单元测试,也可以用来做端到端测试,做端到端测试的时候需要配合其它测试工具。
Jasmine
Jasmine是一个BDD测试框架,支持浏览器和NodeJS,内置断言库、mock工具等,经常配合Karam使用,但是随着Jest这种大而全的框架的崛起,Jasmine显得比较老派,现在热度逐年下降,使用的人也越来越少。
e2e 测试工具
Cypress
Cypress一个e2e测试框架,测试界面和文档做到极致的一个产品。
PhantomJS
PhantomJS,一个基于webkit内核的无头浏览器,没有UI界面。用js代码模拟一些web界面上的操作,用起来比较不方便,不太推荐使用。
NightmareJS
NightmareJS,一个轻量级浏览器自动化测试库。基于Electron和PhantomJS类似,但是快了大约2倍且更现代。
Nightmare还有个优点——它提供了一个Chrome插件daydream,该插件可以通过录制屏幕,自动化生成测试代码,不过最近一次更新是在2019年,也不太推荐使用。
Playwright
Playwright为现代web应用程序提供可靠的端到端测试。支持使用NodeJS、python、Java、.net四种编程语言的API,同时支持Google Chrome和 Microsoft Edge(带有Chromium)、Apple Safari(带有WebKit)和 Mozilla Firefox。
Playwright支持所有浏览器和所有平台的无头(无浏览器 UI)和有头(带浏览器 UI)模式。Headed非常适合调试,而Headless速度更快,适合CI/云执行。
Storybook
Storybook是一个开源工具,用于独立构建UI组件和页面。它简化了UI开发、测试和文档编制。
Selenium
Selenium是e2e测试鼻祖级的框架,有多种编程语言的版本,它是基于webdriver而不是webkit内核实现的,所以,Selenium的浏览器兼容性相对于其他浏览器要好很多。
Nightwatch
Nightwatch原Selenium,是一个用于web网站或应用的自动化测试框架,使用node.js和W3C WebDriver API。
他也是一个完整和集成的解决方案,使用BDD方式,用于网络应用程序和网站的端到端测试。它还可用于Node.js单元和集成测试。
Nightwatch的兼容性比较好,Firefox、Chrome、Safari、edge都可以测。
Protractor
Protractor是一个针对Angular的e2e测试框架。
测试框架运行环境
Karam
Karam官网介绍是一个可以在多个浏览器中执行js代码的简单工具。它不是一个完整的测试框架,没有断言库,只是启动了一个http服务器,然后生成测试html文件,执行测试用例的js。
严格来讲Karam其实不算是一个测试框架,而是一个运行测试框架的环境。
Puppeteer
Puppeteer是一个node库,他提供了一组用来操纵Chrome的API,通俗来说就是一个headless chrome浏览器(当然你也可以配置成有UI的,默认是没有的)。
既然是浏览器,那么我们手工可以在浏览器上做的事情Puppeteer都能胜任,另外,Puppeteer 翻译成中文是“木偶”意思,所以听名字就知道,操纵起来很方便。
配合headless-recorder,一个Chrome插件,可以对操作进行录制,录制的操作有puppeteer和playwright两个版本。
其它测试工具
AVA
AVA是Node.JS的测试工具,具有简洁的API、详细的错误输出、支持新语法以及流程隔离。
标签:
相关推荐:
精彩放送:
- []全球百事通!开发一个APP要多少钱?APP商城开发多少费用?
- []环球即时:最安全、最有效的磁盘分区软件——AcronisSelect
- []全球观热点:网站优化中常见的黑链(隐藏连接)代码有哪些?
- []LOMO相机是什么?LOMO的详情介绍
- []荣耀xSportPRO运动蓝牙耳机评测:精致藏于细节
- []配置reportservice和创建报表的基本步聚
- []dnf国服节日套大全 DNF国服所有天空套汇总
- []微速讯:【CSDN博客】项目文档结构和依赖库介绍
- []世界快讯:WEB前端开发需掌握的技术有哪些?WEB前端开发需掌握的技术
- []安徽外国语学院口碑咋样?这个学院怎么样?
- []微速讯:美菱冰箱说明书在哪?美菱说明书有哪些?
- []例的拼音和组词是什么?汉字例的拼音和组词介绍
- []天天最资讯丨ajax访问api接口内容精选 换一换访问控制策略
- []焦点消息!“黄河漂死猪”事件到底是怎么回事?这些猪都是哪来的?
- []全球快讯:【易语言】验证码短信接口对接DEMO示例
- []环球资讯:企业级发卡网源码有哪些基本要素?发卡网源码附企业发卡网源码搭建安装教程
- []热讯:2010辽宁高考作文:“舍与得”是什么意思?
- []xp系统停止服务的原因有哪些?哪个版本好?
- []ie被篡改怎么办?ie被篡改的方法有哪些?
- []全球信息:富士相机s1770怎么样?富士相机s1770全面评测
- []电信座机呼叫怎么取消转移设置?手机怎么设置?
- []世界微资讯!常见的苹果系统ios6.1完美越狱问题有哪些?常见的ios6.1完美越狱问题大全
- []热点聚焦:程双来:台风“白鹿”二次登陆 台风白鹿即将登陆
- []光电转换核心组件——TOSA、ROSA和BOSA
- []每日看点!信用卡怎提现,有以下三种方式
- []当前短讯!角蛙长什么样子?角蛙价格是多少?
- []为什么基金最近怎么跌的这么大,有以下两点原因
- []每日精选:用友nc怎么审核记账?用友NC管理手册:账簿查询
- []戴森吸尘器有哪些型号? 戴森V8吸尘器选购推荐
- []每日动态!怎么把图片文字转换成word文档?转换的方法步骤
- []世界今头条!15万左右的大众越野车有哪些?大众越野车15万左右
- []环球信息:手机上可以使用美拍软件吗?把照片做成视频的app哪个更好一点呢?
- []特斯拉车内视频曝光 清晰度堪比视频网站 车主隐私被泄露
- []世界动态:窗户上装新风系统怎么样?窗户上装新风系统的优势有哪些?
- []29.95亿!年内募集规模最大主动权益基金诞生 新基金发行显著回暖
- []张柏芝三胎生父到底是谁?是个谜吗?
- []360手机vizza值得买吗?配置怎么样?
- []每日热闻!VR是什么技术?什么是虚拟现实?
- []环球热头条丨中秋节发多少红包最适合?中秋节发多少红包比较好?
- []世界微头条丨安卓7.0时代来临 国内哪些手机能升级安卓7.0?
- []世界速讯:堆与栈有什么区别?堆与栈的区别详细总结
- []PSP2000用5.50GEN-D系统如何升级?5.50GEN-D自制系统升级教程
- []世界快讯:javascript_initialize构造函数 子类的构造函数
- []天天实时:数字解谜游戏——数独直观法解题技巧
- []当前聚焦:Java数组详解 java语言中使用数组的方法
- []天天一泉净水机怎么样?价格多少钱?
- []新浪微博怎么拒绝他人给我评论?新浪微博隐私设置
- []国泰君安:低估值+高分红 石化上游企业长期看具备较好投资价值
- []国庆股市安排
- []动态焦点:一阳吞三阴技术要点,有以下六点
- []世界聚焦:被喻为计算机界的诺贝尔奖——TurinSAC
- [](java8)遍历JSONArray拼接字符串的两种方法
- []通讯!冷藏室结冰是什么原因?冰箱冷藏室结冰的各种原因及解决办法
- []世界热头条丨Mockplus:简洁高效的原型设计工具 轻松入门
- []实时:网购笔记本好吗?网购笔记本的优点与缺点
- []世界热点评!哪款笔记本电脑性能比较好?热销笔记本推荐
- []环球今热点:广深港高铁加开列车,内地更多城市可直达香港
- []环球报道:CAP为什么没有明确考虑收敛性?分布式系统中的收敛性
- []环球新消息丨Linux ora-12514多实例 ORA-12514: 错误的解决
- []环球资讯:Win8系统如何恢复经典开始菜单?方法步骤如下
- []看点:数组开小了、运行时间过长怎么办?解决方法
- []全球微速讯:股本报酬率
- []最新快讯!密锣紧鼓地开发年度盛典 BigoLive前端营收组同比更佳
- []天天热头条丨漫步者的h500好不好?漫步者的h500详细介绍
- []全球微资讯!gps定位手机怎么用?gps定位手机系统有哪些分类?
- []windows7如何取消开机启动项?win7取消开机启动项的方法
- []焦点热门:ExcelOOP函数怎么使用?Excel中VLOOKUP函数的详细用法
- []【热闻】AMCAP程序详解:AMCeGraphBuilder
- []每日播报!Glance详解——后台运行的服务程序
- []世界短讯!抽象是什么?为什么学Java会遇到抽象?
- []【世界独家】Unlocker解锁VMwareWorkstation虚拟机
- []即时看!从高层到底层所有人的战略语言——BLD
- []每日观察!UCB1策略和公式的理解 解决探索与利用平衡问题
- []每日快讯!用比特彗星如何下载?路由器端口映射教程
- []天天日报丨组态软件是什么?组态软件在工业控制领域的应用
- []每日热闻!财面儿丨远洋集团1-2月累计协议销售额约83.6亿元 同比增长1.7%
- []全球最资讯丨消息指Uber正考虑分拆货运物流部门 或将进行IPO
- []讯息:标普:部分地区投资物业保持弹性 香港置地可平稳度过低迷期
- []德力股份:公司没有导电玻璃的生产产能
- []世界速看:上海宝山顾村华发四季河滨开启首次认购 总可售住宅9.8万平米
- []今日观点!万泰生物:公司自2019年起将戊肝疫苗的投标价格统一调整为裸价770元/支
- []全球动态:股民无眠!炒股群炸锅了:连夜学习“室温超导”!基础物理学新突破?
- []世界要闻:2022端午节股市休市几天,休市三天
- []每日热闻!中央银行三大法宝
- []焦点快报!威海到青岛自驾车多长时间_威海到青岛
- []环球热点评!余额宝风险是什么,有以下两点
- []【环球时快讯】2022年端午节股市放假吗,当然放
- []异地同行转账要不要手续费,不要
- []世界热文:怎么炒股详细步骤,有以下五步
- []降准对股市影响,有以下三点
- []当前看点!TD早报 | 国泰航空2022年净亏损扩大近两成;日本将放宽民宿业准入条件
- []【当前热闻】怎么炒港股
- []环球今日讯!金融危机对百姓的影响
- []全球快看:农行利率2020年利率
- []焦点关注:2021个人所得税起征点
- []焦点要闻:修正药业股票代码,还未上市没有股票代码
- []兴业银行信用卡进度查询方法
- []买入价和卖出价怎么判断
- []焦点日报:鼎湖门票_肇庆鼎湖山门票多少钱
- []【独家】达美乐中国重启上市?此前已通过港交所聆讯
- 每日消息!Fedora 15怎么安装?Fedora 15安装与配置一览
- 浙大硕士论文答辩经典ppt模板(免费下载)
- 全球快播:怎么防御CC攻击?分布式拒绝服务攻击的危害及防御方法
- 每日消息!44岁的郭保新第六次担任“0”号指挥员 曾因压力过大夜夜失眠
- 【世界快播报】单元测试和集成测试之间的差别在哪里?单元测试和集成测试之间的差别有多大?
- 环球速看:全球销量惨淡!苹果计划降低iPhone12mini手机产量
- 每日短讯:java学科新教程全面讲解百度地图原理与应用(下)
- 全球讯息:关于四年级五彩池课文原文的科普 你知道多少?
- 焦点短讯!java版SpringCloud之目前得前端框架都有哪些?Vue.js中文教学视频教程
- 立夏吃什么传统食物?5种立夏美食你吃过几种?
- 当前信息:平板电脑像素排行榜_7寸平板电脑排行榜情况
- 中国1元等于多少日元 人民币的意义
- 5g的龙头股有哪些
- 今日热讯:大家千万不要领失业金,主要以下4个原因
- 天天亮点!工商银行抵押贷款条件及流程
- 环球通讯!北交所打新规则,有以下四点
- 每日看点!力高地产1-2月合约销售约28.39亿元 同比下滑37.19%
- 【全球热闻】“00后”小伙连续盗窃五起,涉案金额23000元
- 东数西算概念股龙头一览表依米康,东数西算概念股一览
- 【环球报资讯】元旦节股票休市和开市是什么时间,一般休市三天
- 急涨慢跌,意思是迅速上涨缓慢下跌
- 借贷记账法的理论依据
- 闪酷卡是什么
- 践行ESG理念,聚焦多元化优势,华林证券多举措助力“她力量”绽放
- 大宏立:3月7日公司高管杨中民减持公司股份合计1.99万股
- 环球快看点丨栖霞物业拟向参股公司提供150万元借款?期限为24日
- 今日聚焦!中公教育:3月7日公司高管王振东减持公司股份合计1454万股
- 森麒麟:3月7日公司高管秦龙、林文龙、秦靖博、金胜勇增持公司股份合计129.46万股
- 视焦点讯!2022年银行基准利率是多少,各类型基准利率一览
- 每日消息!未来可能涨100倍的股票是哪个,十大牛股盘点名单
- 余额宝10万一天收益多少钱,5人民币左右
- 获利能力指标
- 建行管理费10元能不能取消,可以取消
- 简讯:景津装备:3月7日公司高管杨名杰减持公司股份合计10000股
- 【全球聚看点】新湖中宝注销此前回购的9040万股 注册资本减少至85.09亿
- 诺力股份:2月16日至2月27日公司高管张科减持公司股份合计113.99万股
- 全球关注:远洋集团前2月协议销售额约84亿元 多个精品项目将全新加推
- 全球快播:十五连板后终被停牌核查 *ST瑞德索赔案诉讼时效仅剩四个月
- 十一高速免费吗2022年,免费
- 世界新资讯:威海旅游攻略自助游_威海旅游全攻略
- 动态:分期的车可以抵押贷款吗?
- 全球热点评!bcx是什么币
- 证券公司手续费
- 报道:建行转账手续费 建行转账手续费怎么算
- 全球观热点:报告:近半数女性2年内有购房计划,八成倾向于买新房
- 厦门推出拆迁款房票补偿政策
- 北京商务局:鼓励商业品牌首店首发项目?最高给予500万元支持
- 天天热点!万城控股预计2022年度税后溢利减少约35%至50%
- 珠海2023年投资项目共198个 年内计划安排投资202.24亿元
- 今日热文:美格智能:目前6G技术尚处于早期研究阶段,距离搭载6G技术的产品落地仍需时日
- 全球热点评!男女有别吗?30+有年龄焦虑吗?她们说……
- 【天天聚看点】什么是折价率
- 天天资讯:注册制次新股概念股票龙头一览表,2023注册制次新股相关上市公司有哪些
- 今日热文:贵宾卡是什么卡,代表贵宾身份
- 每日信息:信用卡的好处
- 【全球播资讯】58同城、安居客《2023年女性置业调查报告》:近半数女性2年内有购房计划
- 财信地产职工代表监事李屹然辞职 殷杰继任
- 每日简讯:澳博控股2022年股东应占亏损77.98亿港元 同比扩大88.2%
- 软控股份:涂布机项目主要针对锂电行业,尚处在研发实验阶段,暂未批量生产
- 【全球热闻】汇景控股填补公司董事会成员空缺时限申请延长至4月30日
- 天天快消息!芒果超媒2022业绩快报:归母净利超18亿元 期待2023年继续“破浪”
- 迅捷兴:公司产品可广泛应用于汽车电子、通讯、安防、人工智能等诸多领域
- 全球视讯!自如或在港IPO最早4月递表 公司方回应“不予置评”
- 世界看热讯:中百集团:公司中百大厨房现有少量预制菜肴,目前销售占比较低,不对公司经营业绩产生重大影响
- 当前热文:总投资50亿元!亿利洁能成功签约10GW沙戈荒地区高效专用光伏组件项目
- 焦点快看:六折是百分之多少
- 今日热闻!什么是物理储能?物理储能方式包括哪些
- 天天微动态丨期货交易软件,有以下十个
- 即时看!余额宝有什么用 余额宝的作用是什么
- 天天快消息!银行同期贷款利率 银行的贷款同期利率
- 重磅!全球光伏龙头A股IPO上市获受理!
- 小鹏汽车新专利可实现光伏充电
- 天天快资讯丨交易密码指的是什么密码 支付密码
- 焦点日报:越秀服务2022年总收入24.86亿元 归母净利润同增15.7%
- 中关村收关注函:要求说明控股股东所持股份冻结对公司控制权影响
- 滚动:长阳科技:公司目前产品尚未涉及固态电池,公司将高度关注相关技术的发展趋势
- 热文:上海能源:公司为实现可持续发展,将经营积累主要用于煤炭资源获取、基本建设投资等
- 【新视野】2023年女性置业调查报告:67.7%女性因职业发展选择安居城市
- 上海九百:本公司持有的上市公司股份,请详见公司披露的定期报告及相关公告
- 中国黄金交易时间是几点
- 产品是企业发展的生命力 波司登创新世界羽绒服市场的发展逻辑
- 【全球报资讯】开板是什么意思股票
- 什么叫劣后资金,指收益不好但风险较大的资金
- 全球速读:金铲铲之战:骑马武器阵容如何搭配?
- 每日短讯:养鸽子新手养鸽子怎么养_鸽子怎么养
- 全球热议:各银行储蓄利息表,各银行存款利率一览
- buk是什么数字货币
- 【世界报资讯】厦门象屿金控5亿元公司债利率询价区间为3.50%-4.50%
- 焦点速看:金管局: 10年期15亿港元政府债券投标申请总额达43.11亿港元
- 世界看热讯:地产债涨跌不一 “H0阳城02”涨100%、“22旭辉01”跌超10%
- 天天快资讯丨3月8日南凌科技涨停分析:东数西算,云计算数据中心,信创概念热股
- 世界今头条!香港何文田St. George's Mansions四房大宅1.19亿港元沽出
- 每日速讯:"21信地03"拟于3月13日起进行回售并将会进行转售
- 天天微头条丨3月8日三晖电气涨停分析:仪器仪表概念热股
- 3月8日金信诺涨停分析:6G,卫星互联网,毫米波通信概念热股
- 热议:3月8日新城市涨停分析:智慧停车,新型城镇化,深圳本地股概念热股
- 【环球新要闻】it包括哪些服装品牌?i.t经营的服装品牌介绍?
- 热点评!红糖和红砂糖有什么不同?红糖和红砂糖的区别是什么?
- 每日看点!玻璃护栏玻璃镶嵌怎么操作?玻璃护栏玻璃镶嵌方法是什么?
- 今头条!小鳄龟和巴西龟能一起养吗?为什么?
- 股票红色和绿色代表什么
- 现在银行定期存款利率是多少2022,各行存款利率一览表
- 焦点滚动:我国三大棉花产地在哪里?我国三大棉花产地资料介绍?
- 每日精选:千媚是哪部电视剧中的人物?讲述了什么故事?
- 大学为什么说成是象牙塔?象牙塔指的是什么?
- 快看:隋唐十八好汉都有谁?隋唐十八好汉排行榜一览?
- 环球微资讯!欧洲旅游趋势报告:美国客源持续引领复苏,中国旅客需求增长可期
- 【天天速看料】gdp排名世界2021,中国排名第二
- 【环球热闻】浏览器ie是什么意思?IE全称是指什么?
- 信息:7号房的礼物剧情介绍?7号房的礼物结局是什么?