项目介绍
“Ego微商”微信小程序,主要针对有特色的食品类商品线上零售。通过微信平台大流量在一定程度上提升了特色食品的影响力。
项目技术实现
该项目分为前后端,前端通过:WXML+WXSS+JavaScript实现客户端与平台端UI交互。其中WXML+WXSS+JavaScript是微信小程序自带的技术。
后端通过:Apache服务器提供web应用服务,通过PHP语言实现后端接口业务。
所以,项目框架应用是Linux+Apache+MySQL+ThinkPHP的技术框架。
项目部署
后端:WAMP:在windows上部署通过集成工具XAMPP安装apache、mysql、php。
前端:微信开发者工具。
操作系统:Windows10 x64
web服务器:Apache 2.4
数据库:MySQL:5.5
开发框架:ThinkPHP:5.0
CPU双核,内存2GB,贷款1Mbps
基本模块
主页: 以商品展示为主,主要是热门商品,主题商品,新品展示。
分类: 以不同类别展示商品,按不同属性归类,以及归类后的展示。
购物车: 意向商品的添加、修改、统计,为下单做准备。
我的: 个人中心信息,显示有关人地址、订单等相关信息。
核心业务
测试相关
测试准备
除了手机,手机模拟器,wifi,连接工具等还需要去微信公众平台申请小程序账号。
测试流程
- 需求分许与评审
根据需求说明书确保对于当前需求理解一致 - 编写测试计划以及方案
测试计划:搞清楚项目中“测什么”?
测试方案:搞清除项目中”怎么测“? - 设计测试用例并评审
- 执行测试用例并跟踪
测试过程日志记录
测试缺陷跟踪验证 - 编写测试报告以及分析
部署流程
乱七八糟安装一堆之后
- 熟悉前后端部署要求
当前项目架构:C/S (客户端-服务器).
各个软件的版本 - 搭建项目系统环境
windows - 部署项目应用服务
Apache、mysql、Ego微商代码 - 部署结果正确验证
测试
功能测试
先进行基本功能测试。采用”总分总“设计思想
总: 从总体把控被测产品,熟悉被测产品的模块构成分类
分: 根据需求提取功能模块,按模块拆分细化,直到可以之际设计测试用例
总: 根据需求从核心业务模块或者用户实际应用场景进行测试设计
分
按照布局模块
导航区: 标题、导航按钮、内嵌插件
标签区: 显示、操作
展示区: 布局及显示、操作与规则,主页,分类,购物车,我的
轮播图:
新品信息:
商品详情:
专题:
还有一堆!!
基本业务流程
核心业务
非功能设计
其他:
易用性设计:三级页面深度,操作过程提示引导,操作结果反馈。电话短信对小程序的影响,不同设备登录数据保留。
接口测试
接口
接口: 指系统或组件之间的交互点,通过这些交互点可以进行数据之间的交互。
接口测试: 对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
接口测试特点:
- 测试可以提前介入,提早发现bug,符合质量控制前移的理念
- 可以发现一些页面操作发现不了的问题
- 接口测试低成本高收益
- 接口测试是从用户的角度对系统进行全面的监测
实现方式
该项目使用Postman测试工具。python+Requests编写代码实现。
接口测试流程
- 需求分析
- 接口文档解析
- 设计测试用例
- 执行用例
- 使用接口测试工具实现
- 通过编写代码实现
- 接口缺陷管理与跟踪
- 接口自动化持续集成
Postman实现接口测试
根据接口文档APi写的
1.设置全局变量
2.
接下来的测试与上述步骤相同,主要看使用code获取token那里
4.获取token,由于获取订单,创建订单要在登录状态下才可以进行,所以需要从code获得token,进入登录态
5.先将token存储在全局变量,验证token
6.之后的接口测试与之前相同,在需要填写token的地方调用全局变量即可。
7.批量运行脚本,生成测试报告
导出测试脚本与测试环境,生成测试用例。
在存储脚本与环境的目录下,运行cmd,
累死了!!!!!!!postman如何通过代码设置全局变量 下一章节说!!
补:
Postman设置全局变量(代码)
这是另一个项目中的
这是设置环境变量
日志
- 可以记录操作过程,帮助排查问题
- 可以通过操作过程日志,分析数据和预期的是不是一样,帮助定位问题。
import logging
def init_logging():
#1 创建一个日志器 如果不写日志器的名称,那么会使用默认的root
logger = logging.getLogger()
#2 设置日志等级
logger.serLevel(logging.INFO)
#3 设置处理器
# 控制台处理器:控制把日志输出到控制台
sf = logging.StreamHandle()
# 文件处理器:控制把日志输出到外部文件当中,需要提前定义文件的路径和文件名称
# os是动态的 __file__是当前文件路径
logname = os.path.dirname(os.path.abspath(__file__)) + "/log/ego.log"
fh = logging.handlers.TimedRotatingFileHandler(logname, when='M', interval=1, backupCount=7, encoding='utf-8')
#4 设置格式化器 指打印日志时的格式内容(日志器名称、打印日志的函数名称、模块名称、代码行数、日志消息等内容)
fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formmater = logging.Formatter(fmt)
#5 将格式化器添加到处理器中(文件和控制处理器都要添加)
sf.setFormatter(formmater)
fh.setFormatter(formmater)
#6 将处理器添加到日志器中
logger.addHandler(sf)
logger.addHandler(fh)
通过Python实现接口自动化测试
- 创建项目的目录结构
- api:定义封装被测系统的接口
script:定义测试用例脚本
data:存放测试数据
我这里没有用。
report:存放生成的测试报告
lib:存放第三方文件
我这里放的是HTMLTestRunner
app.py:定义项目的配置信息
utils.py:定义工具类
run_suite.py:执行测试套件的入口
- api:定义封装被测系统的接口
- 生成的HTML测试报告
在D盘里的jenkins!!!!每次都忘 服了我自己 - 将自动化代码上传到github
面试题:postman中设置环境变量有什么用?
接口测试测试的环境有开发环境、测试环境等,为了测试的时候方便,就在Postman中设置环境变量,到时候所有接口都引用该环境变量,这样就不用为了切换环境每次都去修改被测系统接口的主机地址。点击右上角环境变量管理按钮 - 新建环境变量,在脚本中使用{{变量名}}去调用。
我具体使用是,接口文档中所有url地址的前缀都相同,只是参数不同,我将url前缀设置为全局变量,每次只需要修改不同参数即可。