前言
说实话,在找项目的过程中,我下载过(甚至付费下载过)N多个项目、联系过很多项目的作者,但是绝大部分项目,在我看来,并不适合你拿来练习,它们或多或少都存在着“问题”,比如:
1.大部分项目是web项目,很难找到app项目,特别是有app安装包的项目大部分
2.app项目只有前端代码,没有后端服务代码,你只能以“使用者”的角色练习
3.大部分有app安装包的项目,项目作者提供的是试用app,很难保障个人隐私、账号安全等
4.大部分项目缺少部署指南,看起来一头雾水
5.有的项目涉及的业务,如果你缺少业务基础,很难上手,如支付、区块链、货币等
6.很少有统一的、能涵盖多端使用的项目
这些问题,我相信在你的学习过程中,也遇到过,并且很难解决。
但请放心,我都帮你解决好了!
在我浏览了上百个项目,亲手搭建了十多个项目之后,终于为读者粉丝们挑选出非常适合练手的一个软件测试项目,可以说非常之全面。
有了它,你就再也不用担心这类招聘了~
一、项目介绍
涉及技术
前端: HTML CSS JS/JQ(Bootstrap、node.js、angluar.js 等可以了解下) AJAX
PHP: PHP+MySQL session 和 cookie Nosql(redis memcache mongdb) 接口技术 缓存技术 优化技术等等
服务器方面: Linux Nginx
开发环境: WAMP 或者是 LAMP 比较常见,除此以外还有 LNMP 等
简历中或者是面试中尽量不要提及版本号,如果要写则需要把版本号对齐,否则不要写版本号
电商项目里的技术特点?
1.技术更新较快:根据市场的需求,不断迭代更新;
2.技术涉及面广:除了 PHP,还会用到 Python,GO 等其他的一些语言;数据库中 MySQL,nosql 是最频繁使用的(当然也有的公司会用 oracle,但是 PHP 一般都是以 MySQL 为主),服务器端使用 Linux(少部分公司会用到 Unix),还经常涉及到服务器安全、系统安全等安全方面的技术;
3.分布式:从前的单一的机器上运行,现在是分散到不同机器上,最后将数据集中汇总。集中式向分布式进行发展是由需求来推动;
4.高并发、集群(高可用集群)、负载均衡:由并发问题采用集群进行处理,其中,集群会涉及服务器的主从以及分布问题,使用负载均衡。(权重高低)高可用是对用户而言,用户的服务不中断(系统升级,服务不中断,公司电商系统的部分更新等);
5.海量数据:每年商家的各类活动(双 11,双 12 等等)订单量、浏览数、商品量、活动相关数据都将会超级大超级多(一般随同高并发出现);
6.业务复杂:电商业务并不简单:并不是商品展示出来后,简单的加入购物车后购买就完成了。除此以外后台业务逻辑是相当复杂,比如优惠(包邮、满减),秒杀,抢购等;
7.系统安全:系统上线必须通过系统安全部门审核通过,安全性问题正逐步的被放到台面上,而且很多企业对这块相当重视。
系统功能
本商城系统是一个综合性的 B2C 平台,类似京东商城、天猫商城
用户
1.用户可以通过注册成为商城的会员,登录商城
2.根据会员等级获得相应的优惠和特权
3.用户可以浏览商品,可以根据商品类型进行搜索
4.用户可以对购物车进行操作(增删改查商品的数量、商品详情等)
5.用户下订单、退订单,对订单的结算等
商家
1.商家可以入驻商城,在商城里开店售卖自己的商品
2.商家也有商家等级,如果在商城好评和商品销售量到达一定数量,可获得商家的一些特权
3.商家可以管理自己店铺的商品:上架下架商品;设定库存量;设定自己店铺的会员制度等
电商项目的思维导图
以上是大部分常用模块,如有其它模块自行补充。根据上图的体系架构,一层层的进行归纳记忆,从项目——模块——功能一点点的往深入熟悉记忆,并且加以理解。
项目团队构成
产品经理:1 人,确定需求以及给出产品原型图。
项目经理:1 人,项目管理。
UI 设计 :1 人, 制作项目原型效果图。
前端团队:1 人,根据产品经理给出的原型制作静态页面。
后端团队:3 人,实现产品功能。
运维 :1 人 ,负责公司运维项目的系统。
测试团队:2 人,测试所有的功能。(小公司不会有测试)
上述是以团队为单位,有的公司技术部不止一个团队,还有运维、UI、交互设计师等等,视情况而定
项目开发流程
二、电商面试常见问题
1.说说你最近做的这个项目的背景,简单的介绍一下你这个项目?(这个题至少要说清这个项目给什么类型公司或者什么行业做的,然后再来介绍这个项目的基本功能模块就可以.)你负责的模块是什么? 你负责的模块都有什么功能?
我们公司之前主要以实体店为主,进行批发与零售,业务也相对比较传统。为了适应市场需求,增强公司竞争力,提升业务绩效,另一方面,也为基于互联网的商务模式创新奠定基础。所以开始 xxx 商城建设项目,其中包含商品管理、订单管理、类目管理、客户管理、合作商管理、客服管理、购物平台、内容管理等,很大程度上分担了人工的压力,对提高客户服务效率和客户满意度能够起到较好的作用。(先大体的描述下项目,然后能够挑一两个自己最为熟悉的模块进行叙述)
2.项目的整体结构(从框架和具体技术来说)
框架方面:从大处进行描述,比如本项目是属于电商项目,采用的是 TP 框架,运用php+MySQL+Apache 进行开发。因为 TP 框架是开源的、轻量级的,所以用起来更加方便快捷,从效率和成本方面来讲都是性价比比较高的,所以那时候团队决定用这个框架进行开发。然后再从框架的一些优点特性进行说明下,让面试官觉得你对这个框架很了解技术:描述技术时首先用从自己比较熟悉的模块入手(比如说注册验证时会用到的 JS 技术、正则匹配、ajax 无刷新验证等等),然后由此慢慢的向其他方面的技术进行拓展,在说具体技术的时候如果能说到目前比较新或者是比较有难度的技术,能够让面 试官眼前一亮,这样能为自己的面试增加不少分。
3.你这个项目有多少人做? 开发多少?测试多少? 什么架构?
20个左右,开发10个,测试3个,ui测试2个 运维2个 B/S架构和app
4.B/S架构的系统从哪些点去测?
功能:链接测试、导航菜单、页面的跳转、表单测试、数据测试、业务逻辑测试
兼容性:跟客户确认其常会用的浏览器,再加上IE、火狐和谷歌等进行兼容性的测试
界面:字体颜色大小、图标和字段间距等
性能:连接速度、负载测试、压力测试
安全性:权限控制、链接封装、日志记录的测试、登陆密文、修改密码后重新登陆、登陆失效时间。
5.分布式架构,对比传统架构的优势。
①最为明显的一点,在传统的架构中,如果某个功能需要进行维护,那么我们必须停掉整个服务,这对于公司的运营会造成损失。分布式系统在核心功能模块使用单独服务器,维护部分模块不影响用户的其他操作。
②在海量数据处理方面,传统架构显得比较乏力;分布式系统架构采用服务器集群,使用负载均衡,海量数据处理游刃有余!
③在性能(检索)以及维护方面,分布式系统架构也有较为明显的优势。
6.项目分了多少模块,你负责的是哪些模块,这些模块你用了什么测试技术
在项目中主要负责相关功能的开发,主要有:
后台管理系统:主要实现商品管理、商品规格参数管理、订单管理、会员管理等、CMS(内容管理系统)等,并且提供了跨域支持;
前台系统:主要是面向用户访问,使用 js、ajax 进行前后台数据交互(一般是用 json 格式数据返回)
会员登录:提供和用户信息相关的接口,比如说用户注册、查询等接口(登录时需要进行多重验证,特别注意安全方面)
订单功能:主要是提供和订单相关的业务接口,在订单系统了做了严格的数据校验以及高并发写的支持(这里可以说使用队列实现),并且使用了定时器实现对下单的时间控制,比如说关闭超时未付款的订单;
搜索功能:主要是提供商品的搜索,可以采用 Sphinx 全文搜索,当然也有其他的搜索方式;
会员系统:主要是维护用户的信息,已购买订单、优惠券、系统消息、修改密码、绑定手机等功能;
缓存:主要是用 Redis 实现,并且对 Redis 做了集群来保证 Redis 服务的高可用(缓存方面除了 redis 外还有 memcached)
支付系统:主要是负责订单的支付、对账等功能,主要是对接了支付宝的接口;
根据个人的实际情况选择最为熟悉的模块,进行叙述
7.你的项目上写了用了什么测试技术,面试官会展开的问你这个技术
8.这个项目一共写了多少测试用例,执行了多少时间,发现了多少个bug
- 这个项目你印象最深的bug是什么,后面怎么解决的
10.项目上线了吗?如果上线了在哪里可以看到,如果没有上线,为什么
11.你对项目的某某模块是怎么设计测试用例的,为什么这么设计
12.这个项目的数据库用的是什么,设计的表有多少张
13.这个项目后面有迭代吗?如果有是怎么迭代的,迭代后又是怎么进行测试的
14.这个项目有用到自动化测试吗?自动化测试脚本用什么语言写的,哪些模块用了自动化测试
15.项目周期,会问你这个项目做了多久,测试是什么时候介入的
16.对于大流量的网站,您采用什么样的方法来解决访问量问题?
17.Sql 语句的优化?
18.什么是页面静态化?
19.如何实现用户的安全登录?
20.Redis 有几种持久化的方式?redis 缺点是什么?
21.高并发如何处理?
受篇幅限制无法完整展示,以上面试题答案,文末进群领取答案
三、功能需求描述
登陆功能怎么测试?
1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录,能否能跳转到正确的页面 2.输入错误的用户名, 验证登录失败,并且提示相应的错误信息
3.输入错误的密码, 验证登录失败,并且提示相应的错误信息
4.用户名为空, 验证登录失败,并且提示相应的错误信息
5.密码为空, 验证登录失败,并且提示相应的错误信息
6.用户名和密码都为空,点击登陆
7.用户名和密码前后有空格的处理
性能方面的测试
1.打开登录页面,需要多长时间
2.输入正确的用户名和密码后,登录成功跳转到新页面,需要多长时间
安全性方面的测试
1.密码是否在前端加密,在网络传输的过程中是否加密
2.用户名和密码的输入框,能否防止SQL注入攻击
3.用户名和密码的输入框,能否防止XSS攻击
4.错误登陆的次数限制(防止暴力破解)
5.是否支持多用户在同一机器上登录
6.一个用户在不同终端上登陆
7.用户异地登陆
用户体验测试
1.页面布局是否合理,输入框和按钮是否对齐
2.输入框的大小和按钮的长度,高度是否合理
3.是否可以全用键盘操作,是否有快捷键
4.输入用户名,密码后按回车,是否可以登陆
5. 牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
兼容性测试
BS架构:不同浏览器测试,比如:IE,火狐,谷歌,360这些。
APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,华为,vivo,oppo等
支付功能怎么测试(特别重要)
1、从功能方面考虑
1)用户的使用场景:包括正常完成支付的流程;支付中断后继续支付的流程;支付中断后结束支付的流程;单订单支付的流程;多订单合并支付的流程;余额不足;未绑定银行卡;密码错误;密码错误次数过多;找人代付;弱网状态下,连续点击支付功能功能,会不会支付多次;分期付款等;
2)不同终端上支付:包括PC端的支付、笔记本电脑的支付、平板电脑的支付、手机端的支付等;
3)不同的支付方式:银行卡网银支付、支付宝支付、微信支付等;
4)从产品容错性上:包括支付失败后,能否再次支付、能否退款;
2、从性能方面考虑
多个用户并发支付能否成功;
支付的响应时间;
3、从安全性方面考虑
使用Fiddler拦截订单信息,并修改订单金额,或者修改订单号,(下两个订单A,B,付款时拦截订单B,并把订单B的订单号改为A订单的订单号)无法完成支付;
4、从用户体验方面考虑
是否支持快捷键功能;
点击付款按钮,是否有提示;
取消付款,是否有提示;
UI界面是否整洁;
输入框是否对齐,大小是否适中等。
5、兼容性
BS架构:不同浏览器测试。
APP:不同类型,不同分辨率,不同操作系统的手机上测试
购物车怎么测试?(特别重要)
1.功能测试
a)未登录时:
将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加。
b)登录后:
所有链接是否跳转正确;
商品是否可以成功加入购物车;
购物车商品总数是否有限制;
商品总数统计是否正确;
全选功能是否可用;
删除功能是否可用;
价格总计是否正确;
商品文字太长时是否显示完整;
购物车中下架的商品是否有标识,是否还能支付;
新加入购物车商品排序(添加购物车中存在的店铺的商品和购物车中不存在的店铺的商品); - 是否支持快TAB、ENTER等快捷键;
商品删除后商品总数是否减少;
收藏功能是否可用;
购物车结算功能是否可用。
2.兼容性测试
BS架构:不同浏览器测试,比如:IE,火狐,谷歌,360这些。
APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,华为,vivo,oppo等
3.用户体验测试
删除商品是否有提示;
是否支持快捷键功能;
是否有回到顶部的功能;
商品过多时结算按钮是否可以浮动显示;
购物车有多个商品时,能不能只对单个商品结算;
界面布局、排版是否合理;
文字是否显示清晰;
不同卖家的商品是否区分明显。
4.性能测试
打开购物车页面要多长时间
【电商项目实战】对应的相关文档,教程,源码可以下方卡片进群获取!