小说书架内容质量自动化测试

一.项目背景

小说书架的产品思路是:在手机QQ浏览器这个平台上,给用户提供一个小说书架这样的小说阅读入口。通过这个入口阅读到的小说,是后台将从其它网页中抽取到小说的目录,内容进行过滤,拼接,存储等加工的,用户可以免费看到纯净的完整小说。小说书架有几个重要的特点:免费,追新能力强,内容完整而且正确。

“内容完整和正确”反映的是小说内容的质量,而一本网络小说往往有成百上千个章节,一个一章节一个章节,一本书一本书的去人工核对每一章的完整性和正确性是很不现实而且效率低下的,因此我们考虑通过自动化的方式实现小说内容质量的测试。

二.测试目标

小说内容质量方面常见的有四个方面的问题:章节重复(重章),出现与正文无关的多余章节(多章),章节标题或内容错误(错章),缺少某些章节(缺章)。本次测试目标主要围绕着这四项进行,对测试结果有要求如下:

表1.内容质量测试项和目标

测试点

预期输出

重章

重复章节的标题、章节号、这些章节在目录中出现的位置(serialid)

多章

多余章节的标题、这些章节在目录中出现的位置(serialid)

错章

错章节标题、章节号、本章小说书架和源的url、本书小说书架和源的url

缺章

缺章的标题、章节号、可以抽取到该章节的源的url

三.测试思路

测试的过程中,我们要先弄明白我们要测试的对象,找准对象后就可以比较有针对性的设计测试方法。

此外,我们测试的内容涉及到错章和缺章,而只有对比,才能发现哪些是“错”,哪些是“缺”。

理想的情况下,我们将小说书架上的书与始发站点的该书做对比,得到的缺章,错章数据是最准确的,但是由于小说书架上的书来源有很多,每个始发站点上内容的抽取方式都不同,因此将小说书架上的书与始发站点的书做对比不是很现实。

百度小说是与小说书架比较类似的产品,考虑到百度是以搜索为主要业务的公司,我们认为百度小说在技术方面比如搜索小说的能力,拉取数据的能力是比较可靠的。

在这种情况下,我们选择将小说书架上的书与百度小说中的该书进行对比,来考量小说书架错章和缺章的情况。我们的主要思路如下:

(1)测试过程考量的对象

小说书架的内容质量有两项:目录的质量和正文的质量,这两者其中任何一项有问题,都会影响到小说的整体质量,因此在进行内容质量测试的过程中,我们主要围绕着目录和内容这两点进行。

(2)小说书架自比发现重章

图1.判断重章的逻辑图

从上面的逻辑图中我们可以看出,判断小说书架是否有重章只需要小说书架的目录中的章节标题自比即可,不需要与百度小说的目录进行对比。

(3) 与百度小说比较发现错章和缺章

图2.判断错章和缺章的示意图

我们测试小说书架是否缺章和错章的思路如上图2所示:

左边的圆代表小说书架中《致青春》这本书目录中章节标题的集合,右边的圆代表百度小说中《致青春》这本书目录中章节标题的集合。

当两个集合中某两个标题的相似度大于70%的时候,我们认为这两个标题处于两个圆的交集中(区域B),即小说书架和百度小说中都有这一章,而且这一章是正确的。

余下的区域C代表百度小说中有,但是小说书架中没有的章节,这表明区域C很有可能是小说书架缺少的章节;区域A代表小说书架中有,百度小说中没有的章节,我们判定区域A中可能含有小说书架错误的章节。

(4)无章节编号的章节为多余章节

通过对小说书架中Top103本书籍的统计,我们发现小说章节题目的构成方式和每种方式所占的百分比如下表:

表2.章节题目的主要构成方式及所占比例

章节题目构成方式

所占百分比

章节号+章节题目

95.15%

仅章节号

2.91%

仅章节题目

1.94%

由上表我们可以看出,绝大多数书籍的目录中都是有章节号和章节题目的,而且通过观察发现,当这类书籍中出现无章节号的章节时,往往这个章节就是广告等与正文无关的内容。 因此,我们判定:当目录中某一张没有章节号时,这一章为与正文内容无关的章节。

四.关键技术

在实现本次内容质量自动化测试的过程中,主要涉及到的几项关键技术如下:

(1)对百度小说分析抽取百度小说的目录,主要思路如下

图3.获取百度小说目录的逻辑图

(2)文本相似度分析

