Shin's Blog

Aims at Test Architect


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

Git - 分支管理策略

发表于 2020-02-27 | 分类于 Git

一千个项目可能有一千种 Git 分支管理策略。

​ —— 严士比亚·北

在不同的公司、项目里跌打滚爬过,你是否每次总在适应团队各种各样的 Git 操作规范?作为测试,若你的工作与持续集成有关,又是否因为不同的 Git 规范而头痛?

即使是本文介绍的分支管理策略,也不一定适合大家的项目,但我们长期使用下来,经过多次优化升级,一定不会难用。

阅读全文 »

Django - 权限系统设计与实现

发表于 2019-08-04 | 分类于 Python

背景

权限系统在后台中不可避免,本文分享一下我们的权限系统实现方案。

在分享前先简单介绍一下我们的平台业务。我们是质量部,我们的平台对接了多个业务部门,因此需要实现:

  • 多用户
  • 多项目
  • 3 种角色

不同用户在不同部门的项目中拥有一种角色,每种角色对不同的接口有不同的操作权限,例如:

  • 只有 Admin 能够删除数据
  • 所有用户都有数据查看权限
  • 只有 Operator 能够修改数据

以上就是简化后的权限系统的需求,下面讲讲实现方案。

阅读全文 »

Django - 定时任务模块设计与实现

发表于 2019-07-23 | 分类于 Python

背景

在开发后台与任务相关的功能中,遇到一个需求:用户需要能够为任务配置定时策略,使任务定时执行某个操作。

需求分析

根据需求,我们可以拆解成如下几个步骤:

  1. 「某个操作」的实现
  2. 配置为定时任务
  3. 定时策略可配置
  4. 用户体验好
阅读全文 »

用Docker swarm实现容器服务高可用

发表于 2019-06-22 | 分类于 Docker

背景与技术选择

根据我之前的几篇「Django 系列」文章,后端架构中我使用了 Django + Celery + RabbitMQ 三个框架/服务。现在有几个问题:

  1. 如何用容器快速部署这三个应用?
  2. 如何提高性能?
  3. 如何保障后端可用性?

Docker Compose vs Swarm vs K8s

在我以往的实践中,容器的编排使用了 docker-compose 实现,问题一就已经解决。但 docker-compose 也只是用于编排,可以各启动三个服务的一个容器,性能与高可用性就可能不能满足要求。

对于性能与高可用,如果是大型项目,目前不二的选择就是 Kubernetes(K8s) ,但是我的项目不足以称之为「大型项目」,因此我考虑的是,如何在单宿主机上提高性能与高可用。

阅读全文 »

Django - Celery异步任务队列

发表于 2019-06-16 | 分类于 Python

背景

在开发中,我们常常会遇到一些耗时任务,举个例子:

上传并解析一个 1w 条数据的 Excel 文件,最后持久化至数据库。

在我的程序中,这个任务耗时大约 6s,对于用户来说,6s 的等待已经是个灾难了。

比较好的处理方式是:

  1. 接收这个任务的请求
  2. 将这个任务添加到队列中
  3. 立即返回「操作成功,正在后台处理」的字样
  4. 后台消费这个队列,执行这个任务

我们按照这个思路,借助 Celery 进行实现。

阅读全文 »

Django - 模型序列化返回自然主键值

发表于 2019-06-11 | 分类于 Python

场景

在设计表结构时,难免需要建立一些外键关联。例如这样两个模型:

1
2
3
4
5
6
7
8
9
from django.db import models

class Person(models.Model):
username = models.CharField(max_length=100)
birthdate = models.DateField()

class Book(models.Model):
name = models.CharField(max_length=100)
author = models.ForeignKey(Person, on_delete=models.CASCADE)
阅读全文 »

Django - 集成CAS单点登录

发表于 2019-06-09 | 分类于 Python

CAS 简介

CAS 全称集中式认证服务(Central Authentication Service),是实现单点登录(SSO)的一中手段。

CAS 的通讯流程图如下(图片来自Google图库):

CAS通讯流程图

阅读全文 »

Django - 两周从入门到熟练工

发表于 2019-06-08 | 分类于 Python

初识 Django

之前 Python 后端开发框架中,对 Tornado 和 Flask 接触比较多,前者适合作为服务框架,后者由于轻量常用来构建简单的后台或服务。

Django 之于上面两个 Web 框架,其自身实现了很多工具类库,显得更为笨重,但上手之后,很多功能不需要再自己实现,比较方便。

由于已经集成诸多功能,Djang 也更常被用来作为后台开发框架。

最近新接手一个后台开发任务也是基于 Django 开发,因此本文对最近这两周的所学做个自我总结。

阅读全文 »

浏览器兼容性测试设计与原理剖析

发表于 2019-03-28 | 分类于 自动化测试

概述

浏览器兼容性是目前前端项目迭代中常常遇到的问题.

每次迭代, 回归测试需要消耗大量人力进行手动操作, 去覆盖不同浏览器下不同业务场景的前端展示情况.

本文的目的即探讨解决这类问题的一个方案: 利用分布式的UI自动化测试框架Selenium Grid解决跨浏览器的兼容性问题.

技术方案

  • Python + Selenium3, 用于驱动不同的浏览器执行验证操作
  • Selenium Grid, 用于实现分布式执行用例
  • VMware, 安装不同种类浏览器, 作为执行节点
阅读全文 »

Python 测试覆盖率统计

发表于 2018-08-12 | 分类于 单元测试

安装:

Python 的测试覆盖率使用 Coverage 模块, 需要先安装:

1
pip install coverage

执行:

假设你原来执行单元测试的命令为:

1
python runtest.py
阅读全文 »
123<i class="fa fa-angle-right"></i>
严北

严北

28 日志
10 分类
34 标签
GitHub 掘金
© 2020 严北
0%