自动化测试
文章平均质量分 80
荔枝味奶糖
这个作者很懒,什么都没留下…
展开
-
软件测试有哪些常用的测试方法?
15.search检查:在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确。9.信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理。14.检查多次使用back键的情况:在有back的地方,back,回到原来页面,再back,重复多次,看会否出错。原创 2024-02-29 22:04:32 · 385 阅读 · 0 评论 -
Python自动化测试框架:unittest介绍
unittest是Python的单元测试框架,它提供了一套丰富的测试工具和方法,包括测试用例、测试套件、断言、测试装置等。unittest还支持测试执行、测试报告和测试覆盖度等功能。使用unittest可以帮助开发者在开发过程中快速发现和修复代码中的问题,提高代码的质量和稳定性。原创 2024-02-26 15:37:08 · 832 阅读 · 0 评论 -
JMeter 配置元件之按条件读取CSV Data Set Config
配置项无法起到精确控制(有作用,但读取到文件末尾时不会立即停止,还是有线程会继续从头读取,至于啥时候才会全部停止,我也不清楚,最后线程会因为这个配置停止就是)4、将仓库订单数据文件添加到不同的IF逻辑控制器下,增加IF判断条件--判断登录用户所属仓库和是否和订单数据文件所属仓库一致,如果一致则可读取对应数据文件。解决方案:在对应的IF逻辑控制下,添加线程共享计数器,并在数据文件之后,添加脚本采样器,脚本里判断计数器当前值是否大于文件最大内容行数,如果大于则停止线程。和登录用户所属仓库保持一致,原创 2024-02-25 17:00:17 · 587 阅读 · 0 评论 -
什么是测试左移
在传统的软件研发周期中,有个比较著名的模式叫“瀑布模式”,在这个模式中,项目周期被清晰的分为“制定计划->需求分析->软件设计->程序编码->软件测试->运行维护”等六个基本活动。并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。如果我们看上面从左到右的顺序,测试阶段就是软件生命周期中的一个特定阶段,并且这个阶段处于比较靠右的一个阶段(如上图软件测试在第五个阶段)。原创 2024-02-23 19:14:59 · 770 阅读 · 0 评论 -
python自动化接口测试
其实,作为一个测试来讲,每次功能测试过程 中,都会遇到要写些小脚本辅助测试的时候,这些小脚本并不能完全称作为“自动化”,但是这些小脚本确实是帮忙我节省了效率,可能运行结果只是我控制台输出的log而已,但对于个人使用已足够。还有就是我们的接口返回做的不规范,有时候输入异常是一个200状态但标识是status:0,有时候又是直接400或500的返回,所以用于个人测试,我这里没有做结果判断error还是fail,当然如果要加,也简单。前几天,同组姐妹说想要对接口那些异常值进行测试,能否有自动化测试的方法。原创 2024-02-21 21:48:34 · 378 阅读 · 0 评论 -
软件测试过程及方法指南
在一个建立了标准和有很多经验的开发机构中开发出来的系统中的错误不会很多,因此,对于不同的开发机构来说,所需要的测试的必要性也就截然的不同。质量目标可能是动态的。因此,在测试软件系统时,应根据软件的特点和工程的进度,选用适当的测试策略,有时混和使用两种策略更为有效,上层模块用自顶向下的方法,下层模块用自底向上的方法。最近总有人询问测试计划的编写方法和步骤,如何合理的设计测试计划是每个测试经理 的责任,测试中需要关注的要素太多了,既有技术方面的考虑,也有管理方面的考虑,如何 才能设计出实用的测试计划呢?原创 2024-02-20 19:42:42 · 902 阅读 · 0 评论 -
对于软件测试的理解
尽早的介入测试,遇到问题的解决成本就越低”随着软件测试技术的发展,测试工作由原来单一的寻找缺陷逐渐发展成为预防缺陷,探索测试,破坏程序的过程,测试活动贯穿于整个软件生命周期中,故称为全程软件测试全程软件测试,强调整个软件生命周期中,各阶段的测试活动。无论是需求阶段,开发阶段,还是测试阶段,都需要确定在当前阶段测试活动的内容以及成都,确保每个阶段的质量,才能保证产品最终的质量。全程软件测试,关注的是在整个软件生命周期中,各个阶段的测试活动。通过对各个阶段的过程质量把控,从而提高产品的测试质量。原创 2024-02-19 19:10:46 · 880 阅读 · 0 评论 -
Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试
Jenkins除了构建软件功能外,还可以用于搭建自动化测试环境,比如实现Python Selenium测试的无人值守的情况下按照预定的时间调度运行(如晚上),或者每次代码变更提交至版本控制系统时实现自动运行的效果。那么,每天下午18:24构建过程将自动触发,作为无人值守构建过程的一部分,Jenkins也将自动执行测试,这样在第二天早上当你到达办公室的时候就可以看到测试执行结果了。搭建Jenkins简单。17)Jenkins通过读取unittest框架生成的测试文件,在页面上显示测试结果和其他各项指标。原创 2024-01-16 16:38:13 · 473 阅读 · 0 评论 -
Pytest自动化测试 - 完美结合Allure
Allure Framework是一种灵活的、轻量级、多语言测试报告工具。不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容,而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试。Allure报告可以快速查看到缺陷点,可以将测试未通过划分为Bug和中断的测试。还可以配置日志,步骤,固件,附件,时间,历史记录,以及与TMS的集成和Bug跟踪系统,以便掌握所有信息。Allure提供了一个清晰的全局,涵盖了所涵盖的功能,缺陷聚集的位置,执行时间表,以及许多其他方便的事情。原创 2024-01-10 16:15:57 · 886 阅读 · 0 评论 -
Python+requests搭建接口自动化测试框架
---logout-2.json 退出登录接口的测试用例数据。----newfile.py 获取最新文件的相关方法。----login-1.json 登录接口的测试用例数据。----userinfo.py 获取用户信息的相关方法。----logger.py 记录日志的相关方法。原创 2024-01-08 14:44:38 · 1083 阅读 · 0 评论 -
微信小程序自动化测试实战,支持录制回放、智能遍历
如果需要测试指定页面,开发者可以在计划列表中配置多个页面及参数。当前置步骤执行(如有)完成后,云测服务将会检查指定页面是否存在 JsError 或黑白屏等问题。同时面对更多进阶需求,微信团队也扩展出更多功能,支持前置操作、测试指定页面、丰富多种后继模式等方式,助力开发者提升测试效率。如果开发者已配置前置步骤,开发者可以在完成测试任务后查看到关于前置步骤的执行情况,测试结果一目了然。新建测试计划后,开发者需要创建测试任务,选择测试过程的具体事项。前置操作耗时计入测试时长,开发者需要合理配置测试时长。原创 2024-01-05 19:35:52 · 441 阅读 · 0 评论 -
JDK、Tomcat、Redis、MySQL集齐,如何搭建高效性能测试项目
作为一个软件工程师,怎能不知道如何搭建一个性能测试项目呢?性能测试是一个软件工程师不可或缺的一环,因为一款软件性能好坏直接关系到用户体验,而用户体验又是一个软件能否成功的最重要的因素。本文将带你一步步搭建一个性能测试项目,包括如何搭建 JDK、Tomcat、Redis 和数据库,并介绍在一个 WEB 项目中如何使用这些工具进行性能测试。本文介绍了如何搭建一个性能测试项目,并进行简单的性能测试。原创 2023-12-29 14:51:31 · 1107 阅读 · 0 评论 -
五年阿里高级测试工程师经验之谈 —— 自动化测试总结
自动化测试框架的设计模式一般有关键字驱动和POM模型。1.POM(Page Object Module)自动化测试框架页面对象模型,在web和APPUI中最核心的一种测试框架,业界公认的最佳模型。业界自动化测试的发展:从 行为驱动 -> 页面驱动2.POM流程将流程所关联的页面作为对象,将对象串联起来,形成一个个不同的流程,每一个不同的行为对应每一个页面。3.POM的实现-分层处理a.结构设计逻辑代码:实现所有的工具函数封装,类似于关键字驱动设计模型。【基类】原创 2023-12-26 13:48:16 · 779 阅读 · 0 评论 -
什么是POM设计模式?
页面对象模型的简称2013年,由Martin Fowler提出了PageObject的观点作者的观点是一种封装思想,旨在为每个待测页面创建一个页面对象,从而将繁琐的定位操作、操作细节封装到这个页面对象中,对外只提供必要的操作接口,在调用的时候只调用提供的接口,不用去调用操作细节,最终实现程序的高内聚低耦合,使程序模块的可重用性、移植性大大增强在这种模式下,对于应用程序中的每个页面都应该有相应单独的页面类(例如:login_page、userinfo_page),类中应该包含此页面上的元素对象和。原创 2023-12-14 16:39:22 · 351 阅读 · 0 评论 -
Jmeter接口自动化测试 —— Jmeter变量的使用
变量的调用方式:${变量名}变量的作用范围:变量可以写入任何测试组件的任何字段中(除了TestPlan)以博客园的接口为例:例如上面的接口,我们想要再请求一次,而request需要从上一次的响应数据中获得,比如我们需要第一次请求的response中的itemId和title作为下一次请求的request那么就需要用到一个配置元件JSON提取器了右键http请求->添加->后置处理器->json提取器JSON提取器参数说明:2023最新Jmeter接口测试从入门到精通(全套项目实战教程)原创 2023-12-13 21:04:20 · 374 阅读 · 0 评论 -
【软件测试】年薪30万跟年薪15万的面试有些什么区别?
参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。原创 2023-12-10 20:48:29 · 328 阅读 · 0 评论 -
突破软件测试的瓶颈,月薪破万不是梦?
相信不少拿着专科毕业证的同学在跳槽时都底气不足,工作经验差不多的技术不都那样,半斤对八两,可能就因为人家是个好本科,就把我刷下来了,或都要了,同样的工作,工资差几K ,啊~西吧~!大学时我跟同学一块玩游戏,我确实没有什么玩游戏的资质,再加上他们喜欢砸钱,游戏的等级装备都玩不过他们,甚至差很远,可是他们玩一段时间就不玩了,我断断续续的一直在玩,直到去年年底的时候号丢了,结果到最后我等级最高。最简单的就是这个问题,最难的也是这个问题,记一个英语单词很简单,读懂一份篇E文文档挺难,还有那永远开不了口的哑巴英语。原创 2023-12-10 20:46:24 · 280 阅读 · 0 评论 -
接口测试要测试什么?
从上面这两张图对比可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各自特性或关注点不同需要进行特殊的测试,在此不做讨论。于是,为了向开发解释上述问题,普及基本的测试常识,特意梳理了接口测试的相关内容以及其与前端测试的区别,使开发团队与测试团队在测试这件上达成基本的共识,提高团队协作效率,从而更好的保证产品质量。比如,我们想生成不同格式的测试报告,想将测试报告发送到指定邮箱,又想让接口测试集成到CI中,做持续集成定时任务、接通测试平台、接通飞书、公司内部定制化等。原创 2023-12-07 20:14:22 · 92 阅读 · 0 评论 -
python+requests+excel 接口测试
3、EXCEL中的数据读取成功后,然后我们需要对于读出来的数据进行相应的处理。当然示例中只是简单列了一下关于POST,GET等二种方式,实际还有很多其它方式,如put,delete等,请求中也还会包括headers,这些都可以自已添加上去。5、最后还需要把我们的结果展示出来,这个就很简单了,利用htmltestrunner来展示。展示一张报告的切图。4、最后我们就可以调用之前准备好的方法进去测试了。1、EXCEL文件接口保存方式,如图。原创 2023-12-06 22:01:51 · 300 阅读 · 0 评论 -
软件测试简历怎么写?可以参考这份简历
项目描述:企业人事管理系统是一个基于 SpringBoot 框架的项目,为降低企业人事部的工作负荷,提供部门与部门、公司与员工之间的办公自动化、信息传递等效率,而研发出来的公司内部使用系统,该系统包含:员工信息管理、员工绩效考核、员工福利、员工薪资、员工考勤、加班管理、人员请假、人员培训管理、企业通知、公司规章制度、公司财务管理、公司报销管理、系统权限管理等模块。1、熟练测试理论、测试方法、测试流程以及常用测试文档的编写,如:测试计划、测试方案、测试用例、测试报告等;熟悉 redis 缓存数据库的使用。原创 2023-11-30 19:30:56 · 1092 阅读 · 0 评论 -
只需根据接口文档,就能轻松开发 get 和 post 请求的脚本
这里再教大家一个方法,进入到loadrunner的帮助文档,查看每个函数的使用,loadrunner界面,按下键盘的F1,在输入框输入函数名称,比如atoi。if(atoi(lr_eval_string("{code}"))==0) { //当code=0的时候,事务是成功的。就是需要对脚本的返回值进行if判断,当成功的时候,就pass,失败了就fail,这样事务也会自动的去统计成功或失败。是不是有一些小伙伴在平时的脚本运行的时候,脚本都没有报错,但是实际插入到数据库的数据没有增加的情况?原创 2023-11-30 19:27:09 · 70 阅读 · 0 评论 -
没有项目?这十几个软件测试项目够用了重点是还能写进简历里面!!!
为你以后的工作提供指引和参考。原创 2023-11-24 16:11:37 · 461 阅读 · 0 评论 -
2024春招必备软件测试八股文
参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。原创 2023-11-24 14:51:08 · 112 阅读 · 0 评论 -
pytest-rerunfailures插件之测试用例失败重跑
【注意】重复运行失败的测试用例时,对应的fixture或者setup函数也会重新执行(例如:scope参数为method的fixture前置函数)运行结果:【注意】测试结果以最后一次重新执行测试用例的结果为最终结果,即用例执行被判定为FAILED或者PASSED。1、如果使用装饰器的方式指定了测试用例的重新运行次数,则在命令行参数中添加–reruns对这些测试用例是不会生效的。平时在做接口测试的时候,经常会遇到网络抖动或者环境问题导致测试用例运行失败,而这个并不是我们想要的结果;,并指定最大重新运行次数。原创 2023-11-20 19:48:44 · 320 阅读 · 0 评论 -
python+pytest接口自动化测试之接口测试基础
一般我们所说的接口即API,那什么又是API呢,百度给的定义如下:API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。有点绕口,但我们看下定义里面这些关键字:预先定义的接口 (如函数、HTTP接口)、基于软件或硬件得以访问、无需访问源码、无需理解内部工作机制,大概就明白了。原创 2023-11-17 19:16:42 · 212 阅读 · 0 评论 -
python接口自动化-参数关联
前言我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,换个网站,或者用cookie登录吧)原创 2023-11-16 21:46:04 · 280 阅读 · 0 评论 -
自动化测试面试经历
这个问题回答简直糟糕,一时间有点懵不知道啥叫访问修饰符,面试官引导了一下,才反应过来是public、private、protect。这个问题太难回答,我说优点是喜欢了解新事物,学习新的知识。缺点是学到的东西不能用到实际的项目中(这个回答太诚实了,这样的话爱学习的优点也被否定了,呜呜……这个问题有点懵,我做的自动化用例一般都是串在一起的,并没有像他说的那样执行用例(他意思是 假如增删改就分别对应一个用例),就回答大概80-90个……这个问题也回答的有点模棱两可(对这种概念类型的问题真的是熟悉的陌生人的感觉)原创 2023-11-15 20:33:07 · 257 阅读 · 1 评论 -
使用Jmeter进行http接口性能测试
保存测试计划:修改名称为Apitest,点击保存,选择保存路径,后面的步骤,每次添加或修改了了一些选项,软件并不会自动保存到jmx文件中,所以进行测试后,如果需要保存本次测试选项,要手动到“文件”菜单中保存一下。但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具。可以添加的监听器有很多种,可以添加多个监听器,这里我们添加几个常用的“图形结果”、“察看结果树”、“聚合报告”原创 2023-11-13 20:47:38 · 788 阅读 · 0 评论 -
编写http接口api及接口自动化测试
我们要实现后台管理中的用户管理功能,实现对用户的增、修改、删除、查询操作。文中场景省去登录和用户权限部分,但我会在接口代码片段中进行注释说明。原创 2023-11-10 20:44:54 · 759 阅读 · 0 评论 -
记录第一次银行测试岗面试【总结几点面试不要犯得错误】
LZ在一个18线小城市做测试,近来想走出自己的舒适区,去做一点不一样的测试工作。18线地区,测试工作并不多。最好的差不多就是LZ目前待着的公司了。遂决定去魔都闯荡几年,对一个在魔都无房无车无户口的人来讲,这意味着很累,然人无远虑必有近忧。即使有一天你的城市通地铁和高铁了,来了一群优质的互联网公司,我除了离得近,有配得上的技能嘛。XX银行面试年前在BOSS直聘上投递的简历,年后约面试。我要求先电话面试一轮再去。【这里说一下有的公司招人职位要求和面试要求完全不一致,毕竟魔都里的有些远,不想浪费一次年假和自己原创 2023-11-09 19:15:07 · 191 阅读 · 0 评论 -
python+robotframework接口自动化测试
用自带的是不是很繁琐,输入了那么多条才完成了一个请求,因此我封装了一个关于http的get请求库(当然checkValue也是我个人封装的一个函数~)ps:json和requests均为python导入的库!目前我们需要考虑的是如何实现关键字驱动实现接口自动化输出,通过关键字的封装实现一定意义上的脚本与用例的脱离!步骤六:输出一条场景的case,下面就是我个人创建的一个case(目前以第三库和自己带的方法输出的case)————————这一系列的基础支撑组件创建结束后————目录结构为————————原创 2023-11-08 21:07:02 · 189 阅读 · 0 评论 -
nginx参数调优能提升多少性能
nginx安装后一般都会进行参数优化,网上找找也有很多相关文章,但是这些参数优化对Nginx性能会有多大影响?为此我做个简单的实验测试下这些参数能提升多少性能。声明一下,测试流程比较简单,后端服务也很简单,测试时间也很短,所以实验并不严谨,结果仅作参考,需要根据实际情况进行参数调优。文章或有错误和疏漏之处,欢迎各位大佬指出或补充。原创 2023-11-07 16:31:16 · 316 阅读 · 0 评论 -
【软件测试】其实远远不止需求文档这么简单
为了确认这一事实,我们测试人员可能需要来回往返于开发团队和需求团队(或用户)之间来寻求肯定的答复(一个典型的状况是,需求团队对于用户需求的解读并不够细致详尽,事实上他可能根本没有思考到相应深刻的程度,而对于开发通过主观判断给出的设计,他也许并提不出什么意见,只能表示认可)。这个概念跟本文所提到的这些额外的我们可用的测试依据既有相互重叠的部分,也有相互补充的部分,我们在采集测试依据的时候,可以把这两方面都包含进来,从而形成一个更加完备的测试覆盖面积。从本质上说,他应该包括所有可以指导我们测试的信息。原创 2023-11-05 19:08:33 · 161 阅读 · 0 评论 -
pytest自动化测试框架Allure功能特性介绍
Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志、步骤、fixture、附件、计时、执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息。原创 2023-11-03 16:11:14 · 79 阅读 · 0 评论 -
常见接口测试面试题
3)GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)本题主要考情商,通俗来说就是忽悠能力,先唬住面试官了再说,进去了也是瞎测测,随时做好背锅的准备,当然,你肯定不能回答面试官不测(心理mmp,脸上笑嘻嘻),接下来就是扯犊子时间。原创 2023-11-02 20:37:27 · 340 阅读 · 0 评论 -
接口测试学习手册
很多人会谈论接口测试。到底什么是接口测试?如何进行接口测试?这篇文章会帮到你。原创 2023-10-31 15:18:24 · 212 阅读 · 0 评论 -
软件测试面试题
这些都需要最早的学好。4)因果图方法:前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.原创 2023-10-27 22:02:31 · 628 阅读 · 0 评论 -
Jenkins+Python自动化测试持续集成详细教程
配置位置:对应项目》配置》构建触发器》其他工程构建后触发(Build after other projects are build),输入对应的项目名称,选择“构建稳定时触发”,意思就是我的测试脚本项目在另一个项目(test项目,这里指开发的项目)部署构建完成后没有出现问题了才触发构建我的测试脚本项目。的是,如果项目已经创建了(项目默认是失败发送)才去配系统触发器(配了总是发送),那么项目会读取项目的触发器,如果是先配置了系统触发器再创建的项目,那么项目的触发器是读取系统触发器的。原创 2023-10-26 16:11:34 · 1040 阅读 · 0 评论 -
UI 自动化测试框架:PO模式+数据驱动
PO(PageObject)设计模式将某个页面的所有元素对象定位和对元素对象的操作封装成一个 Page 类,并以页面为单位来写测试用例,实现页面对象和测试用例的分离。PO 模式的设计思想与面向对象相似,能让测试代码变得可读性更好,可维护性高,复用性高。PO 模式可以把一个页面分为三个层级:对象库层、操作层、业务层。对象库层:封装定位元素的方法。操作层:封装对元素的操作。业务层:将一个或多个操作组合起来完成一个业务功能。原创 2023-10-25 20:01:35 · 591 阅读 · 0 评论 -
python&selenium自动化测试实战项目
说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架。原创 2023-10-23 21:25:39 · 278 阅读 · 0 评论