第一章 绪论
1.1 研究背景与意义
动漫爱好者面对海量作品时常陷入信息过载与选择困境,传统线下漫展、口口相传或早期门户网站单向资讯推送方式暴露出内容滞后、用户兴趣挖掘缺失、交互渠道狭窄等问题,无法满足爱好者对精准内容获取与社群归属感的需求[1]。电脑端与早期论坛的出现虽将信息获取方式从线下延伸至线上,但用户行为数据分散、推荐机制粗放、优质用户生成内容难以沉淀等短板持续存在,碎片化体验与更新延迟让用户难以高效触及契合自身偏好的动漫资源[2]。开发出基于大数据的动漫推荐系统之后,可以按照用户的喜好来生成个性化的推荐内容列表,把信息的传递由被动的接受转变为主动的匹配,从而大大提高内容分发的速度以及用户的粘性。本系统对于动漫行业的资源整合、用户参与质量以及社区生态的健康发展都起到实际的推动作用,也给垂直领域的兴趣服务平台的创建提供了一个可以复用的技术方案。
1.2 国内外研究现状
国内动漫推荐相关平台经历了从门户资讯聚合到垂直社区再向智能推荐系统演进的历程。早期新浪动漫、腾讯动漫等门户网站以编辑推荐与分类目录为主,用户互动形式有限,内容更新依赖人工维护[3]。随后AcFun、Bilibili等弹幕视频社区崛起,用户通过评论、弹幕、投稿等方式参与内容共创,基于标签的分类检索初步形成,但个性化推荐仍处于探索阶段[4]。移动互联网普及后,部分平台开始引入协同过滤与内容基推荐算法,根据用户观看历史与收藏行为生成推荐列表,但数据孤岛现象明显,跨平台行为难以整合[5]。近年来,国内学者围绕推荐算法优化展开深入研究,刘润嘉等提出基于大数据的学习资源推荐系统,验证了用户画像构建对推荐精度提升的有效性[6]。赵妮妮等利用图推荐算法解决稀疏数据下的冷启动问题,为动漫领域用户冷启动提供了参考思路[7]。胡江针对电网营销场景设计的精准推荐系统则展示了大数据技术在垂直领域深度应用的可能性[8]。国外动漫及相关内容推荐系统起步较早,数据驱动特征更为显著。早期MyAnimeList、Anime-Planet等动漫数据库网站依托用户评分与作品标签构建基础推荐能力,用户生成内容成为核心资源[9]。Tenzin等为数据科学学习平台设计的推荐系统强调多维度用户行为建模,在实时互动与个性化内容分发方面表现突出[10]。Tang与Zhang围绕文创产品推荐开展研究,基于用户行为数据的个性化设计方法对动漫周边推荐具有借鉴意义[11]。Pang设计的营养餐推荐系统展现了大数据在细分场景下的精准匹配能力,其数据预处理与特征工程方法可迁移至动漫内容分析领域[12]。Pinon等提出的业务驱动数据推荐系统则从管理视角强调了推荐机制与平台运营目标的协同关系。
1.3 主要研究内容
本课题以大数据为基础,对动漫推荐系统进行研究,主要目的是给动漫爱好者提供个性化的推荐服务,同时满足管理端高效运营的要求。系统主要面向普通用户和管理员两个角色,普通用户可以进行登录注册、动漫信息推荐浏览、榜单信息查询、新闻资讯查询、通知公告查询、浏览记录查询、评论管理等操作;管理员可以对动漫类型进行管理、数据信息进行管理、数据信息预测、动漫信息进行管理、榜单信息进行管理、系统进行管理、通知公告进行管理、新闻进行管理。按照软件工程规范的流程,对软件的需求进行分析、总体结构进行设计、功能模块进行划分、数据库进行设计、系统进行实现和测试等各个阶段的工作都完成了。系统采取前后端分离架构,前端用Vue框架创建用户界面,后端用Django框架加上MySQL数据库,用RESTful API达成数据交换。最终达到动漫内容个性化推荐、数据信息预测分析、多维度榜单配置、用户行为记录追踪等主要功能,努力解决动漫资源匹配效率低、内容管理流程繁杂的实际问题。
第二章 相关技术介绍
2.1 Django框架
Django作为一款基于Python语言的高级Web开发框架,遵循MTV设计模式,为快速构建安全、可扩展的Web应用提供了完整解决方案[13]。该框架的主要运行机制就是它的强大的对象关系映射组件,开发者只需要定义Python类就可以完成数据库表结构的映射,不需要编写原生SQL语句就可以执行复杂的数据库操作。Django内置的URL分发器把用户的请求精确地对应到视图函数上,视图层处理业务逻辑,调用模型层完成数据交互,最后把处理结果传给模板层渲染输出。框架中间件机制在请求进入视图之前和响应返回客户端之后都给开发人员留出了灵活的扩展空间,可以用来做用户认证、跨站请求伪造防护、会话管理等工作。本系统开发中Django框架负责所有的后端业务逻辑实现工作,普通用户动漫信息推荐请求经由视图层传入推荐算法模块,得到个性化的动漫内容列表,管理员对动漫类型、榜单信息、新闻通知等数据的管理操作借助模型层完成持久化保存,框架自带的后台管理系统也给管理员赋予了方便的数据维护入口。
2.2 Vue.js框架
Vue.js是一款渐进式JavaScript框架,专注于构建用户界面的视图层,其核心设计理念在于采用响应式数据绑定与组件化开发模式[14]。框架响应式系统使用Object.defineProperty或者Proxy实现数据劫持,当数据对象发生变化的时候可以自动追踪依赖并触发视图更新,开发者不需要手动操作DOM元素就可以完成界面渲染。组件化机制可以把页面分成独立可复用的组件单元,每个组件封装自身的数据、逻辑和样式,用属性传递和事件通信来实现组件间的交互。虚拟DOM技术的加入又提高了渲染速度,框架在数据发生变化的时候创建新的虚拟DOM树,并且和旧树做差分比较,把最小化更新的操作应用到真实的DOM上。本系统中Vue.js负责用户端和管理员端所有的交互界面,普通用户的动漫浏览页面使用组件嵌套的方式展示动漫列表、榜单排行、新闻资讯等模块,评论管理区域使用双向数据绑定实时响应用户输入的内容,管理员端的数据管理页面使用表格组件和表单组件完成动漫信息、类型配置、公告发布等操作的前端交互。
2.3 MySQL数据库技术
MySQL作为开源关系型数据库管理系统,以高并发处理能力、数据安全性保障与成熟的事务支持机制在Web应用领域占据重要地位[15]。该数据库使用的是客户端-服务器结构,用连接池来管理多个用户会话,每一个查询请求都会被解析器转换成抽象语法树,然后由查询优化器根据统计信息来决定最佳的索引以及表连接顺序,最后执行引擎才会给出结果集。InnoDB存储引擎是默认的选项,它具有行级锁和外键约束的功能,可以保证多用户同时写入的时候不会对数据的一致性和完整性造成破坏。索引机制是MySQL提高查询效率的重要手段,B+树索引结构把数据按照主键顺序排列,非主键索引保存指向主键索引的指针,从而减少磁盘I/O次数。本系统采用MySQL数据库来实现所有的业务数据持久化存储,用户信息表存放账号密码和注册时间,动漫信息表存作品名称、类型、评分、发布时间等字段,浏览记录表存用户和动漫的交互行为数据,评论表存用户对动漫作品的评价内容,管理员用数据信息管理功能对表中记录进行增删改查操作。
2.4 前后端分离架构
前后端分离架构将前端应用与后端服务解耦为两个独立部署的子系统,二者通过统一的接口契约进行数据交换。在该架构模式下,前端负责用户界面的呈现与交互逻辑处理,后端专注于业务规则实现与数据存取服务,双方仅通过HTTP请求与响应完成通信[16]。前端应用搭建完毕后部署到静态资源服务器上,用户访问的时候浏览器会加载并执行JavaScript代码,页面的渲染全部在前端完成。后端服务使用RESTful风格的接口对外提供功能,每一个接口都对应着具体的资源操作语义,用JSON格式来封装请求和响应的数据。本系统使用前后端分离架构来组织开发和部署,前端使用Vue.js应用通过axios库向Django后端发送异步请求获取动漫推荐数据、榜单信息和新闻内容,后端根据请求路径映射到对应的视图函数完成数据查询并返回JSON响应,前端接收到数据后动态更新页面视图。开发阶段前后端团队可以同时开展工作,后端编写接口文档供前端模拟数据调试,前端完成页面开发后连接真实接口进行联调测试。
第三章 系统分析
3.1 功能需求分析
普通用户在系统中可完成账号注册与登录操作,进入系统后浏览基于个人行为生成的动漫推荐内容,通过关键词检索或分类筛选方式查询榜单信息,查阅平台发布的新闻资讯与通知公告,查看个人历史浏览记录,对已观看的动漫作品发表评论并管理已发布的评论内容。普通用户角色用例图如图3-1所示。
图3-1普通用户用例图
管理员在系统中负责动漫类型数据的维护,对爬虫采集的动漫数据进行审核与管理,基于历史数据执行数据信息预测分析,维护动漫作品的基本信息与详细内容,配置各类榜单的展示规则与排序方式,管理系统轮播图等系统级配置,发布与编辑通知公告内容,管理新闻资讯的分类与内容。管理员角色用例图如图3-2所示。
图3-2管理员用例图
3.2 可行性分析
3.2.1 技术可行性
系统采用前后端分离架构,前端用Vue框架搭建用户界面,后端用Django框架处理业务逻辑,MySQL数据库用来数据持久化存储。Vue框架在单页面应用开发中有着成熟的组件化方案和响应式数据绑定机制,Django框架自带的ORM组件以及完备的认证授权模块,二者相融合可以实现系统的各项核心功能。MySQL数据库提供稳定的数据库存储服务,InnoDB存储引擎支持事务处理和行级锁,可以满足多用户并发场景下数据的一致性要求。开发人员前期已经掌握了Django框架的MTV模式以及Vue框架的组件化开发流程,并且对MySQL的SQL语句编写以及索引优化有所掌握。系统部署阶段会遇到爬虫模块对目标网站请求频率过高造成的IP被封堵问题,可以通过设置请求间隔时间和代理轮换策略来规避。因此,系统在技术方面是可行的。
3.2.2 操作可行性
系统界面的布局采用主流网站的设计惯例,导航栏位于页面的顶部,功能入口划分清楚,普通的用户不需要经过培训就可以完成账号注册、浏览内容、发表评论等一系列的操作。管理员后台用表格化的数据展示方式来展现信息,每一行数据都会配有独立的操作按钮,表单填写区域给出详细的字段说明,并且数据管理的过程和人工审核的习惯一致。系统上线之后,原来的线下漫展资讯获取和论坛信息检索的方式会被更加高效个性化的推荐以及关键词搜索所取代,用户的操作路径会变短。之后的维护工作只进行数据更新、系统配置调整两项工作,管理员在后台界面就可以完成,不需要对代码进行修改。因此,系统在操作方面是可行的。
3.2.3 经济可行性
项目开发投入主要依靠开发人员的人力成本,硬件设备使用的是现有的个人计算机,不需要再购买服务器设备。软件层采用开源技术栈,使用Django框架、Vue框架、MySQL数据库都可以,开发工具选择PyCharm社区版满足基本的开发需求。系统上线以后给动漫爱好者提供免费的推荐服务,不采用商业收费模式,运营成本主要是服务器运行电费和域名续费,总体投入规模小。系统实现的价值是提高用户获取内容的速度、规范管理平台的过程,投入和产出的关系是合理的因此,系统在经济方面是可行的。
第四章 系统实现
4.1 普通用户功能实现
4.1.1 登录注册功能实现
用户通过前端页面提交登录信息,LoginController类的login方法接收用户名与密码参数,调用UserService的getObj方法查询用户账户表进行身份验证。注册时RegisterController类的register方法校验用户名唯一性后调用UserService的add方法写入用户账户表,同时在ordinary_user表生成关联的用户扩展信息。登录注册界面如图5-1所示。
图5-1登录注册界面
核心代码实现如下:
public Resultlogin(@RequestBody User user) {
User loginUser = userService.getObj(new QueryWrapper<User>()
.eq("username",user.getUsername())
.eq("password",user.getPassword()));
if (loginUser != null) {String token = UUID.randomUUID().toString();
return Result.success(token);
}
return Result.error("用户名或密码错误");
}
4.1.2 动漫信息推荐浏览功能实现
用户访问推荐页面时,RecommendController类的getRecommendList方法获取当前登录用户的浏览记录与评论行为数据,调用RecommendService的calculateSimilarity方法计算动漫作品相似度矩阵,基于协同过滤算法生成个性化推荐列表并返回前端展示。推荐列表按预测评分降序排列,用户刷新页面可触发重新计算。动漫信息推荐浏览界面如图5-2所示。
图5-2动漫信息推荐浏览界面
核心代码实现如下:
public List<AnimationInformation>getRecommendList(Integer userId) {
List<History> historyList = historyService.list(new QueryWrapper<History>().eq("user_id", userId));
List<Comment> commentList = commentService.list(new QueryWrapper<Comment>().eq("user_id", userId));
List<Integer> interactedIds =extractInteractedIds(historyList, commentList);
List<AnimationInformation> allAnime = animationService.list();
return recommendService.collaborativeFilter(allAnime, interactedIds);
}
4.1.3 榜单信息查询功能实现
用户进入榜单页面后,RankingController类的getRankingList方法接收榜单类型参数,调用RankingService的getRankingData方法从ranking_information表中查询符合条件的记录。查询结果按追番人数或播放量等指标降序排列,支持分页加载与关键词检索。榜单信息查询界面如图5-3所示。
图5-3榜单信息查询界面
核心代码实现如下:
public List<RankingInformation>getRankingList(String rankingType, Integer page, Integer size) {
QueryWrapper<RankingInformation> wrapper = new QueryWrapper<>();
wrapper.eq("summary_type", rankingType);
wrapper.orderByDesc("follower_num");
Page<RankingInformation> pageParam = new Page<>(page, size);
Page<RankingInformation> result = rankingService.page(pageParam, wrapper);
returnresult.getRecords();
}
4.1.4 新闻资讯查询功能实现
用户点击新闻资讯菜单后,NewsController类的getNewsList方法接收分类参数与分页条件,调用ArticleService的list方法从article表中查询新闻内容。文章按发布时间倒序排列,每条记录包含标题、正文摘要、封面图片与创建时间字段。新闻资讯查询界面如图5-4所示。
图5-4新闻资讯查询界面
核心代码实现如下:
public List<Article>getNewsList(String type, Integer page, Integer size) {
QueryWrapper<Article> wrapper = new QueryWrapper<>();
wrapper.eq("type", type);
wrapper.orderByDesc("create_time");
Page<Article> pageParam = new Page<>(page, size);
Page<Article> result = articleService.page(pageParam, wrapper);
returnresult.getRecords();
}
4.1.5 通知公告查询功能实现
用户访问通知公告板块时,NoticeController类的getNoticeList方法调用NoticeService的list方法从notice表中获取公告列表。公告按更新时间倒序排列,每条记录展示标题与正文内容。通知公告查询界面如图5-5所示。
图5-5通知公告查询界面
核心代码实现如下:
public List<Notice>getNoticeList(Integer page, Integer size) {
QueryWrapper<Notice> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("update_time");
Page<Notice> pageParam = new Page<>(page, size);
Page<Notice> result = noticeService.page(pageParam, wrapper);
returnresult.getRecords();
}
4.1.6 浏览记录查询功能实现
用户在个人中心查看浏览历史时,HistoryController类的getHistoryList方法获取当前登录用户ID,调用HistoryService的list方法从history表中查询该用户的浏览记录。查询结果按创建时间倒序排列,每条记录包含动漫标题与封面图片信息。浏览记录查询界面如图5-6所示。
图5-6浏览记录查询界面
核心代码实现如下:
public List<History>getHistoryList(Integer userId, Integer page, Integer size) {
QueryWrapper<History> wrapper = new QueryWrapper<>();
wrapper.eq("user_id", userId);
wrapper.orderByDesc("create_time");
Page<History> pageParam = new Page<>(page, size);
Page<History> result = historyService.page(pageParam, wrapper);
returnresult.getRecords();
}
4.1.7 评论管理功能实现
用户在动漫详情页提交评论时,CommentController类的addComment方法接收评论内容与动漫ID,调用CommentService的add方法写入comment表,同时更新animation_information表中的评论数字段。用户可在个人中心查看已发布评论并执行删除操作。评论管理界面如图5-7所示。
图5-7评论管理界面
核心代码实现如下:
public ResultaddComment(@RequestBody Comment comment) {
comment.setCreateTime(newDate());
boolean saved = commentService.save(comment);
if (saved) {
AnimationInformation anime = animationService.getById(comment.getSourceId());
anime.setCommentLen(anime.getCommentLen() + 1);animationService.updateById(anime);
return Result.success("评论成功");
}
return Result.error("评论失败");
}
4.2 管理员功能实现
4.2.1 动漫类型管理功能实现
管理员进入动漫类型管理页面时,AnimationTypeController类的getTypeList方法调用AnimationTypeService的list方法获取所有动漫类型记录。新增类型时addType方法校验类型名称唯一性后调用add方法写入animation_type表。编辑与删除操作分别调用updateById与removeById方法。动漫类型管理界面如图5-8所示。
图5-8动漫类型管理界面
核心代码实现如下:
public List<AnimationType>getTypeList() {
return animationTypeService.list();
}
public ResultaddType(@RequestBody AnimationType type) {
AnimationType exist = animationTypeService.getOne(new QueryWrapper<AnimationType>()
.eq("animation_type",type.getAnimationType()));
if (exist != null) {
return Result.error("类型已存在");
}
animationTypeService.save(type);
return Result.success("添加成功");
}
4.2.2 数据信息管理功能实现
管理员在数据信息管理页面查看爬虫采集的动漫数据,DataInformationController类的getDataList方法调用DataInformationService的page方法实现分页查询。数据审核操作通过updateDataStatus方法修改记录状态,删除操作调用removeById方法移除无效数据。数据信息管理界面如图5-9所示。
图5-9数据信息管理界面
核心代码实现如下:
public Page<DataInformation>getDataList(Integer page, Integer size) {
Page<DataInformation> pageParam = new Page<>(page, size);
return dataInformationService.page(pageParam);
}
public ResultdeleteData(Integer id) {
boolean removed = dataInformationService.removeById(id);
returnremoved ?Result.success("删除成功") : Result.error("删除失败");
}
4.2.3 数据信息预测功能实现
管理员选择动漫作品执行预测分析时,DataForecastController类的forecast方法接收作品ID,调用DataInformationService的getById获取历史播放量数据,通过ForecastService的decisionTreePredict方法调用决策树模型计算预测值。预测结果以图表形式展示,同时将结果存入data_information_forecast表。数据信息预测界面如图5-10所示。
图5-10数据信息预测界面
核心代码实现如下:
public ForecastResultforecast(Integer dataId) {
DataInformation data = dataInformationService.getById(dataId);
List<Double> historyData = parseHistoryData(data.getViewNum());
Double predictedValue = forecastService.decisionTreePredict(historyData);
DataInformationForecast forecast = newDataInformationForecast();
forecast.setTitleName(data.getTitleName());forecast.setViewNum(predictedValue.toString());
forecastService.save(forecast);
return newForecastResult(historyData, predictedValue);
}
4.2.4 动漫信息管理功能实现
管理员维护动漫作品信息时,AnimationController类的getAnimationList方法从animation_information表分页查询动漫数据。新增动漫时addAnimation方法校验标题唯一性后写入数据库,编辑操作调用updateById更新字段,删除操作执行removeById移除记录。动漫信息管理界面如图5-11所示。
图5-11动漫信息管理界面
核心代码实现如下:
public Page<AnimationInformation>getAnimationList(Integer page, Integer size) {
Page<AnimationInformation> pageParam = new Page<>(page, size);
return animationService.page(pageParam);
}
public ResultupdateAnimation(@RequestBody AnimationInformation anime) {
boolean updated = animationService.updateById(anime);
returnupdated ?Result.success("更新成功") : Result.error("更新失败");
}
4.2.5 榜单信息管理功能实现
管理员配置榜单规则时,RankingController类的updateRankingRule方法接收榜单类型与排序字段参数,调用RankingService的generateRanking方法从animation_information表中筛选符合条件的作品并写入ranking_information表。榜单列表通过getRankingList方法查询展示。榜单信息管理界面如图5-12所示。
图5-12榜单信息管理界面
核心代码实现如下:
public ResultupdateRankingRule(String rankingType, String sortField) {
List<AnimationInformation> sourceList = animationService.list(new QueryWrapper<AnimationInformation>()
.orderByDesc(sortField));
rankingService.clearRanking(rankingType);
for (int i = 0; i < sourceList.size() && i < 100; i++) {
RankingInformation ranking = buildRanking(sourceList.get(i), rankingType, i + 1);
rankingService.save(ranking);
}
return Result.success("榜单生成成功");
}
4.2.6 系统管理功能实现
管理员管理系统轮播图配置时,SlidesController类的getSlidesList方法调用SlidesService的list方法获取轮播图列表。新增轮播图时uploadImage方法处理图片上传,addSlides方法保存轮播图信息。编辑与删除操作分别调用updateById与removeById方法。系统管理界面如图5-13所示。
图5-13系统管理界面
核心代码实现如下:
public List<Slides>getSlidesList() {
return slidesService.list();
}
public ResultaddSlides(@RequestBody Slides slides) {
slides.setCreateTime(newDate());
boolean saved = slidesService.save(slides);
returnsaved ?Result.success("添加成功") : Result.error("添加失败");
}
4.2.7 通知公告管理功能实现
管理员发布通知公告时,NoticeController类的addNotice方法接收标题与正文内容,调用NoticeService的add方法写入notice表。公告列表通过getNoticeList方法分页查询,编辑与删除操作分别调用updateById与removeById方法。通知公告管理界面如图5-14所示。
图5-14通知公告管理界面
核心代码实现如下:
public ResultaddNotice(@RequestBody Notice notice) {
notice.setCreateTime(newDate());
boolean saved = noticeService.save(notice);
returnsaved ?Result.success("发布成功") : Result.error("发布失败");
}
public ResultdeleteNotice(Integer id) {
boolean removed = noticeService.removeById(id);
returnremoved ?Result.success("删除成功") : Result.error("删除失败");
}
4.2.8 新闻管理功能实现
管理员维护新闻资讯时,NewsController类的getNewsList方法从article表分页查询新闻内容。新增新闻时addNews方法接收标题、正文与分类参数,调用ArticleService的add方法写入数据库。编辑操作调用updateById更新,删除操作调用removeById移除记录。新闻管理界面如图5-15所示。
图5-15新闻管理界面
核心代码实现如下:
public Page<Article>getNewsList(Integer page, Integer size) {
Page<Article> pageParam = new Page<>(page, size);
return articleService.page(pageParam);
}
public ResultaddNews(@RequestBody Article article) {
article.setCreateTime(newDate());
boolean saved = articleService.save(article);
returnsaved ?Result.success("发布成功") : Result.error("发布失败");
}
第五章 系统测试
5.1 测试目的
系统测试旨在验证动漫推荐系统的功能完整性、性能稳定性与数据准确性。通过模拟真实用户操作场景,检验登录注册、动漫推荐浏览、榜单查询、新闻资讯查阅、评论管理等模块是否满足预设需求。测试过程重点关注推荐算法的准确性与响应时效,验证爬虫采集数据的完整性,确认管理员后台各项管理功能的可用性。通过测试发现系统潜在缺陷并及时修复,确保系统上线后能够稳定运行,为用户提供流畅的推荐服务与内容浏览体验[18]。
5.2 测试方法
系统测试用黑盒测试和白盒测试相结合的方法。黑盒测试根据各个功能模块来设计测试用例,对正常的操作流程以及异常的输入情况加以考察,检验功能实现是否达到预期的需求。白盒测试对核心业务逻辑做代码覆盖分析,主要是对推荐算法模块路径覆盖、分支覆盖进行分析。功能测试用等价类划分、边界值分析法来设计测试数据,性能测试用JMeter工具模拟多用户并发访问场景,验证系统在高负载情况下响应时间和吞吐量。测试环境配置与生产环境保持一致,确保测试结果具有参考价值[19]。
5.3 测试内容
动漫信息推荐浏览测试旨在验证推荐引擎能否依据用户历史行为生成个性化内容列表,确保推荐结果与用户偏好匹配度达到预期标准。动漫信息推荐浏览测试如表6-1所示。
表6-1动漫信息推荐浏览测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 推荐列表生成 | 验证推荐算法根据用户行为生成个性化列表 | 模拟用户浏览动漫并产生观看记录,访问推荐页面 | 系统返回包含与浏览记录相似类型的动漫作品列表 | 符合预期 |
| 推荐内容刷新 | 验证用户刷新操作后推荐列表重新计算 | 用户多次刷新推荐页面 | 每次刷新返回的推荐列表内容存在合理变化 | 符合预期 |
| 新用户推荐 | 验证无历史行为用户获得默认热门推荐 | 新注册用户访问推荐页面 | 系统返回热门动漫或综合评分较高的作品列表 | 符合预期 |
榜单信息查询测试旨在验证榜单模块能否按预设规则准确筛选动漫作品并按指标正确排序,确保用户查询各类型榜单时获取数据准确完整。榜单信息查询测试如表6-2所示。
表6-2榜单信息查询测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 追番榜查询 | 验证按追番人数排序的榜单生成正确 | 用户选择追番榜类型发起查询 | 系统返回按追番人数降序排列的动漫列表 | 符合预期 |
| 播放量榜查询 | 验证按总播放量排序的榜单数据准确 | 用户选择播放量榜类型发起查询 | 系统返回按总播放量降序排列的动漫列表 | 符合预期 |
| 榜单筛选查询 | 验证按动漫类型筛选榜单的功能有效 | 用户选择特定动漫类型后查询榜单 | 系统返回符合所选类型的动漫作品榜单 | 符合预期 |
评论管理测试旨在验证用户评论的发布、展示与删除流程能否完整执行,确保评论内容与对应动漫正确关联且计数更新准确。评论管理测试如表6-3所示。
表6-3评论管理测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 评论发布 | 验证用户提交评论后数据正确写入数据库 | 用户登录后进入动漫详情页填写评论并提交 | 系统保存评论内容,动漫详情页展示新增评论 | 符合预期 |
| 评论计数更新 | 验证发布评论后动漫作品的评论数字段同步增加 | 用户对某部动漫发布新评论 | 系统自动更新该动漫评论数字段,数值增加1 | 符合预期 |
| 评论删除 | 验证用户删除已发布评论后记录移除 | 用户进入个人中心删除已发表的评论 | 系统移除评论记录,动漫详情页不再显示该评论 | 符合预期 |
数据信息管理测试旨在验证管理员对爬虫采集数据的审核、编辑与删除操作能否正确执行,确保数据管理流程完整且数据库记录同步更新。数据信息管理测试如表6-4所示。
表6-4数据信息管理测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 数据审核 | 验证管理员审核通过后数据状态变更 | 管理员在数据信息列表选择待审核记录执行审核操作 | 系统更新记录审核状态,数据在前端正常展示 | 符合预期 |
| 数据编辑 | 验证管理员修改数据信息后内容正确保存 | 管理员选择数据记录修改标题或类型字段并保存 | 系统更新对应记录字段,前端展示修改后内容 | 符合预期 |
| 数据删除 | 验证管理员删除无效数据后记录移除 | 管理员选择数据记录执行删除操作 | 系统从数据库移除该记录,列表不再显示 | 符合预期 |
数据信息预测测试旨在验证预测模块能否基于历史数据调用决策树模型生成预测结果,确保预测值与模型输出一致且图表正确生成。数据信息预测测试如表6-5所示。
表6-5数据信息预测测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 预测数据加载 | 验证管理员选择作品后系统正确加载历史数据 | 管理员进入预测模块选择待预测动漫作品 | 系统展示该作品历史播放量与点赞数量等数据 | 符合预期 |
| 预测结果生成 | 验证模型调用后输出预测数值 | 管理员点击预测按钮执行预测分析 | 系统返回预测数值并展示于预测结果区域 | 符合预期 |
| 预测图表展示 | 验证预测结果以可视化图表形式呈现 | 预测完成后查看结果展示页面 | 系统生成包含历史曲线与预测点的图表 | 符合预期 |
动漫信息管理测试旨在验证管理员对动漫作品信息的增删改查操作能否正确执行,确保前端展示数据与数据库存储内容保持同步。动漫信息管理测试如表6-6所示。
表6-6动漫信息管理测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 动漫信息新增 | 验证管理员添加新动漫作品后数据正确入库 | 管理员填写动漫信息表单提交新增请求 | 系统保存动漫记录,前端列表展示新增作品 | 符合预期 |
| 动漫信息编辑 | 验证管理员修改动漫信息后内容更新 | 管理员选择已有作品修改评分或类型字段 | 系统更新对应记录,前端详情页展示修改内容 | 符合预期 |
| 动漫信息删除 | 验证管理员删除动漫作品后记录移除 | 管理员选择动漫作品执行删除操作 | 系统移除记录及关联评论,列表不再显示 | 符合预期 |
榜单信息管理测试旨在验证管理员配置榜单规则后系统能否自动筛选作品并按规则排序生成榜单数据,确保榜单内容与配置条件一致。榜单信息管理测试如表6-7所示。
表6-7榜单信息管理测试用例表
| 测试项 | 测试目的 | 测试步骤 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 榜单规则配置 | 验证管理员设置的排序字段生效 | 管理员选择榜单类型并设置按点赞数排序规则 | 系统保存配置规则,后续生成榜单按点赞数排序 | 符合预期 |
| 榜单自动生成 | 验证配置规则后系统自动筛选生成榜单 | 管理员完成规则配置后触发榜单生成 | 系统从动漫信息表筛选符合条件的作品生成榜单 | 符合预期 |
| 榜单内容展示 | 验证生成的榜单数据准确呈现 | 用户访问前端榜单页面查看指定类型榜单 | 榜单按规则排序展示,数据与配置条件匹配 | 符合预期 |
测试结论
系统功能测试共有7个主要模块用例测试,分别是动漫信息推荐浏览、榜单信息查询、评论管理、数据信息管理、数据信息预测、动漫信息管理、榜单信息管理。测试时各个模块按照预先设定的测试步骤进行。动漫推荐模块根据用户的行为了数据来生成个性化的列表,榜单查询模块按照配置的规则进行正确的排序,评论模块的发布和删除操作会同步更新计数,数据信息管理模块的增删改查功能齐全,数据预测模块的模型调用之后会输出数值并和图表联动,动漫信息和榜单信息管理模块的编辑和删除操作正确地更新数据库中的记录。
项目分享:大家可自取用于参考学习,获取方式可私信哦!