ci

集成 Jenkins 和 TestNG 实现自助式自动化测试平台

为君一笑 提交于 2019-11-30 03:52:41
背景介绍 在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求、缩短的开发周期、频繁的部署上线、复杂的产品架构和团队组织,如何继续保证软件的质量是一个不能回避的课题。 许多企业级规模的项目常常按照功能模块将庞大的团队分为多个独立的 Scrum 团队。在这种情况下,每个 Scrum 团队各自负责其所属功能模块的开发和测试。在 Scrum 团队中各种角色在不同的时间点有针对性不同的测试需求。其次,Build 部署以及测试频率大幅增加。测试类型和阶段也更加细化。 而现有的自动化测试,常常由独立的自动化测试团队来执行和维护。其他的 Scrum 团队成员除非十分了解自动化测试包的细节,否则无法按照自身多类型的测试需求来执行自动化脚本。并且有些项目自动化测试包涵盖了成百上千的测试用例,仅仅因为需要验证某个模块或某几个功能点是否成功而执行整个测试包不仅费时且没有必要。 本文针对以上涉及的问题,提出以下的解决方案:利用 Jenkins 和 TestNG 搭建“自助式”自动化测试平台,充分利用了 Jenkins 成熟的平台及其插件, 以及 TestNG 对选择测试用例的内在支持。 该平台具有以下优点: 基于成熟的测试工具。Jenkins 是目前业内最流行的快速持续集成工具之一, 其稳定的性能和丰富的扩展性,

MYSQL中的COLLATE是什么?

旧巷老猫 提交于 2019-11-30 02:59:42
文章目录 [ 隐藏 ] COLLATE是用来做什么的? 各种COLLATE的区别 COLLATE设置级别及其优先级 在 mysql 中执行show create table 指令,可以看到一张表的建表语句,example如下: CREATE TABLE `table1` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1', `field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci; 大部分字段我们都能看懂,但是今天要讨论的是COLLATE关键字。这个值后面对应的utf8_unicode_ci是什么意思呢?面试的时候用这个题目考一考DBA,应该可以难倒一大部分人。 COLLATE是用来做什么的? 使用 phpmyadmin 的开发可能会非常眼熟,因为其中的中文表头已经给出了答案: 所谓utf8_unicode_ci,其实是用来排序的规则。对于

深信服:笔试题(20190918)

血红的双手。 提交于 2019-11-30 02:12:38
打怪升级 先按照怪物等级排序,提取出相应的索引。那么问题就化简为求索引序列中从起始点依次途径各个点最终到达索引序列的末端所经过的边。代码逻辑有点问题,时间有限,提交通过率为50%。 import sys from collections import deque def beat_monster ( seq ) : if not seq : return 0 value , index = [ ] , [ ] for si in range ( len ( seq ) ) : for sj in range ( len ( seq [ 0 ] ) ) : if seq [ si ] [ sj ] not in '0-' : value . append ( seq [ si ] [ sj ] ) index . append ( ( si , sj ) ) change = [ value . index ( vu ) for vu in ( sorted ( value ) ) ] target = [ index [ ci ] for ci in change ] res = 0 pi , pj = 0 , 0 for tu in target : flag = find ( seq , pi , pj , tu [ 0 ] , tu [ 1 ] ) # print((pi,

详解CI、CD相关概念

杀马特。学长 韩版系。学妹 提交于 2019-11-30 01:54:03
CI:持续集成(CONTINUOUS INTEGRATION) 基本概念 CI的全称是Continuous Integration,表示持续集成。 在CI环境中,开发人员将会频繁地向主干提交代码。这些新提交的代码在最终合并到主干前,需要经过编译和自动化测试流进行验证。 持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,对可能出现的一些问题进行预警。 需要具备的条件 团队需要为每个新功能、代码改进、或者问题修复创建自动化测试用例。 你需要一个持续集成服务器,它可以监控代码提交情况,对每个新的提交进行自动化测试。 研发团队需要尽可能快的提交代码,至少每天一次提交。 带来的效益 通过自动化测试可以提早拿到回归测试的结果,避免将一些问题提交到交付生产中。 发布编译将会更加容易,因为合并之初已经将所有问题都规避了。 减少工作问题切换,研发可以很快获得构建失败的消息,在开始下一个任务之前就可以很快解决。 测试成本大幅降低,你的CI服务器可以在几秒钟之内运行上百条测试。 你的QA团队花费在测试上面的时间会大幅缩短,将会更加侧重于质量文化的提升上面。 CD:持续部署(CONTINUOUS DEPLOYMENT) 基本概念 CD的全称是Continuous Deployment,表示持续部署。 在CD环境中,通过自动化的构建、测试和部署循环来快速交付高质量的产品

