1. 项目主流程是什么?
  2. 测试周期是多少?
  3. 测试流程是什么?

搭建电商平台

  1. 重装LInux 系统 使用centos 7.9 操作系统
  2. 下载宝塔 参考官网: https://www.bt.cn/bbs/thread-19376-1-1.html

    1. yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
  3. 完成 根据提示,打开浏览器 输入 外网地址,输入用户名和密码

image.png

打开浏览器 输入账号和密码进行登录
image.png

登录成功之后,安装
image.png

一键部署电商平台

image.png

安装
image.png

设置对应的信息
image.png
安装成功之后,根据提示,打开对应的页面地址
image.png
image.png
image.png
image.png

宝塔开启Mysql 端口远程访问

  1. 设置权限为所有人

image.png

  1. 开启mysql 3306端口

放行 3306 端口
image.png

数据库配置

数据库连接信息

  1. 主机: 49.233.108.117
  2. 端口:3306
  3. 用户名:shopxo
  4. 密码:fanmao55..
  1. show tables;
  2. -- 查看最大的连接数
  3. show variables like "max_connections";
  4. -- 设置最大链接数
  5. set global max_connections = 2000;
  6. -- 1. 查询所有的用户信息 sxo_user
  7. select * from sxo_user;
  8. -- 2. 统计共有多少个用户
  9. SELECT count(*) from sxo_user;
  10. -- 3. 查看所有订单信息 sxo_order
  11. select * from sxo_order;
  12. -- 4. 查看每个人的订单信息,没有订单显示为null
  13. select username,order_no, total_price from sxo_user
  14. left JOIN sxo_order
  15. ON sxo_user.id = sxo_order.user_id
  16. -- 5查看订单号,用户名,用户手机号码,订单时间,订单金额
  17. select order_no, username, mobile, sxo_order.add_time, total_price from sxo_user
  18. INNER JOIN sxo_order
  19. ON sxo_user.id = sxo_order.user_id
  20. -- 5查看订单号,用户名,用户手机号码,订单时间,订单金额, 收货地址

整理常见的问题

  1. 什么时候用数据库? 你用数据库都干什么?

在网站进行操作,比如下订单,有订单状态。订单有不同的状态,比如我在测试的过程中,取消了订单,但是在查看订单详情的时候,订单的状态并没有更新。这是一个bug。
作为测试人员,提交bug,问题:bug 提交给前端还是后端。
需要定位Bug—>通过查看数据库—> 校验数据库中的数据。
在做一些统计相关的测试的时候,比如查看一些实时的数据
image.png
这些数据都是从数据库中来的, 这些数据的校验 主要是从数据库中来的,这个时候也需要我们去数据库中查看对应的数据。

image.png

图表测试 主要测试方法就是从数据库中提取数据 再在前端界面上显示出来, 查看图表中数据是否与数据库中的数据保持一致。

总结:
在测试过程中, 只要是涉及到一些数据校验相关的功能测试,都可以去数据库中进行查询。

多表联查相关操作

  1. -- 5查看订单号,用户名,用户手机号码,订单时间,订单金额, 收货地址
  2. select CONCAT(province_name,"-",city_name,"-",county_name,"-",address) as 收货地址 from sxo_order_address;
  3. select order_no, username, mobile, sxo_order.add_time, total_price,CONCAT(province_name,"-",city_name,"-",county_name,"-",sxo_order_address.address) as 收货地址 from sxo_user
  4. INNER JOIN sxo_order
  5. ON sxo_user.id = sxo_order.user_id
  6. INNER JOIN sxo_order_address
  7. ON sxo_order_address.order_id = sxo_order.id AND sxo_order_address.user_id = sxo_user.id;