在本次测试中,有两处需要用到文本的相似度:对比百度小说章节标题和小说书架章节标题的相似度,以及对比小说书架中章节题目相同的章节的内容的相似度。

在进行文本相似度分析的过程中,我们主要用到了文本编辑距离算法(Levenshtein),我们记文本text1和文本text2的相似度为:Levenshtein.ratio(text1,text2)。

考虑到中文汉字中容易出现同音字,而且现在拼音输入法普及度很高,章节标题中可能会有很大概率出现一些不影响语义的同音字。因此在进行文本相似度分析的时候,我们采取了分析汉字相似度和拼音相似度之后,取平均值的策略。

(3)小说书架上的小说分析

小说书架中提取书籍目录的时候,需要用到书名,书的id号,书的总章节数等信息,这些信息都可以通过构造url,发送http请求,并对获取到的json格式的内容进行分析即可得到。

在进行重章定位的时候,我们需要定位到目录中出现重复章节的章节名,以及这些章节的位置。

五.实现方法

在第二部分和第三部分中我们列出了本次自动化测试中的主要思路和涉及到的关键技术,在这里我们给出整个逻辑流程图:

图4.整体逻辑流程图

六.测试结果

测试得到的数据我们分别存在不同的文件中,如下图所示,其中“1000020350”是《校花的贴身高手》这本书的id号,在小说书架中,每本书的id号都是独一无二的。

图5.测试结果示意图

在不同的表格中,我们根据测试目标,写入书名,重复章节号,等信息,如下图所示为重章情况下的表格内容:

图6.重章数据的表格结构

通过对目前测试结果的分析可以发现输出的表格中重章和多余章节的数据是相当准确的,几乎不需要人工检验即可,但是错章和缺章的数据还需要人工进行校验。

七.问题与展望

目前的测试结果中还存在不尽满意的地方:

1) 错章和缺章的数据还需要进行人工校验,输出的章节中,部分章节并不属于缺章或者错章,而是误判,因此需要人工对输出数据进行检验;

2) 由于程序中需要发送url的次数比较多,因此会存在某些书籍需要花费较长的时间才能跑出最终结果。

因此下一步的工作中,希望对程序进行优化和改进,来进一步提高错章和缺章输出的数据的准确率,并且提高程序的效率,缩短输出结果所需要的时间。

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2016-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

python与数据科学应用

数据科学简介与应用 数据科学主要以统计学、机器学习、数据可视化以及(某一)领域知识为理论基础,其主要研究内容包括数据科学基础理论、数据预处理、数据计算和数据管...

3815
来自专栏tkokof 的技术,小趣及杂念

Coroutine,你究竟干了什么?

  使用Unity已经有一段时间了,对于Component、GameObject之类的概念也算是有所了解,而脚本方面从一开始就选定了C#,目前来看还是挺明智的:...

571
来自专栏微信公众号:Java团长

开发中我们需要遵循的几个设计原则!

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则和具体阐...

1051
来自专栏大闲人柴毛毛

高质量编程的金玉良言——开放-封闭原则

什么是“开放-封闭”原则? 软件的类、模块、函数等交付后,如果需要增加功能,不要去修改原来的代码,而是通过新增加类的方法去扩展功能。 所谓的“开放”就是指开放接...

38612
来自专栏Dawnzhang的开发者手册

开发中我们需要遵循的几个设计原则!(转)

在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则和具体阐...

1352
来自专栏微信小程序开发

小程序支付,再来说说JS浮点数的坑

前言:客服收到报名工具小程序用户反馈:创建报名时,输入19.9元,但是,保存的是19.89元。很明显,这是前端的一个坑,JS浮点数的坑。

4732
来自专栏码农阿宇

设计模式快速学习(一)

UML类图 ? 简单工厂模式 1.1类图 ? 策略模式 2.1策略模式结构图 ? 2.2策略模式解析 策略模式时一种定义一系列算法的方法,从概念上看,所有这...

2593
来自专栏iOS 开发

iOS 代码使用 C++ 的 zero-cost abstraction 特性

1993
来自专栏养码场

若你想入职面试阿里系公司,不妨看看这位资深Java的面试经

上上周分享了占小狼面试阿里系的面经文章:《一位资深Java的阿里系公司实战面试经验,套路还是面试官的多》 ,蛮受大家欢迎的。看到大家在社群里的好评与点赞,占小狼...

2102
来自专栏牛客网

听说有人想要爱奇艺面经?

2230

扫码关注云+社区

领取腾讯云代金券