🌓

人类、经济、太阳,管他呢

对我来说,这个世界的存在简直太其妙了!我能听见音响里传出的音乐声,我知道自己能听见,我能跟着旋律,能陶醉其中,但是我却不知道,我为什么能听见。你可能会说,因为你有耳膜啊,通过录音设备,把音乐声波转存成了电信号,电信号再被计算机识别成二进制,再通过流媒体的格式从网络传输到你的电脑上,你的计算机接受到信息,再把音乐的流信号翻译成电信号,电信号强弱控制音响震动,在...

阅读全文

Docker CE 镜像源站

安装帮助123456789101112131415161718# step 1: 安装必要的一些系统工具sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common# step 2: 安装GPG证书c...

阅读全文

有赞.测试团队介绍(转)

转载自:友赞技术团队主页
转载原因:学习、借鉴先进生产力
一、基本概况

有赞,旨在为商户提供强大的微商城和完整的移动零售解决方案,是一个移动零售服务商,正在新零售的潮流中激流勇进、开疆拓土,用产品技术撬动巨大的市场。有赞拥有世界级的 SaaS 电商解决方案,每天处理几百万订单、几亿条消息,且量级仍在不断攀升中,有赞还开放了有赞云,连接数十万开发者,大大提升了SaaS 对商家产生的价值。
有赞测试团队三分之二以上成员来自于阿里、腾讯、网易等公司,他/她们分别在电商事业部、零售事业部、餐饮事业部、支付事业部及共享技术事业部等部门贡献自己的力量。

二、我们的日常工作

测试团队负责相关项目具体测试工作、自动化建设、合并发布流程管控、设计开发线上业务级别可用性监控、同时在研发提升测试效率的工具。
有赞测试职位主要负责度量产品质量及研发测试效率工具。从度量产品质量角度讲,有赞测试人员需要具备白盒测试能力、CodeReview能力、业务功能测试,从而实现核心系统可持续自动化测试,保障系统在频繁发布情况依然是稳定的、高可用的。对于效率工具研发,测试同学完成相关第三方mock(例如短信、支付)、应用级健康检查、线上业务级可用性监控、持续集成工具、UI自动化、测试工作台、性能测试平台、全链路性能压测等。

2.1 具体项目测试

有赞的项目分为标准需求项目、技术重构项目、优化项目、缺陷修复项目。有限的测试资源通过不同策略支持着绝大部分业务产品的测试工作。
第一、对于标准需求项目或者跨多个业务的项目,一定会有测试投入,并且会有一位PTM来协调测试工作。PTM需要确保所有需求点都拆分到各个业务测试同学手里,跟踪相关测试同学按时提交标准测试方案。当测试方案汇总后,PTM需要评估后续测试过程中,测试人员如何投入。即哪些业务的功能测试PTM可顺带执行掉,哪些确实需要对应业务线测试同学来完成,以避免一个项目投入过多测试同学。
第二、技术重构改造项目,这种一般是单应用或者极少应用改造,但不改变业务使用规则。这类项目测试同学只要设计测试方案并完成测试用例落地即可,用例的执行由开发自行完成。测试同学要做的就是对新系统进行自动化覆盖。如有需要,测试会在上线前做质量check。
第三、对于小型项目,如果开发的自测场景与测试同学的测试场景基本一致,那开发自行搞定即可;或者测试同学把需要特别关注的或者风险点给开发同学简单介绍。对于有差异的,测试同学把差异点向开发同学描述清楚即可。
有赞测试同学拿到具体需求后,按照有赞测试对需求分析和测试方案统一要求,完成相关工作。
有赞.项目协作图

测试同学在参加需求评审或者测试方案设计之前,需要认证阅读需求文档,从获取相关的信息:
第一、这个需求是给哪些角色使用的。例如,高级管理员、普通管理员、库管人员、核销员;还是买家,是大众买家还是特定买家。
第二、不同角色,在什么环境下使用这个些功能。例如PC后台、店铺收银台、手机端、还是有赞的移动终端。
第三、整个项目是否存在对象的生命周期扭转,例如订单对象、店铺等,它们在什么条件下会发生什么样的扭转。即明确状态发生变更的条件规则,确保对象生命周期是有终态的。
第四、明确每个业务点的人机交互过程及规则,业务过程是否连贯明确;即如何使用这个需求。
需求分析后,需要输出对象生命周期图、业务时序图、用例图、待确认的问题、风险点清单。并就相关问题、风险与产品、开发进行多次沟通,直到问题得到明确答复。
有赞.需求分析.需求拆解

一、功能测试设计的完整性,取决于测试人员对需求分析的深入程度及其经验。为了弥补测试同学经验不足,我们梳理了《功能测试.页面测试.基础篇》《有赞云.测试参考规范》《有赞云.carmen接口自动化参考规范》等供平时设计参考。同时,不定期组织业务分享,提高测试人员的业务全局观及跨业务耦合与风险评估能力。
二、提供《有赞.异常测试基本场景》指导测试人员如何考虑异常。包括Redis缓存、消息、大数据定时任务处理、多系统协同等。
三、有赞有安全测试专员及虚拟小组,提供安全测试方面的指导和工具;针对SQL注入、XSS、越权、业务规则安全、文件上传&下载、重定向定制常规安全测试用例,指导日常测试。
四、其它的专项测试,根据实际情况定义指导案例及分享。
有赞.测试大纲模板