时间相关函数的时候

  1. -- 当天的订单总数,订单总额
  2. -- UNIX_TIMESTAMP(CURRENT_DATE) 今天时间的00:00:00
  3. -- (UNIX_TIMESTAMP(CURRENT_DATE+1)-1) 今天时间的23:59:59
  4. Select count(*), SUM(total_price) FROM sxo_order
  5. WHERE add_time BETWEEN UNIX_TIMESTAMP(CURRENT_DATE) AND (UNIX_TIMESTAMP(CURRENT_DATE+1)-1);

分组查询,临时表,连接查询,子查询

  1. select DISTINCT(销售数量) FROM
  2. (
  3. SELECT SUM(buy_number) as 销售数量,title FROM
  4. (select sxo_order.id,goods_id,title, buy_number from sxo_order
  5. INNER JOIN sxo_order_detail
  6. ON sxo_order.id = sxo_order_detail.order_id
  7. WHERE sxo_order.pay_status = 1
  8. ) as tmpdata
  9. GROUP BY title
  10. ORDER BY 销售数量 DESC
  11. ) as tmpddd
  12. LIMIT 10
  1. -- 8. 统计消费最高的人员信息
  2. SELECT username from sxo_user
  3. INNER JOIN
  4. (
  5. SELECT user_id,sum(total_price) from sxo_order
  6. WHERE pay_status = 1
  7. GROUP BY user_id
  8. HAVING sum(total_price) = (
  9. select max(total) from
  10. (SELECT user_id,sum(total_price) as total from sxo_order
  11. WHERE pay_status = 1
  12. GROUP BY user_id) as tmpdata)
  13. ) as tmpddd
  14. on tmpddd.user_id = sxo_user.id

如何提交bug

下面有如下需求
image.png
后台管理界面中
订单总数,收入总计的数据来源数据库, sxo_order 表中image.png
统计的订单总量为 order 表中订单总数
订单金额为 订单中每个订单金额的总和。

  1. 在数据库中进行查询

    1. select count(*), sum(total_price) from sxo_order;

    image.png
    结果发现,查询出来的数据,与页面上显示出来的数据不一致。

  2. 准备提交bug。提交给谁呢??? 🤣


常用的定位的bug

  1. 抓包定位—> 查看前端发出去的请求 看前端的请求。

image.png
发现没有专门API接口,直接返回一个html 页面。

  1. 查看服务器的日志

a. 日志文件目录为 /www/wwwroot/shopxo/runtime/log
image.png
b. 查看日志 使用 tail -f 命令跟上 具体日志路径
image.png
经过一系列的从日志文件中进行分析,发现执行的sql语句与我们需求中定义的查询不一致。
image.png

  1. 所以,执行的sql语句有问题,要给开发后台管理页面的统计数据的开发人员提出bug。

22.log


作业

image.png
使用数据库

  1. Mysql 数据库连接:
  2. 外网地址: rm-bp188nr95fk4l9545ao.mysql.rds.aliyuncs.com
  3. 外网端口: 3306 (默认端口)
  4. 用户名: fanmao55
  5. 密码: ABCfanmao55
  6. 数据库: projects

image.png

  1. select `ID(身份证号)`,`NO(客户号)` from `811` where `NAME(姓名)` like "李四"
  2. select `811`.`NO(客户号)`,`NAME(姓名)`,`ID(身份证号)` from `811` INNER JOIN `812` on `811`.`NO(客户号)`=`812`.`NO(客户号)` where `DEPOSIT(存款金额)`>=1000
  3. SELECT `COUNTRY(国家)`,COUNT(`NO(客户号)`) FROM `811` GROUP BY `COUNTRY(国家)`
  4. SELECT SUM(`CREDIT(信用卡金额)`),
  5. CASE
  6. WHEN YEAR(`BIRTH(出生年月)`)BETWEEN 1980 AND 1989 THEN "80后"
  7. when YEAR(`BIRTH(出生年月)`)between 1990 and 1999 then "90后"
  8. END AS 年龄段
  9. from `811` INNER JOIN `812` on `811`.`NO(客户号)`=`812`.`NO(客户号)`
  10. GROUP BY 年龄段
  1. 提交bug