使用gerrit作为代码评审工具

↘锁芯ラ 提交于 2019-11-29 22:57:29
需求描述 其实作为项目代码的maintainer,一直习惯于mailing list + git的代码评审及管理,无奈公司主推敏捷+devops,老板让改用gerrit。硬着头皮切换到gerrit,在这里记录下安装配置的过程及踩过的许多坑,以便网友们以后配置gerrit留作参考。 需求其实很简单,我们项目一直使用公司内部一个类似于github的代码托管网站来托管项目代码,使用邮件列表来评审代码。代码通过评审通过后,我再将patch push到代码托管服务器上去。整个开发流程如下图所示: 现在需要切换到gerrit来作为代码评审工具,以便于能够和jenkins集成,搭建一个集开发、构建、测试、部署为一体的devops系统,结构如下图所示。本文只关注gerrit的搭建。 Gerrit简介 安装步骤 1 . 安装Java. 网上有很多安装java的博客和文章,因此在这里不再赘述,可以参考下面这篇文章: Linux下安装java 2 . 给Gerrit单独创建一个账户 #useradd gerrit #passwd gerrit #su gerrit 3 . 下载gerrit gerrit是在google上托管的项目,翻墙下载比较麻烦,可以在这里下载2.11版本的gerrit: 百度网盘下载Gerrit 将网盘中的两个文件gerrit-2.11.war以及bcpkix-jdk15on

【军哥谈CI框架】再谈CI中集成UEditor之移植SAE

Deadly 提交于 2019-11-29 21:48:56
这次跟大家伙分享的内容其实军哥在之前的一篇关于UEditor的章中也谈到过,不过那会比较初级一点,只是简单的实例化出UEditor编辑器,而对于实际开发情况比较少考虑到。 比如在SAE云平台上, 新浪把本地文件的IO操作禁止了,使 得UEdi otr的图片上传、附件和在线涂鸦功能都不可用了。 对于这一点,我们想让UEditor在SAE下的文件上传功能能够正常地使用,又该如何做呢?内容详见: http://phpersite.sinaapp.com/index.php/jayjun/doc/ci/6/cid/13/aid/84 来源: oschina 链接: https://my.oschina.net/u/867091/blog/144335

什么是 CI/CD?

為{幸葍}努か 提交于 2019-11-29 18:47:12
什么是 CI/CD? 在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语。但它们真正的意思是什么呢? 在本文中,我将解释这些和相关术语背后的含义和意义,例如持续测试Continuous Testing和持续部署Continuous Deployment。 工厂里的装配线以快速、自动化、可重复的方式从原材料生产出消费品。同样,软件交付管道以快速、自动化和可重复的方式从源代码生成发布版本。如何完成这项工作的总体设计称为“持续交付”(CD)。启动装配线的过程称为“持续集成”(CI)。确保质量的过程称为“持续测试”,将最终产品提供给用户的过程称为“持续部署”。一些专家让这一切简单、顺畅、高效地运行,这些人被称为运维开发DevOps践行者。 “持续”用于描述遵循我在此提到的许多不同流程实践。这并不意味着“一直在运行”,而是“随时可运行”。在软件开发领域,它还包括几个核心概念/最佳实践。这些是: 频繁发布 :持续实践背后的目标是能够频繁地交付高质量的软件。此处的交付频率是可变的,可由开发团队或公司定义。对于某些产品,一季度、一个月、一周或一天交付一次可能已经足够频繁了。对于另一些来说,一天可能需要多次交付也是可行的。所谓持续也有“偶尔、按需”的方面。最终目标是相同的:在可重复

CodeIgniter框架环境配置

