浅谈前端自动化测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要求: 1.对程序模块的所有独立的执行路径至少测试一次;
白盒测试
2.对所有的逻辑判定,取 “ 真 ” 与取 “ 假 ” 的两种情况都至少测试一次;
3.在循环的边界和运行界限内执行循环体;
4.测试内部数据结构的有效性等。
具体包含的逻辑覆盖有: 语句覆盖–判定覆盖–条件覆盖– 判定/条件覆盖 –条件组合覆盖 –路径覆盖。
JavaScript单元测试框架——JsUnit
要求: 1)测试集中不能包含任何测试函数;
2)测试集必须包含一个返回JsUnitTestSuite对象的suite()函数;
3)向测试集中增加测试页或子测试集,可以使用方法: addTestPage(testPage) 和addTestSuite(testSuite);
• 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系 统的定义不符合或与之矛盾的地方。
验收测试
• 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的 验收测试。
• 验收测试是以用户为主的测试。软件开发人员和QA(质量保证) 人员也应参加。
• 由用户参加设计测试用例,使用生产中的实际数据进行测试。
(2)解压后,可以使用testRunner.html来运行jsunit/tests目录中找到 的任何测试页。
JavaScript单元测试框架——JsUnit
二. 如何编写测试 (1)函数要求
1)测试函数不能有任何参数
2)函数名称必须有test前缀
3)测试函数包含在一个测试页中
JavaScript单元测试框架——JsUnit
• setUp()会在每个测试之前调用 • tearDown()会在每个测试之后调用
四. 测试集
JavaScript单元测试框架——JsUnit
测试集把不同的测试页分组组织,这样只需运行一个测试集就能 一次运行类似的一组测试。
测试集其实就是一些特殊的测试页,其中包含的测试页或其他测 试集(相应地就有了一个主测试集)会按顺序运行。
测试的详细分类
单元测试
• 单元测试(模块测试)是开发者编写的一小段代码,用于检验被测 代码的一个很小的、很明确的功能是否正确。
• 通常而言,一个单元测试是用于判断某个特定条件(或者场景)下 某个特定函数的行为。
集成测试
• 集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所 有模块按照设计要求(如根据结构图)组装成为子系统或系统,进 行集成测试。
白盒测试
• 白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的 测试。
• 白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白 盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运 作的。
• 在使用这一方案时,测试者必须检查程序的内部结构,从检查程序 的逻辑着手,得出测试数据。
JsUnit支持3个跟踪级别:
JavaScript单元测试框架——JsUnit
warn(警告)< info(信息)< debug(调试)
即如果运行测试时选择debug,就会看到warn()、inform()或debug()函数发出的所有消息 。
如果选择info则会显示由warn()和inform()发出的消息。
• 动态测试方法是指通过运行被测程序,检查运行结果与预期结果的 差异,并分析运行效率、正确性和健壮性等性能。
• 动态测试方法由三部分组成:构造测试用例、执行程序、分析程序 的输出结果。
从软件开发的过程按阶段划分有:
• 单元测试 • 集成测试 • 确认测试 • 系统测试 • 验收测试 • 回归测试 • Alpha测试 • Beta测试
• 灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同 时也关注程序内部的情况。
• 灰盒测试不像白盒那样详细、完整,但又比黑盒测试更关注程序的 内部逻辑,常常是通过一些表征性的现象、事件、标志来判断内部 的运行状态。
灰盒测试与黑盒测试、白盒测试的区别
• 如果某软件包含多个模块,当你使用黑盒测试时,你只要关心整个 软件系统的边界,无需关心软件系统内部各个模块之间如何协作。 而如果使用灰盒测试,你就需要关心模块与模块之间的交互。
JavaScript单元测试框架——JsUnit
• setUpPage()函数只对每个测试页调用一次(在页面加载后),即在所有测 试函数调用之前调用。
• 一定要保证setUpPage()函数完成时把setUpPageStatus变量设置为 complete,告诉JsUnit可以继续执行测试页上的测试了。
选择warn,则只会显示由warn()函数发出的消息。
默认值为no tracing(不跟踪)
• 测试的基本概念 • JavaScript单元测试框架——JsUnit • 断言框架——chai • 测试框架——Mocha • React 测试
什么是测试?
• 软件测试是使用人工操作或者软件自动运行的方式来检验它是否满 足规定的需求或弄清预期结果与实际结果之间的差别的过程。
• 测试是为了发现程序中的错误而执行程序的过程。
测试的详细分类
从是否关心软件内部结构和具体实现的角度划分(按测试分类):
• A.白盒测试 • B.黑盒测试 • C.灰盒测试
(2)注意: 1)测试页中可以包含多个其他函数或javeScript,但是如果把测试函数放
在单独的JavaScript文件中,就需要使用exposeTestFunctionNames()方法, 使JsUnit找到测试函数。
2)一般地,JsUnit会自动发现测试函数,如果不能如你所愿地发现测试函 数,使用exposeTestFunctionNames()方法就能解决这个问题。
六种白盒测试方法案例wk.baidu.com析
黑盒测试
• 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正 常使用。
• 在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序 内部结构和内部特性的情况下,在程序接口进行测试,它只检查程 序功能是否按照需求规格说明书的规定正常使用,程序是否能适当 地接收输入数据而产生正确的输出信息。
五. 跟踪与日志
JavaScript单元测试框架——JsUnit
JsUnit支持跟踪!使用以下3个函数完成,任何测试都可以调用(注意 ,在每个函数中,value参数是可选的): • warn(message, [value]) • inform(message, [value]) • debug(message, [value])
4)addTestPage(testPage)向测试集中增加单个的测试页,参数为测试页文 件相对于测试运行工具(testRunner.html)的相对路径名;
5)addTestSuite(testSuite) 向测试集中增加另一个测试集,参数为在suite 函数所在的同一个页面中声明的JsUnitTestSuite;
• 测试的基本概念 • JavaScript单元测试框架——JsUnit • 断言框架——chai • 测试框架——Mocha • React 测试
JavaScript单元测试框架——JsUnit
• JsUnit官网:http://www.jsunit.net/ • JsUnit教程
一. 环境配置 (1)从官网上下载JsUnit zip文件,其大部分“核心”都在jsunit/app 目录中, jsUnitCore.js 、jsUnitTracer.js 、jsUnitTestManager.js等
浅谈测试
• 测试的基本概念 • JavaScript单元测试框架——JsUnit • 断言框架——chai • 测试框架——Mocha • React 测试
• 测试的基本概念 • JavaScript单元测试框架——JsUnit • 断言框架——chai • 测试框架——Mocha • React 测试
• 但是,在灰盒测试中,你还是无需关心模块内部的实现细节。对于 软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。而 白盒测试则不同,还需要再深入地了解内部模块的实现细节。
从是否执行程序的角度:
• A.静态测试 • B.动态测试。
测试的详细分类
静态测试与动态测试
• 静态测试方法是指不运行被测程序本身,仅通过分析或检查源程序 的语法、结构、过程、接口等来检查程序的正确性。
• 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移 植性、兼容性、可维护性、错误的恢复功能等进行确认。
回归测试
• 回归测试指在软件维护阶段,为了检测代码修改而引入的错误所进 行的测试活动。
• 如何根据代码的修改情况对已有测试用例集进行有效的复用是回归 测试研究的重要方向,此外,回归测试的研究方向还涉及自动化工 具,面向对象回归测试,测试用例优先级,回归测试用例补充生成 等。
JavaScript单元测试框架——JsUnit
三. 如何测试 打开JsUnit包中的 testRunner.html ,输入你要测试的文件地址,
点击Run即可。
测试需要注意: • JsUnit不会为每次测试运行重新加载测试页,所以变量状态会在多
次测试之间保留。
• 测试会按测试页中声明的顺序执行,先从最上面的测试开始。
• 它最简单的形式是:把两个已经测试过的单元组合成一个组件,测 试它们之间的接口。
确认测试
• 确认测试又称有效性测试。任务是验证软件的功能和性能及其它特 性是否与用户的要求一致。
• 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。 它包含的信息就是软件确认测试的基础。
系统测试
• 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的 一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其 它系统元素结合在一起,在实际运行环境下,对计算机系统进行一 系列的组装测试和确认测试。
Alpha测试与Beta测试
• Alpha测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用 户在模拟实际操作环境下进行的测试。Alpha测试的目的是评价软件产品的 FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产 品的界面和特色。
• Beta测试由软件的最终用户们在一个或多个客房场所进行。与Alpha测试不 同,开发者通常不在Beta测试的现场,因Beta测试是软件在开发者不能控 制的环境中的“真实”应用。用户Beta测试过程中遇到的一切问题(真实 在或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期 间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客 户发布最终的软件产品。
• 黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软 件界面和软件功能进行测试。
黑盒测试
• 具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、 错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图 法、场景法等。
八种黑盒测试案例分析
灰盒测试
• 灰盒测试,是介于白盒测试与黑盒测试之间的一种测试。
(3)断言方法 断言方法是任何单元测试的基本模块,它们是一些简单的布尔表达式,
可以指示一个给定语句为true还是false。断言失败时,就会产生一个错误。
JavaScript单元测试框架——JsUnit
下面是JsUnit 提供的断言方法(assert method) • assert([comment], booleanValue) • assertTrue([comment], booleanValue) • assertFalse([comment], booleanValue) • assertEquals([comment], value1, value2) • assertNotEquals([comment], value1, value2) • assertNull([comment], value) • assertNotNull([comment], value) • assertUndefined([comment], value) • assertNotUndefined([comment], value) • assertNaN([comment], value) • assertNotNaN([comment], value) • fail(comment) • 解释说明