阅读全文

敏捷开发管理在我司的实践

我们研发团队(产品、研发、测试)规模30多,互联网电商,快速成长中。
就个人经验来看,技术主管的管理能力绝对达到一定水平,团队研发管理井井有条,很有效率(基于已有积累,很快速的一个月上线新产品,快速迭代完成产品需求)。下面就结合我所见所闻,结合SCRUM的理论,结合我们公司来进行描述,一边反观一边学习先进的管理的理念和配套工具、流程规范。
目前采用的是Visual Studio Team Foundation Server,作为scrum的工具。

主要理论参考:scrum中文网

Scrum 是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。

在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。

Scrum流程如下图:

Scrum框架包括3个角色、3个工件、5个事件、5个价值、4个支柱

3个角色

Scrum团队中包括三个角色,他们分别是:

我司有专职产品2名,兼职产品2名(架构和Scrum Master兼)。
开发团队人数28(全员),分为的数个行政管理单元:开发一组、开发二组、开发三组、测试组、前端组。就人员配置看,每组开发组人员2-6人规模不等,是由最开始的一个组分裂成的(人员规模扩大)。
Scrum Master,数年电商和技术管理经验,srum理念的推动者。

3个工件

产品作为产品Backlog的生产者,对产品负责,使用sftp方式对外交付原型设计,做产品和测试依据,迭代。 SprintBacklog,按周定义冲刺,冲刺内容为产品Backlog的拆分项,通常按照:原型设计、UI设计、ERP设计及review、代码实现、测试、发布来进行。

5个事件

我公司并没有遵循该原则,变通为周例会,小组leader汇报,进展情况在看板中更新。其实项目小组中是可以进行站会的,这是一个可以改进点。

5个价值

在我司主要体现在:
1、KPI的考核上。主要原则:积压工作会列入每月的考核,需要完成,若不能完成需给出合理理由,灵活控制。
2、周例会看板及看板权限的开放;
3、平等对话。
4、开放的知识库。

阅读全文

敏捷团队中,测试流程定义及Bug分级定义

当前流程,灵活处理。解决问题和效率为基本原则。

阅读全文

jenkins经验

1、关于进程即jenkins默认会kill掉自己生产的子进程。这个问题百度一下就解决。 2、莫名其妙的failure,命令执行的返回状态对jenkins的影响原则:自己编写的shell脚本,函数必须有一个自己想给出的返回状态,告知jenkins该状态成功或失败后,是否继续执行。因为从安全角度考虑,jenkins面对每一个命令,只要抛出异常,必然是终止其执行的...

阅读全文

我在聚宽共享函数一

该函数设计目的:保护既得利润,以N日内持仓股票最低盈利被突破为触发条件,所以持股时间最低为N日,为保证有效持股,N日之前亏损不会计入(该条件不需要的可以自己去掉)。函数以股票为输入,需要在自己的函数(持股或卖出判断)每日调用。需要自定义全局(JQ提交代码不能提交函数外的东东)。 函数怎么运行的:为输入的股票(当然是自己的持仓的)建立一个长度为N的队列(FIF...

阅读全文

[JavaWeb基础]jsp

以下内容整理编辑参考:http://www.runoob.com 什么是jspJSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。而识别它的方式,是以<%开头以%>结束的标签。 JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,动态地创建网页。 JSP标签有多种功能,比...

阅读全文

Appium_Python_Api

本文转自TesterHomeAppium_Python_Api文档

1.contexts
contexts(self):

1
2
3
4
5
6
Returns the contexts within the current session.
返回当前会话中的上下文,使用后可以识别H5页面的控件

:Usage:
driver.contexts
用法 driver.contexts

2. current_context
current_context(self):

1
2
3
4
5
Returns the current context of the current session.
返回当前会话的当前上下文
:Usage:
driver.current_context
用法driver. current_context

3. context
context(self):

1
2
3
4
5
Returns the current context of the current session.
返回当前会话的当前上下文。
:Usage:
driver.context
用法driver. Context

4. find_element_by_ios_uiautomation
find_element_by_ios_uiautomation(self, uia_string):

阅读全文

jenkins后台执行shell命令

参考官网:
https://wiki.jenkins.io/display/JENKINS/ProcessTreeKiller

原理:启动的时候给命令,让jenkins不终结自己的进程衍生的进程。

1
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

还有一种办法直接在shell(要后台执行命令前)加入:

1
BUILD_ID=dontKillMe

举例:

1
BUILD_ID=dontKillMe nohup java -Xms246m -Xmx500m -jar ?????.jar > log.log &

下面是jenkins执行前和后的日志对比

执行前:

1
2
3
+ echo ???? deploy finished'
???? deploy finished
+ nohup java -Xms246m -Xmx500m -jar ????.jar

执行后

1
2
3
4
+ echo ???? deploy finished'
???? deploy finished
+ BUILD_ID=dontKillMe
+ nohup java -Xms246m -Xmx500m -jar ????.jar

阅读全文