会有一股神秘感。 提交于 2019-11-29 08:10:12
之前连续搭了好几个项目,觉得用CodeIgniter框架搭建项目已经非常熟悉了。今天想再单独弄一个环境,用作PHP技术的学习和实践平台,却发现之前“熟记”的过程都快放的差不多了,怎么都安装不成功,以至于不得不打开安装手册和笔记本一步一步对照查看到底是哪疏忽了,真的很麻烦。。。 陆续的,我会把之前用过的ASP、JSP、PHP等等运行环境的搭建步骤放在这,逐步完善我的“安装手册”。 其实CI的配置非常简单。 PHP运行环境是WAMP——XAMPP,PHP框架是CI。 第一步,下载并安装WAMP,需要在 http://localhost 页面设置一下密码;如不想把程序放在htdoc文件夹下,须设置xampp\apache\conf\httpd.conf文件,修改DocumentRoot路径与Directory路径的值,并保持一致。假设要将CI框架放在F盘CI目录下。则 DocumentRoot "F:\CI" <Directory "F:\CI"> 第二步,在CI目录下新建文件夹test。下载CodeIgniter_2.1.0,将CodeIgniter_2.1.0文件夹里的application、system、index.php、license.txt复制到test目录下。 第三步,修改xampp\apache\conf\extra\httpd-vhosts.conf文件,添加以下代码。

腾讯测试开发两面凉经

你离开我真会死。 提交于 2019-11-29 06:31:55
抢在8月底面试了腾讯广告的测试开发,由于之前实习一直做的是偏测试的测试开发工作,面试问了许多开发的基础知识和一些自动化平台建设的问题,不出所料二面凉凉,在这里记录一下面试的问题,为之后的面试做准备。 一面: 1、将一个字符串反转有几种思路,并手写其中一种。 2、StringBuilder、StringBuffer、String的区别,那种效率最高。 3、Java的容器有哪几种,并简述区别。 4、HashMap、Hashtable的区别。 5、用过什么测试方法。 6、 简述项目、并画出流程图,指出了我这里设计的一些不合理的地方。 7、知道你所用的ci平台底层是怎么实现的吗? 一面结束了,然后紧接着就进行二面,没想到啊直接就二面了。 二面: 1、先上来手写了一道算法题,读取一个存储了大量英文单词的文件,计算词频,并按字典顺序输出。(我知道使用外部归并排序,但是没手撕过,一下子就慌了,还没写完,就被收上去看看了...)。 2、全局变量和静态变量的区别。 3、访问一个网页的步骤。 4、为什么TCP三次握手。 5、socket。 6、ci自动化测试平台是什么。 7、说说你对于自己用过的junit测试框架的理解。 8、给你一个重构的模块,但是没有说明文档,从测试的角度,怎么保证快速安全上线。 ... 总体来说,对于计算机网络掌握的不够牢固,同时测试这方面也缺乏思考,只是会用,没有达到要求的程度

使用Jenkins搭建iOS开发的CI服务器

ⅰ亾dé卋堺 提交于 2019-11-29 01:57:10
目录 简介 下载并运行 Jenkins配置 安装git插件 E-mail设置 自动化构建 远程仓库设置 触发条件设置 编译设置 编译后行为设置 单元测试 最后 简介 持续集成CI(continuous integration)是一种可以增加项目可见性,降低项目失败风险的开发实践。iOS开发中CI的选择有很多,比如可以使用Apple提供的Bots来完成自动化构建和单元测试,其优点就是和Xcode深度集成,只需几步配置就可以完成,缺点就是不够灵活,可定制化程度不高。这篇文章主要讲解如何使用开源社区的一个CI工具Jenkins来搭建iOS开发的CI环境。如果是搭建单独CI服务器的话,就需要一台单独的mac机器了。 下载并运行 打开Jenkins的 官网 ,在页面的右侧,点击下载最新版本的Jenkins的war包。 下载完成后,打开terminal,进入到war包所在目录,执行命令: java -jar jenkins.war --httpPort=8888 httpPort指定的就是Jenkins所使用的http端口,这里指定8888,可根据具体情况修改。待Jenkins启动后,打开浏览器输入地址: http://localhost:8888/ 便可以打开Jenkins的管理界面了。 Jenkins配置 安装git插件 Jenkins默认没有安装git插件,需要手动选择安装