小说爬取的软件测试
由于测试程序可正常运行,下面省略单元测试:
测试计划
一、测试目标
- 验证程序从获取URL列表、处理网页内容到最终保存文件的整个流程能够顺利完成,确保各个函数之间协作正常,无数据丢失或错误。
- 确认程序在多线程环境下能够正确处理每个章节的网页内容下载、转换和保存操作,线程相关的计时和信息输出准确。
- 检查程序在面对各种异常情况(如网络异常、文件读取失败等)时的处理能力,确保程序不会因异常而崩溃,且能给出合理的错误提示。
- 从用户角度出发,模拟实际使用场景,验证程序是否能完整地完成从指定小说网页抓取内容并转换保存为Markdown文件的功能,生成的文件内容符合预期且可正常阅读使用。
二、测试策略
- 集成测试:按照程序的主要流程进行测试,关注不同函数之间的调用和数据传递是否正确,重点检查整体流程的连贯性和正确性。例如,从获取小说首页URL开始,依次经过获取URL列表、读取CSS字典、处理每个章节的网页内容并最终保存为Markdown文件的整个过程。
- 功能测试:模拟实际用户使用场景,输入不同的有效小说网页URL及对应的CSS URL,运行程序,检查最终生成的Markdown文件内容是否完整、准确,格式是否符合要求,能否清晰呈现小说内容。同时验证程序对不同小说网页的通用性。
- 异常测试:故意制造各种异常情况,如传入错误的URL、模拟网络中断、删除必要文件等,检查程序在异常情况下的处理是否符合预期,如是否能正确提示错误信息,是否会导致程序崩溃等。
三、测试资源
- 人力资源:安排至少一名熟悉Python编程和测试的测试人员负责本次测试工作。
- 测试设备:普通PC机,具备网络连接功能,能够正常运行程序所需的环境。
- 测试工具:可使用一些网络模拟工具(如
pytest-responses等,若有需要更精细地模拟网络请求和响应情况)辅助进行异常测试。
四、测试进度安排(忽略)
第一阶段:测试准备(1天)
- 熟悉程序代码逻辑和功能需求。
- 搭建测试环境,确保所需的库(如
requests、BeautifulSoup、yaml等)都能正确安装和运行。
第二阶段:集成测试(2天)
- 编写集成测试用例,按照程序的主要流程进行测试,涵盖从获取URL到最终保存文件的完整流程。
- 执行集成测试用例,重点关注函数之间的协作是否正常,数据传递是否准确,记录测试结果,对发现的问题及时反馈给开发人员进行修复。
第三阶段:功能测试(2天)
- 模拟实际使用场景,选取多个不同的有效小说网页及对应的CSS URL,运行程序,检查最终生成的Markdown文件内容是否完整、准确。
- 对生成的文件内容进行人工阅读检查,确保其能清晰呈现小说的文本内容,符合用户阅读需求。同时验证程序对不同小说网页的通用性。
第四阶段:异常测试(2天)
- 故意制造各种异常情况,如传入错误的URL(包括小说首页URL、CSS
URL等)、模拟网络中断、删除必要文件(如
urls.yaml、css_dict.yml等)。 - 检查程序在异常情况下的处理是否符合预期,如是否能正确提示错误信息,是否会导致程序崩溃等,记录测试结果。
第五阶段:测试总结(1天)
- 汇总各个阶段的测试结果,计算缺陷率等指标。
- 编写测试总结报告,对程序的质量进行评估,提出改进建议(如果有)。
测试设计
一、集成测试用例
- 测试用例1:完整流程测试
- 输入:一个有效的小说首页URL,如
https://www.qianbiwenxue.com/noval/41497273.html和对应的css_url,如https://www.qianbiwenxue.com/static/css/fonts.css?v=c560a92cd812e57bb8e2e8fdde5f1650。 - 预期输出:在
无敌剑域目录下成功生成所有章节对应的.md文件,且文件内容为处理后的Markdown格式内容,格式正确,无乱码等问题,同时控制台输出每个线程的下载完成信息以及最终是否全部成功的提示信息。 - 测试步骤:
- 按照程序的主流程,依次调用
read_urls、read_css_dict等函数获取所需的数据。 - 调用
process_html_pages函数通过线程池处理每个章节的网页内容。 - 检查
无敌剑域目录下是否生成了所有预期的.md文件。 - 读取每个生成的
.md文件内容,检查其格式是否符合Markdown规范,并且内容与预期处理后的内容一致。 - 检查控制台输出是否包含正确的线程下载完成信息以及最终是否全部成功的提示信息。
- 按照程序的主流程,依次调用
- 输入:一个有效的小说首页URL,如
二、功能测试用例
- 测试用例1:抓取小说内容并转换保存
- 输入:不同的有效小说首页URL及对应的CSS URL,例如:
- 小说1:
https://www.qianbiwenxue.com/noval/41497273.html和https://www.qianbiwenxue.com/static/css/fonts.css?v=c560a99cd812e57bb8e2e8fdde5f1650 - 小说2:
https://www.anothernovel.com/noval/12345678.html和https://www.anothernovel.com/static/css/fonts.css?v=abcdef1234567890
- 小说1:
- 预期输出:在
无敌剑域目录下分别成功生成对应小说所有章节的.md文件,且文件内容为处理后的Markdown格式内容,格式正确,无乱码等问题,生成的文件内容能够完整准确地呈现小说的文本内容(通过人工阅读对比)。 - 测试步骤:
- 运行程序,分别传入上述不同小说的首页URL和CSS URL。
- 等待程序运行完成。
- 检查
无敌剑域目录下是否生成了所有预期的.md文件。 - 随机抽取生成的
.md文件,人工阅读其内容,检查是否能完整准确地呈现小说的相应章节内容。
- 输入:不同的有效小说首页URL及对应的CSS URL,例如:
三、异常测试用例
- 测试用例1:传入无效小说首页URL
- 输入:一个无效的小说首页URL,如
https://www.invalid_url.com。 - 预期输出:程序能够正确处理异常,在控制台输出相应的错误信息,如
读取本地:urls的相关错误提示,并且不会导致程序崩溃。 - 测试步骤:
- 运行程序,传入上述无效小说首页URL。
- 观察控制台输出,检查是否有正确的错误提示,并且程序是否继续运行(未崩溃)。
- 输入:一个无效的小说首页URL,如
- 测试用例2:传入无效CSS URL
- 输入:一个无效的CSS
URL,如
https://www.invalid_css_url.com。 - 预期输出:程序能够正确处理异常,在控制台输出相应的错误信息,如
读取本地:css_dict的相关错误提示,并且不会导致程序崩溃。 - 测试步骤:
- 运行程序,传入上述无效CSS URL。
- 观察控制台输出,检查是否有正确的错误提示,并且程序是否继续运行(未崩溃)。
- 输入:一个无效的CSS
URL,如
- 测试用例3:模拟网络中断
- 输入:使用网络模拟工具在程序请求网页(如获取网页源码、读取CSS内容等)时模拟网络中断情况。
- 预期输出:程序能够正确处理异常,在控制台输出相应的错误信息,如网络请求失败的相关提示,并且不会导致程序崩溃。
- 测试步骤:
- 借助网络模拟工具,在程序执行到相关网络请求操作时,触发网络中断模拟。
- 观察控制台输出,检查是否有正确的错误提示,并且程序是否继续运行(未崩溃)。
- 测试用例4:删除必要文件
- 输入:在程序运行前,删除
urls.yaml文件或css_dict.yml文件。 - 预期输出:程序能够正确处理异常,在控制台输出相应的错误信息,如文件读取失败的相关提示,并且不会导致程序崩溃。
- 测试步骤:
- 先删除
urls.yaml文件(或css_dict.yml文件)。 - 运行程序,传入有效的小说首页URL和CSS URL(假设其他条件正常)。
- 观察控制台输出,检查是否有正确的错误提示,并且程序是否继续运行(未崩溃)。
- 先删除
- 输入:在程序运行前,删除
小说爬取的软件测试
http://example.com/2024/11/09/小说爬取的软件测试/