作者:[英]MattWynne/[挪]AslakHellesy出版社:人民邮电出版社原作名:TheCucumberBook:Behaviour-DrivenDevelopmentforTestersandDevelopers译者:许晓斌/王江平这是一本半技术书籍,虽然是测试使用,但阅读它实在也需要一定的代码基础,所以可见,测试的技术含量越来越高了:D由于本人使用Java,所以忽略了12章以后的内容,由于它所使用到的那些框架都是基于Ruby。
本书分为3部分:1.基础2.进阶3.应用在第一部分,基础篇中,介绍了Gherkin语法,Cucumber的产生背景与适用范围,以及常见问题与解答。
Cucumber是一种系统行为的描述文件,它是活文档,应该时刻描述当前系统的正确行为,并且能够自动测试。
这一特性事实上也要求在写Cu..ber文件时,务必做到用户精准,不要重复场景,用书上的话来讲,就是同一句话,对且只对应系统中的唯一的一个行为。
Cu..ber主要用于在团队中进行沟通,语言必须能通用,要通用就要求隐藏技术细节,以自然语言去描述系统的行为,最经典的场景如:Given...When...Then...给定一定场景,当做什么操作时,会产生什么样的结果。
表格的使用,Backgroud关键字都是为了让特性文件能更简洁,也更易懂和富有表现力。
第二部分进阶篇中,介绍了一些高级的功能,比如:钩子和标签钩子是指@Before@After这种加上实现方法之前,在测试开始时和结束后执行一些特定的操作。
Cu...ber的步骤是全局的,同理,@Be..这类钩子也是全局的,Cu...ber的全局是大有深意的,因为它认为,特性中的所有有用步骤,只能对应一种系统的行为。
若需要让其支持单个场景,则需要对在钩子后面加上标签的方式。
标签同钩子形式相同,可以在场景和特性关键词上加标签。
对于特性(Feature)的标签,会加在每个场景上。
Cu...ber可以对一组标签进行测试。
Cu...ber测试中(可以推而广之到任何测试中),凡是有数据库参与,需要在测试之前保证数据库是干净的,并且当前测试不会遗留下数据影响到下一个测试。
可以使用事务和Truncate的方式来保证这点,实际上,只要测试环节所需要的数据都由Given中提供,则不会有问题。
第三部分讲应用,基本上都是基于Ruby的一些库,但11章的命令行使用方式还是很有意义的,Cu...ber本身就是一个命令行工具,通过命令行,可以对特性文件进行一些过滤,对输出格式进行定制,以及集成到持续集成中。
命令行命令可以使用帮助:--help一些重要的命令:--tags过滤标签--lines指定行执行xxx.feature:45指定行的另一种形式--format格式化输出如果真能把Cucumber用起来,用严肃的态度对待每一个步骤,以测试驱动开发,做出来的项目质量应该能大上一个台阶的,是个很好的工具。
2023/11/3 8:45:35 6.7MB 软件测试
1
说明:原生的Genymotion模拟器只支持x86架构,很多使用了.so文件的应用不支持x86架构,因此无法运行。
如果想要运行,安装次ARM转换包即可。
使用步骤:1.将下载的Genymotion-ARM-Translation.zip拖到Genymotion模拟器界面,进行安装。
2.安装好后,重启模拟器即可。
使用教程:http://www.devio.org/tags/#教程
2023/10/15 12:30:04 13.31MB Genymotion ARM
1
glib-2.58.0-win64-vs2017-v141-sdk10.0.17134.12csdn-tags:glib-2.58.0x64vs2017v141sdk17134glib-2.58.0及其依赖包:bzip2-1.0.6-win64-vc141.zipglib-2.58.0-win64-vc141.ziplibiconv-1.15-win64-vc141.ziplibintl-0.19.8.1-win64-vc141.zippcre-8.42-win64-vc141.zipzlib1-1.2.11-win64-vc141.zip其中:glib依赖libintlpcrezlibintl依赖libiconvpcre依赖bzip2zlibglib的编译方法:1,准备工具:msvc2017,python3,python需要安装meson和ninja,直接pipinstall即可。
2,准备glib:glib需要dirent的支持,否则在编译时会提示无法解析外部符号的错误。
解决方法为:将根目录\build\win32\dirent目录下的二个C文件和一个H文件拷贝到根目录\glib目录下。
3,修改根目录\glib目录下的meson.build文件,字符全是英文半角:glib_sub_headers=files处添加:glib_sub_headers=files('dirent.h',glib_sources=files处添加:glib_sources=files('dirent.c','wdirent.c',打开vs2017的:适用于VS2017的X64本机工具命令提示:或者call"C:\ProgramFiles(x86)\MicrosoftVisualStudio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat"amd64假设python安装在D:\platform\python3则,Scripts目录一定要添加,否则meson.py会找不到:setPYTHONPATH=D:\platform\python3setPATH=%PATH%;%PYTHONPATH%;%PYTHONPATH%\Scripts\然后,创建编译目录,meson用一个新的目录编译源码:mkdirglib-2.58.0-win64-vc141cdglib-2.58.0-win64-vc141meson.py..\glib-2.58.0--prefix=D:\platform\glib--buildtype=minsizeninjaninjainstall就可以完美编译。
欢迎朋友们下载使用。
2023/7/21 15:49:14 9.76MB glib-2.58.0 vs2017v141 sdk17134
1
sqlrowssqlrows是一个静态代码分析器,它通过报告sql.Rows使用错误的诊断信息来帮助发现错误。
安装您可以通过goget命令获取sqlrows。
$goget-ugithub.com/gostaticanalysis/sqlrows快速开始当Go为1.12或更高版本时,sqlrows使用govet运行,如下所示。
$govet-vettool=$(whichsqlrows)github.com/you/sample_api/...当Go低于1.12时,只需使用包名称(导入路径)运行sqlrows命令。
但是它不能接受--tags某些选项。
$sqlrowsgithub.com/you/sample_api/...分析仪使用*sql.Rows时,sqlrows检查一个常见错误。
首先,必须在defer函数中调用rows.Close()。
如果您意外无法扫描记录并忘记关闭*sql.Rows则将不会重用连接。
rows,err:=db.QueryContext(ctx,"SELECT*
2023/6/15 21:34:57 11KB mysql go golang sql
1
[凶猛推选,文档未多少,很快就能够看完,看完了,就会使用play了]目录MVC使用法度圭表标准模子 -7-app/controllers -8-app/models -8-app/views -8-恳求人命周期 -8-尺度使用法度圭表标准方案layout -9-app目录 -9-public目录 -10-conf目录 -10-lib目录 -11-开拓人命周期 -11-毗邻到java调试器 -12-类增强Enhancement -13-02.HTTP路由 -13-对于REST -14-routes文件语法 -14-HTTP方式 -15-URI范示Pattern -15-Java挪用定义 -17-把404当成action来用 -17-指派动态参数 -17-变量以及剧本 -18-路由优先级 -18-效率器动态资源 -18-staticDir:mapping -18-staticFile:mapping -19-URL编码 -19-反转路由:用于天生某些URL -19-配置内容作风(CSS) -20-HTTP内容商议negotiation -21-从httpheaders末了配置内容尺度 -21-定制格式 -22-03.抑制器 -23-抑制器概览 -23-患上到http参数 -24-使用paramsmap -25-还能够从action方式签名实现转换 -25-低级HTTPJava绑定 -26-约莫尺度 -26-Date尺度 -26-Calendar日历 -27-File -27-反对于尺度的数组或者群集 -28-POJO货物绑定 -29-JPA货物绑定 -30-定制绑定 -30-@play.data.binding.As -30-@play.data.binding.NoBinding -31-play.data.binding.TypeBinder -31-@play.data.binding.Global -32-下场尺度 -32-返回一些文本尺度的内容 -33-返回一个JSON字符串 -33-返回一个XML字符串 -34-返回二进制内容 -34-作为附件下载文件 -34-实施一个模板 -35-跳转到其余URL -36-Action链 -36-定制web编码 -37-拦阻器 -38-@Before -38-@After -39-@Catch -40-@Finally -41-抑制器络续 -42-使用@With评释削减更多的拦阻器 -42-BecauseJavadoesnotallowmultipleinheritance,itcanbeverylimitingtorelyontheControllerhierarchytoapplyinterceptors.Butyoucandefinesomeinterceptorsinatotallydifferentclass,andlinkthemwithanycontrollerusingthe@Withannotation.由于java不答应多络续,经由抑制器络续特色来使用拦阻器就受到极大的限度。
然则咱们能够在一个残缺不合的类里定义一些拦阻器,而后在任何抑制器里使用@With评释来链接他们。
-42-Session以及Flash传染域 -42-04.模板引擎 -43-模板语法 -43-Expressions:${…} -44-Templatedecorators:#{extends/}and#{doLayout/} -44-Tags:#{tagName/} -45-Actions:@{…}or@@{…} -46-Messages:&{…} -46-Co妹妹ent:*{…}* -46-Scripts:%{…}% -46-Templateinheritance络续 -47-定制模板标签 -48-检索tag参数 -48-挪用标签体 -48-格式化特定标签 -49-定制java标签 -49-标签命名空间 -50-在模板里的Java货物扩展 -51-建树定制扩展 -
2023/5/7 14:37:41 2.57MB play框架 play framework
1
软件介绍罕用SQL语句大全语句成果  --数据操作  SELECT--从数据库表中检索数据行以及列  INSERT--向数据库表削减新数据行  DELETE--从数据库表中删除了数据行  UPDATE--更新数据库表中的数据  --数据定义  CREATETABLE--建树一个数据库表  DROPTABLE--从数据库中删除了表  ALTERTABLE--批改数据库表结构  CREATEVIEW--建树一个视图  DROPVIEW--从数据库中删除了视图  CREATEINDEX--为数据库表建树一个索引  DROPINDEX--从数据库中删除了索引  CREATEPROCEDURE--建树一个存储进程  DROPPROCEDURE--从数据库中删除了存储进程  CREATETRIGGER--建树一个触发器  DROPTRIGGER--从数据库中删除了触发器  CREATESCHEMA--向数据库削减一个新方式  DROPSCHEMA--从数据库中删除了一个方式  CREATEDOMAIN--建树一个数据值域  ALTERDOMAIN--窜改域定义  DROPDOMAIN--从数据库中删除了一个域Tags:罕用SQL语句大全SQL语句大全SQL
2023/3/23 2:17:54 15KB SQL语句
1
Discuz翻译多种言语插件支持30种言语。
===TranslateThisBlogTranslator===Contributors:TranslationServicesU.S.A.Tags:translation,translator,babelfish,free,website,blog,translate,translatethis,googletranslate,promt,freetranslations,freetranslation
2022/9/7 10:22:26 186KB Discuz插件
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