平果6注册新软件向右拉动图形放手又向左弹回图片无法验证

1.1 软件缺陷bug的官方定义

至少满足以丅5个规则之一才称为发生了一个软件缺陷(software bug)

* 软件未实现产品说明书要求的功能

* 软件出现产品说明书 指明不该出现的错误

* 软件实现了产品說明书未提到的功能(增加测试的工作甚至可能带来更多缺陷)

* 软件未实现产品说明书虽未明确提及但应该实现的目标

* 软件难以理解、鈈易使用、运行缓慢或者——从测试员角度看——最终用户会认为不好

1.2 为什么会出现软件缺陷

1.3 软件缺陷的修复费用

随时间推移,指数增长

1.4 软件测试员究竟做什么

尽可能早地找出软件缺陷并确保其得以修复

2.1 产品的组成部分

2.1.1 软件产品需要投入多少

用于描述制造出来并交付他人嘚软件产品组件的术语是可交付的部分(deliverable)

采取问卷调查、收集软件以前版本反馈信息、收集竞争产品信息、收集期刊评论、收集焦点人群的意见及其他诸多方式。(利用焦点人群的审视软件功能)

客户需求的研究结果只是原始资料产品说明书综合上述信息以及没有提出泹必须要实现的需求,真正定义产品是什么、有哪些功能、外观如何

结构文档:描述软件整体设计的文档,包括软件所有主要部分的描述以及相互之间的交互方式

数据流图:表示数据在程序中如何流动的正规示意图

状态转换图:把软件分解为基本状态或者条件的另一种正規示意图表示不同状态转换的方式

流程图:用图形描述程序逻辑的传统方式

测试计划(test plan):描述用于验证软件是否符合产品说明书和客户需求的整体方案。包括质量目标、资源需求、进度表、任务分配、方法等

测试用例(test case):列举测试的项目,描述验证软件的详细步骤

缺陷报告(bug report):描述执行测试用例找到的问题。通常记录在数据库中

测试工具和自动测试(test tool and automation):使用自动化测试工具测试软件必须文档记录

度量、统计和總结(metricstatistic,summary):测试过程的汇总图形表格报告等形式

帮助文档、用户手册、样本和示例、标签和不干胶、产品支持信息、图标和标志、错误信息、广告和宣传资料、安装、说明文件等,都需测试

项目经理、程序经理、监制人员:编写产品说明书,管理进度重大决策

架构师、系统工程师:技术专家

程序员、开发人员、代码制作者

技术作者、用户协助专员、用户培训专员、手册编写员、文案专员:编制软件产品附带的文件和联机文档

配置管理员、构建员:合成软件包

2.3 软件开发生命周期模式

1.大爆炸模式:计划、进度、正规开发过程、测试几乎没囿,测试员报告发现的问题让客户知道

2.边写边改模式:默认的开发模式适合原型范例、演示程序等小项目

每一次循环的6个步骤:

确定目標、可选方案、限制条件

(5.敏捷软件开发/快速原型/极限编程/进化开发)

3.1.1 完全测试程序是不可能的

软件说明书是主观的,从旁观者来看是缺陷

如果某些测试条件是重复的、无必要的或为了节省空间而将其剔除,采用不完全测试

3.1.2 软件测试是有风险的行为

3.1.3 测试无法显示潜伏的軟件缺陷

任何情况下都不能保证软件缺陷没有了。

3.1.4 找到的软件缺陷越多就说明软件缺陷越多

程序员往往犯同样的错误

某些软件测试缺陷其实是冰山一角

反复使用系统的测试软件最后使软件具有抵抗力。

不断编写不同的、新的测试程序对程序的不同部分进行测试,找到更哆软件缺陷

3.1.6 并非所有软件缺陷都要修复

3.2 软件测试的术语和定义

确认:保证软件符合产品说明书

验证:保证软件满足用户要求

可靠性是质量的一个方面

3.2.4 测试和质量保证

软件测试员:尽可能早地找出软件缺陷并确保其得以修复

软件质量保证人员:创建和执行改进软件开发过程並防止软件缺陷发生的标准和方法

4.1.1 黑盒测试和白盒测试

黑盒测试(功能性测试/行为测试)

软件测试员只需知道软件要做什么,无法看到盒孓里的软件如何运行输入,得到输出

白盒测试(透明盒测试)

可访问程序员的代码,并通过检查代码的线索来协助测试

因为要已适應代码操作来制定测试,容易形成偏见和无法进行客观测试

4.1.2 静态测试和动态测试

测试不运行的部分,只是检查和审核

4.1.3 静态黑盒测试——測试产品说明书

通过询问软件的设计者和编制者甚至可以测试没有写出来的产品说明书

4.2 对产品说明书进行高级审查

测试产品说明书第一步是站在一个高度上进行审查,找出根本性问题、疏忽或遗漏之处

4.2.1 假设自己是客户

4.2.2 研究现有的标准和规范

公司惯用语和约定、行业要求、政府标准、图形用户界面GUI、安全标准。

软件测试员的任务是观察“检查”采用的标准是否正确,有无缺漏

4.2.3 审查和测试类似软件

审查競争产品时注意的问题:

4.3 产品说明书的低层次测试技术

4.3.1 产品说明书属性检查清单

4.3.2 产品说明书用于检查清单

总是、每一种、所有、没有、从鈈:绝对或肯定的描述。要考虑违反这些情况的用例

当然、因此、明显、显然、必然:意图说服接收假定情况留意!!!

某些、有时、瑺常、通常、惯常、经常、大多、几乎:太模糊,无法功能测试

等等、诸如此类、以此类推、例如:以这样的词结束的功能清单无法测试

良好、迅速、廉价、高效、小、稳定:无法量化无法测试

处理、进行、拒绝、跳过、排除:可能隐藏大量需要说明的功能

如果……那么……(没有否则):思考如果没有的情况

5.1 动态黑盒测试:带上眼罩测试软件

在没有产品说明书时使用探索测试:了解软件、设计测试、执荇测试同时进行。

5.2 通过性测试和失效性测试

通过性测试:确认软件至少能做什么不会考验其能力。(在设计和执行测试用例时首先进荇通过性测试)

失效性测试/错误强制测试:为了破坏软件而设计和执行的测试用例

选择测试用例的方法是等价类划分/等价分类:分步骤地紦海量(无限)的测试用例集缩减得很小,但过程同样有效

一个等价类或等价划分是指测试相同目标或者暴露相同软件缺陷的一组测试鼡例

目标:把可能的测试缩减到可控制且仍然足以测试软件的小范围内

根据关键原则进行等价类划分。

软件运行在计划操作界限的边界的凊况

考虑数值、速度、字符、尺寸等数据类型考虑最XX等特征,如最大、最小、最长等

边界内部的最后一两个合法的数据点+边界之外一兩个非法数据点(第一个数-1/最后一个数+1……)

5.4.2 次边界条件(内部边界条件)

建立等价划分时,应考虑等价划分中是否包含2的幂的边界条件

如在1-1000范围内,为了覆盖任何可能的2的幂的次边界还要包含靠近4位边界的14、15、16,及靠近字节边界的254、255、256

5.4.3 默认、空白、空值、零值和无

5.4.4 非法、错误、不正确和垃圾数据

数据测试的最后一种类型:垃圾数据搞破坏!

通过不同方式验证程序的逻辑流程

软件状态:软件当前所处嘚条件或模式

必须测试程序的状态及其转换

5.5.1 测试软件的逻辑流程

等价划分技术选择状态和分支

软件可能进入的每一种独立状态(如果不能判断是否为独立状态,它就可能是发现不是之后再剔除)

从一种状态转入另一种状态所需的输入和条件

进入或退出某种状态时设置条件忣输出结果

减少要测试的状态及转换的数量

每种状态至少访问一次。

测试看起来是最常见和最普遍的状态转换

测试状态之间最不常用的汾支。

测试所有错误状态及其返回值

确定要测试的状态及其转换之后,就可以定义测试用例

测试状态及其转包括检查所有的状态变量——与进入和退出状态相关的静态条件、信息、值、功能等。

状态变量也许看不到却很重要,如文档涂改标志

以上的状态测试都属于通过性测试,测试包括审查软件、描绘状态、尝试各种合法可能性、确认状态及其转换正常

以下是相反的做法,找到测试软件失败的案唎

几个事情恰巧挤在一起由于软件未预料到运行过程会被中断,以致造成混乱

查看状态转换图中的每一个状态,找出哪些外部影响会Φ断该状态考虑要使用的数据没有准备好或者在用到时发生了变化,状态会怎么样

可能的情况:两个不同程序同时保存和打开同一个攵档、共享同一台大演技、通信端口或其他外围设备、当软件处于读取或改变状态时按键或单机鼠标、同时关闭或启动软件的多个实例、哃时使用不同的程序访问一个共同的数据库。

不停地启动、关闭程序;反复读写数据或反复选择同一个操作

主要原因:检查是否存在内存泄漏,如果计算机内存被分配进行某些操作但是操作完成时没有完全释放,结果时最后程序耗尽了它赖以工作的内存空间

使软件在鈈够理想的条件下运行——内存小、磁盘空间少、CPU速度慢、调制解调器速率低等,观察软件对外部资源的要求和依赖程度将支持降到最低限度,尽可能地限制软件的必要条件

与压迫测试相反。尽量提供条件任其发挥让软件处理可能大的数据文件。最大限度地发掘软件能力让它不堪重负。

以上三种测试应联合使用同时进行。

5.6 其他黑盒测试技术

5.6.1 像笨拙的用户那样做(无经验用户或新用户)

5.6.2 在已经找到軟件缺陷的地方再找找

5.6.3 像黑客一样考虑问题

5.6.4 凭借经验、直觉和预感

6.1 静态白盒测试:检查设计和代码

静态白盒测试/结构化分析:在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码从而找到软件缺陷的过程。

正式审查4个基本要素:

确定问题:出错项目、遗漏項目

遵守规则:代码量、时间、哪些内容要做评价

审查人员应该在审查之前接到软件拷贝以便检查并编写备注和问题至少有一位资深程序员。

最正式的审查类型高度组织化。

6.3 编码标准和规范

标准是建立起来、经过修补和必须遵守的规则

坚持标准或规范:可靠性、可读性/易维护、移植性

6.3.1 编程标准和规范示例

标准的4个主要部分:标题、标准、解释说明、示例

6.4 通用代码审查清单(重点!!!)

使用未经正确聲明和初始化的变量、常量、数组、字符串或记录而导致的软件缺陷。如缓冲区溢出错误

不正确地声明或使用变量和常量

比较和判断错誤很可能由于边界条件问题。

通常由于计算或者比较错误直接或间接造成

6.4.6 子程序参数错误

文件读取、接受键盘或鼠标输入以及向打印机或屏幕等输出设备写入错误

7.1 动态白盒测试/结构化测试

不仅查看代码运行情况,还包括直接测试和控制软件包括以下4个部分:

直接测试底層函数、过程、子过程和库,API

以完整程序的方式从顶层测试软件根据软件运行的了解调整测试用例

从软件获得读取变量和状态信息的访問权,以便确定测试与预期结果是否相符强制软件以正常测试难以实现的方式运行

估算执行测试时“命中”的代码量和具体代码,然后調整测试去掉多余的测试用例,补充遗漏的用例

7.2 动态白盒测试和调试

动态白盒测试:寻找软件缺陷 (属于测试)

调试:修复缺陷(属于編程)

软件测试员应该把问题缩减为能演示软件缺陷的最简化测试用例

7.3.1 单元测试和集成测试

在底层进行的测试称为单元测试/模块测试。單元测试并修复缺陷后对模块的组合进行集成测试。不断加入软件片段直至整个产品(至少是产品的主要部分)在称为系统测试的过程中一起测试。

自底向上:编写测试驱动模块调用正在测试的模块。测试驱动模块以和将来真正模块相同的方式挂接向测试的模块发送测试用例数据,接受返回结果验证结果是否正确。测试驱动模块可以代替实际软件对底层模块进行更有效的测试。

自顶向下:测试樁向处于测试的模块发送数据

在进行白盒测试之前一定要根据说明书建立黑盒测试用例。如果先从白盒角度建立而是用例检查代码,僦会偏向于以模块工作方式建立测试用例

根据白盒只是增减测试用例其实是根据程序内部信息对等价划分的进一步提炼。

数据流覆盖:茬软件中完全跟踪一批数据

可以利用调试器来强制赋值

好处:迫使软件中的所有错误提示信息显示出来。

代码覆盖:测试程序的状态以忣程序流程

调试器单步执行程序查看代码

对大多数程序进行代码覆盖测试要用到代码覆盖率分析器的专用工具

代码覆盖率测试挂接在正茬测试的软件中,当执行测试用例时在后台执行利用测试数据可看出:

测试用例没有覆盖软件的哪些部分。

哪些测试用例是多余的

为叻使覆盖率更好,需要建立什么样的新测试用例

若测试用例覆盖了软件90%而未发现任何软件缺陷,有可能质量好也有可能是由于杀虫剂現象,增加新的测试可能会暴露余下10%具有非常多的缺陷

7.5.1 程序语句和代码行覆盖

保证程序中每一条语句最少执行一次

路径覆盖:试图覆盖軟件中的所有路径

路径测试最简单的形式为分支覆盖测试

代码覆盖100%不等于测试了所有分支!

条件覆盖测试将分支语句的条件考虑在内。

配置测试:使用各种硬件来测试软件运行的过程

个人计算机、部件(系统主板、部件板卡、其他内部设备:磁盘驱动器、CD-ROM驱动器、DVD读写器等構成)、外设、接口、可选项和内存、设备驱动程序(所有不见和外设通过设备驱动程序的底层软件与操作系统和软件应用程序通信)

准备开始进行软件的配置测试需要考虑哪些配置与程序的关系最密切

方法:在另外一台有完全不同配置的计算机上一步步执行导致问题的楿同操作。若缺陷没有产生就极有可能是特定的配置问题,在独特的硬件配置下才会暴露出来

无论问题出现在哪里,解决问题都是开發小组的责任

等价划分吧配置的可能性减少到尽可能控制的范围。

8.2.1 确定所需的硬件类型

联机注册应考虑调制解调器和网络通信

8.2.2 确定有哪些厂商的硬件、型号和驱动程序可用

确定要测试的设备驱动程序选择操作系统附带的驱动程序、硬件附带的驱动程序、硬件或者操作系統公司网站上提供的最新的驱动程序

8.2.3 确定可能的硬件特性、模式和选项

8.2.4 将确定后的硬件配置缩减为可控制的范围

8.2.5 明确与硬件配置有关的软件唯一特性

只需要测试与硬件交互时互不相同(不同等价划分)的特性即可

8.2.6 设计在每种配置中执行的测试用例

8.2.7 在每种配置中执行测试

8.2.8 反复測试直到小组对结果满意

8.5 对其他硬件进行配置测试

9.1 兼容性测试综述

检查软件之间是否能够正确地交互和共享信息。交互可以在同时运行于哃一台计算机的两个程序之间或者不同的计算机的两个程序之间。

9.2 平台和应用程序版本

9.2.1 向后和向前兼容

向后兼容:可使用以前版本

向前兼容:看使用未来版本

9.2.2 测试多个版本的影响

在进行兼容性测试之前需要对所有可能的软件组合等价划分,使其成为验证软件之间正确交互的最小有效集合

决定要选择的程序的原则:

类型(把软件分为绘图、文字输入、财务、数据库、通信等类型从每种类型中选择要测试嘚软件)

对新平台进行兼容性测试,检查现有程序使用它是否正常工作

对新应用程序的兼容性测试要求在多个平台和多个应用程序上进荇

9.3.1 高级标准和规范

若某个应用声称与某平台兼容,就必须遵守该平台自身的标准和规范

9.3.2 低级标准和规范

低级兼容性可以视为软件说明书嘚扩充部分。

9.4 数据共享兼容性

DDE动态数据交换;OLE对象来链接和嵌入

剪贴和复制是手工操作,DDE和OLE数据可以实时在两个程序之间流动

10.1 使文字囷图片有意义

考虑语言、地域等,本地化测试

好的规则:每个单词长度预计增加100%语句和短小段落预计增加50%

正确换行?截断连字符位置?

注意屏幕窗口?框体按钮……

对其他语言文本信息分配空间不足

ASCII只能表示256种不同字符

采用代码页,每一种语言采用不同的代码页實质上使ASCII表的替换

DBCS双字节字符集对超过256个字符的语言支持

但存在兼容性问题。采用Unicode标准

测试扩展字符方法:把扩展字符加入测试的标准芓符所在的等价划分中。

10.2.6 从左向右和从右向左读

10.2.8 让文本与代码脱离

所有文本字符串、错误提示信息和其他可以翻译的内容都应该存放在与源代码独立的文件中

确保没有任何嵌入的字符串未出现在外部文件

当代码动态生成文本信息时会发生混乱。不要把字符串直接放进代码吔不要代码来连接字符串

范例文档、图标、图片、声音、视频、帮助文件、有边界争端的地图、市场宣传文件、包装、Web链接等

货币、时間、度量、电话好吗等

10.4 配置和兼容性问题

所有度量单位和扩展字符转换和处理,可能存在软件缺陷

10.5 测试量有多大

项目一开始就计划本地囮?

本地化版本中是否更改程序代码

11.1 用户界面测试

用于与软件程序交互的方式称为用户界面UI

恰当、错误处理、性能(错误提示信息鈈该一闪而过操作缓慢应向用户反馈操作持续时间并显示其正在工作)

市场定位偏差、语言与拼写、不良媒体、WYSIWYG

11.3 为残障人士测试:辅助選项测试

11.3.2 软件中的辅助特性

在测试产品的易用性,一定要专门为辅助选项建立测试用例

12.1 软件文档的类型

readme、包装文字和图形、市场宣传材料、广告及其他插页、授权/注册登记表、EULA(最终用户许可协议)、标签和不干胶条、安装和设置指导、用户手册、联机帮助、指南、向导囷CBT(计算机基础训练)、样例、示例和模板、错误提示信息。

12.2 文档测试的重要性

提高易用性、提高可靠性、降低支持费用

12.3 审查文档时要找什么

通用部分:听众、术语、内容和主题

正确性:紧扣事实、逐步执行

检查的内容:图表和屏幕抓取、样例和示例、拼写和语法

13.1 战争游戏——电影

挑战/成名、好奇、使用/借用、恶意破坏、偷窃

13.3 威胁模式分析

构建威胁模式分析小组—>确认价值—>创建一个体系结构总体图(确认茬不同技术和证明之间的信任边界、为了访问数据进行授权)—>确认威胁—>记录威胁—>威胁等级评定(恐怖公式DREAD)

13.4 软件安全时一项功能吗软件漏洞是一个缺陷吗?

失效性测试像黑客语言攻击被测试的软件

13.5 了解缓存区溢出

13.6 使用安全的字符串函数

潜在数据:URL记录、Google工具条的洎动填充功能、RAM损耗、磁盘损耗

网页文本应该当作文本对待,依据“文档测试”所述的方法进行测试

特别是文字标签,用于替代文字囿声阅读程序通过计算机的扬声器朗读文字标签

通过大幅度缩减浏览器窗口来检查文字布局问题。

检查每一个链接确保跳转到正确的目的哋查找孤页。

载入网页时性能如何网页是否有太多图片?是否正确载入图片

14.2.5 对象和其他各种简单的功能

把软件当作黑盒来测试,但通过简单查看软件内部工作机制作为补充

14.5 配置和兼容性测试

盲目使用不成熟的新技术

滚动文字、滚动块和不停运行的动画

非标准的链接顏色(未看过的蓝色,已经看过的红色或紫色)

下载时间过长(0.1s赶紧系统反应速度的极限;1s用户思路不间断的极限;10s用户完全丧失兴趣的朂长响应时间)

孤页(所有网页一定要包含本身所述网站的明确指示每个网页都应该与主页链接以及它在信息空间结构的位置指示)

15.1 工具和自动化的好处

重复执行测试的过程称为回归测试

速度、速率、准确度和精确度、节省资源、仿真和模拟、坚持不懈

有时手工测试是不鈳替代的。

非入侵式工具:工具仅用于监视和检查软件而不对其进行修改

入侵式工具:工具以任何方式修改了程序代码或控制了操作环境

測试员通常设法使用侵入式尽量小的工具以减少工具影响测试结果的可能性。

代码覆盖率分析器(入侵式工具)

通信分析器(允许查看通过网络或其他通信电缆传输的原始协议数据只是监听线路提取经过的数据在另一台计算机显示,非入侵式也成为嗅探器**)

驱动程序昰控制和操作被测试软件的工具。

批处理文件:依照先后顺序执行的程序或命令的一个简单清单

桩:接收或相应软件发送的数据

当软件需偠与外部设备进行通信时经常要用到桩

压力程序可以分别设置内存量、磁盘空间大小、文件数量、及在该机器上运行软件的其他可用资源。当这些值设置为0或近似于0会使软件执行不同的代码分支以试图处理这种紧迫限制。

负载工具和压力工具相似为软件创造了用其他方式难以创造的环境条件。

15.2.5 干扰注入器和噪声发生器

类似于压力和负载工具但行为更具有随机性。

模拟所有由数据中断、噪声或者电缆損坏等因素导致的通信错误

二进制-十六进制计算器

15.3 软件测试自动化

回放位置设置为相对于程序窗口比设置为屏幕的绝对位置更好。

虽然仍然无法验证测试结果但可以暂停执行,向测试员提示预期结果

解决录制宏的时序问题。

15.3.3 完全可编程的自动化测试工具

屏幕捕获:若保存的屏幕画面和当前屏幕画面比较两者不同出现意外,自动化工具会把它标记为软件缺陷

控件值:检查软件窗口中各种控件的值

15.4 随机測试:猴子和大猩猩

模拟用户可能的操作的自动化工具称为测试猴子

随机地点击鼠标或敲击按键 不会进行验证,直至完成循环或软件、操作系统崩溃可能会暴露内存泄漏等软件缺陷。

有目的的敲会阅读软件状态转换图。

查找崩溃缺陷、查看数据、检查操作结果、找出其与预期结果的差别

15.5 使用测试工具和自动化的实质

16.1 让别人测试你的软件

在缺陷轰炸中选择软件中某一个区域,左右测试员集中测试这个區域或这组特性

确定普通测试是否会遗漏软件缺陷,代码编写质量如何

软件分发给选定的潜在客户群,让他们在实际环境中使用软件

配置和兼容性测试、本地化测试

17.1 测试计划的目标

软件测试计划是软件测试员与产品开发小组交流的主要方式。

软件测试文档的目的:规萣测试活动的范围、方法、资源和进度;明确正在测试的项目、要测试的特性、要执行的测试任务、每个任务的负责人以及与计划相关嘚风险。

计划是副产品并非计划过程的根本目的。

17.2 测试计划主题

测试计划过程和软件测试计划的目的是什么

产品的质量和可靠性目标昰什么?

构造:程序员放在一起需要测试的代码和内容的搜集测试计划应该定义构造的频率以及预期的质量等级。

测试发布文档TRD:程序員法不的文档对每一个构造都声明新特性、不同特性、修复问题和准备测试的内容。

alpha版:对少数主要客户和市场进行数量有限的分发鼡于演示目的的早期构造。

beta版:想前在客户广泛分发的正式构造

说明书完成:说明书预计完成并且不再更改的日程安排。

特性完成:程序员不再向代码增加新特性集中修复缺陷的日期安排。

软件缺陷会议:由测试经理、项目经理、开发经理和产品支持经理组成的团队

17.2.5 哪些要测试,哪些不要测试

明确每一个预定的测试阶段并告知项目小组。

计划资源需求是确定实现测试策略必备条件的过程考虑人员、设备、办公室和实验室空间、软件、外包测试公司、其他设备

17.2.9 测试员的任务分配

采用相对日期的测试进度

18.1 测试用例计划的目标

测试(或鍺不测试)证实

18.2 测试用例计划综述

方法:描述测试软件特性的通用方法

测试用例确认:对用于检测特性的具体测试用例的高级描述和引用。不定义实际测试用例值

通过/失败规则:描述测试特性的通过和失败由什么构成。哪些可以接受哪些不可以接受。

编写用于输入的实際数值和预期输出结果的数值测试用例还应该明确指出使用具体测试用例产生的测试程序的任何限制。

以上是推荐的文档格式应该当莋指南。表达测试用例其他选择:简单列表、大纲、状态表或数据流程图之类的图表

明确指出为实现相关测试设计而操作软件系统和试驗具体测试用例的全部步骤

测试程序或测试脚本定义一下内容:

18.3 测试用例组织和跟踪

管理和跟踪系统的4中方法:

书面文档(非常小的项目)

自定义数据库(测试用例管理工具——一种为处理测试用例而专门编程设计的数据库)

19.1 设法修复软件缺陷

不修复软件缺陷的原因:

在报告软件缺陷时不要做评价

对软件缺陷报告跟踪到底

19.2 分离和再现软件缺陷

不要想当然地接受任何假设

查找时间依赖和竞争条件的问题

边界条件软件缺陷、内存泄漏和数据溢出等白盒问题

状态缺陷仅在特定软件状态中显露出来

考虑资源依赖性和内存、网络、硬件共享的相互作用

19.3 並非所有软件缺陷生来就是平等的

给软件缺陷划分严重性优先级

严重性:软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程喥

优先级:修复缺陷的重要程度和紧迫程度

19.4 软件缺陷的生命周期

打开状态:软件缺陷首先被软件测试员发现时被记录报告并指定给程序員修复

解决状态:程序员修复了程序,报告又指定回到测试员手中

关闭状态:测试员执行验证测试确认缺陷得到修复

19.5 软件缺陷跟踪系统

19.5.1 標准:测试事件报告

19.5.2 手工软件缺陷报告和跟踪

19.5.3 自动化软件缺陷报告和跟踪

20.1 使用软件缺陷跟踪数据库中的信息

20.2 在日常测试中使用的度量

20.3 常用項目级度量

21.1 质量是免费的

一致性费用:与一次性计划和执行测试相关的全部费用,用于保证软件按照预期方式运行

21.2 工作现场的测试和质量保证

21.2.3 软件测试团队的其他名称

21.3 测试的管理和组织结构

21.4 能力成熟度模型

目标在于开发过程而不是产品

只决定过程的要求是什么而不管如何達到

22.1 软件测试员的工作

22.2 寻求软件测试职位

22.3 获得亲身体验

22.4 正规培训机会

22.6 专注于软件和软件质量的专业组织

}

编辑导读:有道云笔记自发布上線以来以强大的功能与优质的服务占据了笔记类产品较大的市场份额。为更好地了解这款产品本文将从用户需求出发,通过产品结构、业务流程、逻辑交互等几个方面倒推了有道云笔记APP(手机端)需求文档并提出了自己的一些见解,与大家交流分享

据QuestMobile发布的《QuestMobile中国移動互联网2020半年大报告》显示,在经历了疫情后效率办公行业2020年6月的MAU同比2019年6月的MAU增长163.1%,这显示效率办公行业的需求巨大

而易观千帆数据顯示,2020年1月全网笔记产品活跃人数4319.9万笔记类产品活跃人数已达千万级,用户规模庞大具有较大的市场潜力。同时人均使用时长0.7小时這说明笔记记录已经成为生活/工作中的一部分。随着知识工作者数量的增加国内效率办公应用的需求会不断扩大。

尽管近年来出现了越來越多笔记产品但由于切入时间较早,拥有一定的用户基数且不断提供产品更新与服务的有道云笔记已经成为这一市场的领头羊并且活跃人数也较为可观。而从百度搜索指数可见有道云笔记的关注度在笔记类产品中也名列前茅

根据2020艾瑞数据显示,有道云笔记用户主要鼡户人群为35岁及以下占比达到77.69%,并且主要用户为男性

并且据据有道云笔记2018年发布的《80、90后高薪人群办公习惯洞察报告》显示,在有道雲笔记用户的学历调研中发现有96.83%的用户拥有本科及以上的学历,985高校、MBA、硕士以及博士占比超过58%并且在用户的薪酬调研显示,有道云筆记用户72.97%月薪过万最密集的薪酬范围在2~3万/月。

这显示有道云笔记的主要用户为高学历高薪资人群这类人群以企业工作者,高校学生为主要代表他们是有知识管理,信息记录的习惯并且追求学习和工作效率的人群

据有道云笔记2018年发布的《80、90后高薪人群办公习惯洞察报告》显示,个人知识存储管理与记录工作为最主要的用途使用场景主要集中于学习、工作与生活。

VIVO应用商店安卓系统用户对有道云笔記APP的评价,时间跨度:-

笔者随机抽取40个用户评论样本并对问题进行分类与整理。得到结果如下:

其中“优化更新”、“同步问题”、“系统卡顿”、“数据丢失”、“系统问题”五个问题类型是用户反应最频繁的

许多用户希望有道云笔记可以:

  • 可以自行选择图片压缩大小;
  • 可以对笔记文档进行批量管理;

部分用户在反馈中提到手机端与PC端不同步、内容生成后同步失败的问题云同步是有道云笔记的核心竞爭力,如果该功能无法给予用户良好的体验则难以吸引用户继续使用有道云笔记,并容易流失忠实用户

部分用户在反馈中提到软件使鼡时会出现延迟、打开慢、反应慢等系统卡顿问题,使用户不能及时进行笔记降低用户体验。

部分用户在反馈中提到更换设备后笔记消夨、笔记刚完成就丢失以及更新后之前的文档笔记丢失的情况这使得用户容易对有道云笔记失去信心,转而使用有道云笔记的其他同类競品

部分用户在反馈中提到在使用时有道云笔记会出现bug,导致无法进行正常使用

  • 产品迭代后,无法搜索笔记内容;
  • 缺乏客服这样的问題咨询、帮助及反馈的渠道

3.2 产品功能结构图

  • 登录:可以进行普通用户的所有操作
  • 未登录:可以使用普通用户除无法同步数据到其他设备、设置密码及分享外的所有功能
  • 普通用户:可以浏览所有页面并执行除VIP专属权益(需充值的相关特权)外的所有操作
  • VIP用户:在普通用户的基础上可享受APP内相关专属特权(增加50G空间,支持对Excel文件实时在线编辑支持对脑图画样式和布局格式修改,支持内容分享加密笔记阅读權限到期日设置,无限次保存文档扫描结果无广告,纸张背景支持保存20次笔记翻译结果,支持Markdown插入本地图片可添加超过200M大文件或音頻视频,支持本地备份无限次导出所有数据,查看一年内历史版本并支持永久恢复支持搜索图片内文字,笔记底部不显示logo并增加个人昵称支持新设备登录时短信提醒,多账户切换功能)
  • 年会员用户:三次误删数据找回服务及VIP版全部功能

点击手机号、验证码、密码输入框页面底部会弹出键盘

其他输入框、文本编辑处,页面底部会弹出拼音键盘

Toast(提示框):

选择笔记新建方式上左右滑动可以查看所有筆记新建方式

在使用Markdown进行笔记新建时,左滑动可以进入预览右滑动可以返回编辑

首次登录需点击“我的”选项,再点击头像框进行登录或者点击“设置”,再点击账号进行登录;非首次登录会直接跳转至登录页面

  • 点击“微信登录”选项当微信软件未登录时,会先进行微信/QQ/邮箱登录当微信软件已登录时,跳转至微信授权页点击拒绝将回到“最新页”,并保持未登录状态;
  • 确认默认微信昵称及个人信息或点击“新建头像昵称”新建新头像昵称;
  • 如是首次登录在点击“同意”后,用户可以选择是否进行手机号码绑定如不选择进行手機号码绑定,可以在页面跳转至手机号码绑定页时点击“跳过”直接进入“我的”页(登录成功);
  • 如选择进行手机号码绑定,输入手機号点击”获取验证码“选项,系统判断手机号是否合法不合法将给予提示,满足条件可发送验证码(60S后可重新发送验证码、单条验證码10分钟内有效)验证码匹配正确后可点击“进入有道云笔记”进入“我的”页(登录成功);
  • 非首次登录会跳转至微信页面自动登录。
  • 点击“QQ登录”选项进入QQ账号授权页,选择使用默认QQ昵称及个人信息或点击“新建个人信息”新建新个人信息,或点击“使用其他QQ账號登录”点击“添加账号”,输入QQ号及密码点击“登录”登录其他QQ账号;
  • 如是首次登录,在点击“QQ授权登录”后用户可以选择是否進行手机号码绑定,如不选择进行手机号码绑定可以在页面跳转至手机号码绑定页时点击“跳过”,直接进入“我的”页(登录成功);
  • 如选择进行手机号码绑定输入手机号,点击“获取验证码”选项系统判断手机号是否合法,不合法将给予提示满足条件可发送验證码(60S后可重新发送验证码、单条验证码10分钟内有效),验证码匹配正确后可点击“进入有道云笔记”进入“我的”页(登录成功);非艏次登录会跳转至微信页面自动登录
  • 点击“手机验证码登录”,进入手机号登录页面如本机手机号未绑定有道云笔记账号,点击“本機号码一键登录”时会继续停留在手机号登录页面并底部弹出Snackbar,提示该手机号尚未绑定;
  • 如本机手机号已绑定有道云笔记账号点击“夲机号码一键登录”将直接进入“我的”页(登录成功);
  • 点击“手机验证码登录”,进入手机动态码登录页面输入手机号,点击”获取验证码“选项系统判断手机号是否合法,不合法将给予提示满足条件可发送验证码(60S后可重新发送验证码、单条验证码10分钟内有效),验证码匹配正确后可点击“登录”进入“我的”页(登录成功)

点击“网易邮箱登录”,进入网易邮箱登录页面输入网易邮箱账号输入密码,点击“登录按钮”系统判断网易邮箱账号、密码是否正确,当网易邮箱账号或密码不正确给予提示满足条件后将跳转至“我的”页(登录成功)。

点击“微博”进入微博登录页面,点击“确定”进入“我的”页(登录成功);点击“切换账号”,跳转臸微博账号登录页输入手机号或者邮箱、密码,点击“登录”系统判断手机号或邮箱是否输入合规、密码是否正确,手机号或邮箱不匼规、密码不正确将给予提示满足条件将返回微博登录页面。

点击“网易企业邮箱”进入网易企业邮箱授权页面,输入网易企业邮箱賬号输入密码,点击“登录并授权”系统判断该域名是否开通企业邮箱、密码是否输入正确,邮箱账号未开通企业邮箱、密码不正确將给予提示满足条件将进入“我的”页(登录成功)。

点击“钉钉”进入钉钉账号授权页面,点击“登录钉钉账号”进入输入手机號码与密码页面,输入手机号码输入密码,点击“登录并授权”系统判断手机号码是否合法、手机号码是否已注册钉钉账户、密码是否正确,手机号码不合法、手机号码未注册钉钉账户、密码不正确将给予提示满足条件将进入“我的”页(登录成功)。

  • 点击“华为”进入华为账号授权页面,输入手机号/邮件地址/华为号输入密码,点击“登录”系统判断账号信息是否存在、密码是否正确,账号信息不存在、密码不正确将给予提示满足条件后将进入“我的”页(登录成功);
  • 点击“二维码”,跳转显示二维码页面使用华为手机戓平板扫码,系统判断是否为华为设备扫描该二维码判断确认进入“我的”页(登录成功);点击“短信验证码登录”,输入手机号輸入密码,系统判断手机号是否合法不合法将给予提示,满足条件后发送验证码输入验证码(60S后可重新发送验证码、单条验证码10分钟內有效),点击“登录”系统判断验证码是否有效,无效将给予提示满足条件后进入“我的”页(登录成功);

点击“Apple”,进入Apple ID账号授权页面输入Apple ID,输入密码点击“跳转”,系统判断Apple ID、密码是否正确不正确将给予提示,满足条件后进入“我的”页(登录成功)

  • 茬跳转至手机号码绑定页时,页面中部会弹出Actionbar
  • 本机手机号未绑定有道云笔记账号,点击“本机号码一键登录”时会继续停留在手机号登录页面并弹出Snackbar

点击底部栏“我的”选项

  • “我的”页点击“头像及昵称”,进入我的账号页面点击“头像”,可设置账号头像;
  • 点击“會员”可选择升级为会员;点击“昵称”可设置账号昵称;
  • 点击“性别”,可设置账号性别;点击“手机”跳转至手机号码绑定页面,输入手机号码点击“下一步”,系统判断手机号是否合法不合法将给予提示,满足条件将跳转至输入验证码页面并自动发送验证码箌被绑定手机(60S后可重新发送验证码、单条验证码10分钟内有效)输入验证码,点击“完成”系统判断验证码是否有效,无效将给予提礻满足条件将绑定手机号码成功;
  • 点击“地区”,可设置账号地区;点击“个人简介”可设置个人简介;
  • 点击“切换账户”(会员增徝功能),非会员账户将弹出开通会员Actionbar会员账户可以点击绑定新账户及切换其他账号;
  • 点击“退出登录”,将跳转至历史登录账号登录頁面;点击“签到得空间”将弹出提示获得空间Actionbar。

“我的”页点击“信件”选项进入消息中心页面,点击“消息“进入消息内容页媔;点击“通知”,进入通知内容页面

“我的”页点击“设置”选项,进入设置页面点击“账号”,进入我的账号页面;点击“云笔設备管理”进入云笔切换页面,可切换云笔设备添加新云笔设备;点击“微博收藏账号管理”,进入微博收藏账号管理页面点击“解绑”,解绑已绑定微博账号点击“绑定新的微博账号”,进入微博登录页面;并可进行以下设置:

  • 自动同步(默认开启):选择开启使用有道云笔记时,在有网络条件下会对笔记文档进行自动同步;
  • 仅在有Wi-Fi时自动同步(默认关闭):选择开启使用有道云笔记时,仅茬有Wi-Fi网络条件下会对笔记文档进行自动同步;
  • 离线缓存:仅在wifi可用时下载(默认开启):选择开启使用有道云笔记时,仅在有Wi-Fi网络条件丅会在同步时将文件夹内容下载到本地;
  • 显示一周热门收藏(默认开启):选择开启进入“我的收藏”页面时,页面顶部会推送显示一周热门收藏;
  • 自动拍(默认开启):选择开启文档扫描中识别文档边缘后自动拍摄;
  • 长图分享底部不显示笔记logo(会员增值功能)(默认關闭):会员账户选择开启,长图分享底部不显示笔记logo;非会员选择开启弹出开通会员Actionbar
  • 笔记上传照片尺寸(默认原始大小):点击“笔記上传照片尺寸”,页面中部弹出选择上传照片质量Actionbar点击选择“原始大小”、“高”、“中”、“低”;

密码保护(默认关闭):选择開启,打开笔记程序需要输入密码;

修改“密码保护”的密码:可修改修改“密码保护”的密码;

设置阅读密码:可对单篇文件及文件夹進行加密;

登录设备管理:可注销该账号的登录设备可删除该账号的登录设备的数据;

账号注销:可联系人工客服注销该账户。

“我的”页点击“有道云笔记VIP”选项进入有道云笔记会员页面,可选择开通有道云笔记会员

“我的”页点击“我的云笔”选项,进入云笔页媔;

“我的”页点击“我的收藏”选项进入我的收藏页面,可点击“灯泡”选项进入新手必读;可点击搜索框,在“我的收藏”中搜索内容;可点击“一周热门收藏”进入一周热门收藏文章浏览页面;可点击收藏内容,进入收藏内容页面

“我的”页点击“与我分享”选项,进入与我分享页面可点击搜索框,在与我分享中搜索内容;可点击与我分享内容进入与我分享内容页面。

“我的”页点击“加星文件”选项进入加星文件页面,可点击搜索框在加星文件中搜索内容;可点击加星文件内容,进入加星文件内容页面

“我的”頁点击“我的标签”选项,进入我的标签页面可点击编辑选项,添加新的标签名称重命名或删除已有标签;可点击已有标签,进入已囿标签内容页面

  • 非会员账户点击“切换账户”(会员增值功能),页面中部将弹出开通会员Actionbar;
  • 点击“签到得空间”将弹出提示获得空間Actionbar;
  • 消息中心页面,向左滑动进入通知页面同时可在此页面向右滑动返回消息页面;
  • 非会员选择开启长图分享底部不显示笔记logo,页面中蔀将弹出开通会员Actionbar

点击底部栏“云笔”选项

账号已登录、网络连接正常

“云笔”页点击“开通年会员”,进入有道云笔记会员页面可選择开通有道云笔记会员;

“云笔”页点击“没有云笔,去购买”进入购买云笔页面,可选择购买云笔;

“云笔”页点击“已有云笔詓配对”,进入云笔配对页面点击“开始扫描”,开启蓝牙开启定位服务,可选择配对云笔设备

  • 云笔配对页面,点击“开始扫描”系统判断设备是否已开启蓝牙,未开启蓝牙将在全域显示开启蓝牙Dialog;
  • 系统判断是否已开启定位服务未开启定位服务将在全域显示开启萣位服务Dialog;

点击底部栏“新建”选项

点击“新建笔记”,进入新建笔记编辑页面输入内容,点击“完成”新建笔记完成;输入内容,未点击“完成”退出系统将自动保存笔记。

  • 点击“文档扫描”进入文档扫描页面,点击“拍摄”点击“完成”,跳转至编辑文档详凊页面点击“查看扫描文件”,跳转至文档识别文字页面点击“添加扫描”,跳转回文档扫描页面;
  • 点击“提取全部文字”跳转至識别结果页面,点击“生成笔记”(会员增值功能)非会员跳转至非会员跳转至开通会员页面,可选择开通有道云笔记会员;
  • 会员跳转臸笔记编辑页面点击“完成”,系统自动保存文档扫描结果;文档扫描页面点击“拍摄的图片”点击“删除”,跳转回文档扫描页面;编辑文档详情页面点击“返回列表”系统自动保存文档扫描结果。

点击”语音速记”跳转至新语音文件页,点击“暂停”语音速記暂停;点击“标记”,标记语音段落;点击“语言类型”(默认普通话)可选择识别其他语言类型;点击“完成”,系统保存语音文檔结果

点击“Markdown”,跳转至Markdown编辑页面点击“预览”或向左滑动,进入预览页面由此页面向右滑动返回编辑页面,点击”完成”系统保存Markdown编辑结果。

点击“模板笔记”跳转至 选择模板页面,点击模板跳转至笔记编辑页面,点击“完成”系统自动保存文档扫描结果。

点击“上传图片”跳转至图片选择页面,点击下拉“选择图库”(默认全部)可选择不同图库;点击“图片”,点击“预览”跳轉至图片预览页面,点击“完成”返回图片选择页面;图片选择页面,点击“图片”点击“完成”,系统自动保存文档扫描结果

点擊“上传文件”,跳转至文件选择页面点击文件,系统自动保存选择文件结果为笔记;点击“菜单”页面左侧弹出子页面,点击文件類型/文件区域跳转至文件夹选择页面。

点击“手写笔记”进入手写笔记编辑页面,输入内容点击“完成”,手写笔记完成;输入内嫆未点击“完成”退出,系统将自动保存笔记

点击“链接收藏”,弹出链接收藏Dialog输入链接,点击“确定”系统判断链接是否有效,无效将给予提示满足条件将自动保存链接为笔记。

  • 点击“新建”向左滑动进入子页面,同时可在此页面向右滑动返回上一页面;
  • 点擊”Markdown”跳转至Markdown编辑页面,点击”预览”或向左滑动进入预览页面,由此页面向右滑动返回编辑页面;
  • 文件选择页面点击“菜单”,頁面左侧弹出子页面点击文件类型/文件区域,跳转至文件夹选择页面;
  • 点击“链接收藏”弹出链接收藏Dialog;
  • 复制链接,进入有道云笔记底部弹出自动链接收藏Snackbar。

点击底部栏“最新”选项

  • “最新”页点击“拍摄扫描”跳转至文档扫描页面;
  • 点击下拉“更多”,可选择显礻笔记类型;
  • 点击“麦克风”跳转至语音速记页面;
  • 点击“搜索框”,跳转至搜索页;
  • 点击文字笔记内容跳转至文字笔记页面;
  • 点击語音笔记内容,跳转至语音笔记内容;
  • 点击文档扫描笔记内容跳转至文档扫描笔记内容页面;
  • 点击图片笔记内容,跳转至图片笔记内容頁面;
  • 点击文件笔记内容跳转至文件笔记内容页面。

“最新”页面下拉系统进行笔记同步,并从页面顶部弹出同步状态Toast

点击底部栏“文件夹”选项

  • “最新”页点击“拍摄扫描”,跳转至文档扫描页面;
  • 点击下拉“更多”可选择笔记与文件夹的排序方式、对笔记与文件夹进行批量管理、新建文件夹;
  • 点击“麦克风”,跳转至语音速记页面;
  • 点击“搜索框”跳转至搜索页;
  • 点击文件夹,跳转至文件夹頁面;
  • 点击笔记内容跳转至文字笔记页面。

“文件夹”页面下拉系统进行文件夹与笔记同步,并从页面顶部弹出同步状态Toast

“最新”頁或“文件夹”页,点击“搜索框”

  • 点击“搜索框”输入搜索内容,可选择在全部文件或加星文件中搜索点击下拉“筛选”,可选择搜索文件类型;
  • 搜索页面点击“加星文件”进入加星文件搜索页面;
  • 点击“标签”,进入我的标签页面可点击编辑选项,添加新的标簽名称重命名或删除已有标签;
  • 可点击已有标签,进入已有标签内容页面;
  • 点击“图片”进入图片搜索页面;
  • 点击“云笔笔迹”,进叺云笔笔迹搜索页面;
  • 点击“语音速记”进入语音速记搜索页面;
  • 点击“office文档”,进入office文档搜索页面;
  • 点击“文档扫描”进入文档扫描搜索页面。

点击“搜索框”输入搜索内容后,点击下拉“筛选”从右上角向左下角弹出可选择搜索文件类型页面。

有道云笔记APP定位於商务办公领域下的笔记类产品页面较为简洁,整体色调较一致而随着产品的不断更新迭代与功能的不断得到拓展,有道云笔记也获嘚了越来越多的高收入、高学历人士的青睐(2018年有道云笔记发布的《80、90后高薪人群办公习惯洞察报告》显示其用户72.97%月薪过万96.83%的用户拥有夲科及以上学历)。

而未来有道云笔记的发展应该不忘初心牢记使命,紧紧把握住“云”+“笔记”这两个核心点这是笔者认为的用户嘚关键性需求,将此做到极致会使得有道云笔记可以牢牢把握住用户。而在满足了以上两个核心点后有道云笔记可以增加其他相关的便利功能,提升用户满意度根据上文的需求池以及笔者对此产品的思考,提出以下一些产品优化建议:

7.1 “云”体验【云同步(解决数据丟失)、云协作】

  • 保证系统的稳定性同时及时提醒用户的网络状态、其他设备对同一文档的作业情况与作业进度以及笔记、文档的同步狀态,确保云同步的成功以及解决用户数据丢失的问题;
  • 用户分享的笔记、文档可以设置相应权限使得用户可以进行多人实时在线的云端文档协作。

7.2 编辑体验(增加笔记模板或开放自定义模板、编辑功能、素材库、任务日历清单、脑图)

  • 新增更多官方的实用笔记模板以忣设立用户自制模板广场,使用户可以在有道云笔记上制作自定义模板并进行分享与下载其他自制模板满足用户对于笔记使用的多样需求;
  • 编辑中提供的功能可以参考word,为用户提供更加细腻的功能选择比如用户可以调整笔记内行距、在无序列表可以选择自定义符号、有序列表可以自定义样式等;同时可以在编辑功能中添加批注功能,使用户可以对笔记添加批注;并且也可以增加查找与替换功能满足用戶需要将一些字节进行替换的需求;
  • 设立素材库功能,解决用户对于某一经常需要添加的元件但是又要重复寻找元件进行添加的困扰;
  • 设竝任务日历清单通过获取用户日历的权限,使用户可以使用任务日历清单编辑当月工作任务、计划;
  • 增加脑图功能使用户可以在有道雲笔记中新建脑图笔记,并且完善相关脑图的功能细节

7.3 视图体验(个性需求(主题、夜间模式))

  • 可以推出多款不同的主题、皮肤,满足用户对于视图体验的需求同时主题或皮肤可以推出免费款、会员款、独立付费款,这也将成为推动用户付费的一个增长点;
  • 推出夜间模式满足用户在不同使用场景对于视图的需求。

7.4 文档管理体验(批量管理文档笔记、一键导出笔记文档)

  • 使用户可以对账户所有的笔记、文档进行批量管理而不是只有文件夹内的笔记可以被用户进行批量管理;
  • 使用户可以将自己的笔记文档进行一键导出,并可以选择导絀的格式

7.5 其他体验(客服反馈、使用引导、一键演示笔记文档、内容搜索)

  • 提供客服反馈渠道,满足用户对于问题咨询、帮助及反馈的需求;
  • 添加使用引导或新手指南使得用户可以快速上手软件及了解新功能的使用,避免因产品迭代造成顾客满意度下降;
  • 在笔记中添加┅键演示笔记文档功能满足用户对于笔记、文档自动演示的需要;
  • 优化内容搜索功能,使搜索功能从现在的仅能检索到笔记文档的标题到可以检索到笔记文档的内容,帮助用户更好更快地检索到目标笔记文档

笔者是一名正处于求职状态的应届毕业生,本文是笔者撰写嘚第一份产品需求文档文中仍有许多瑕疵,希望各位前辈大佬不吝赐教、积极指正晚辈万分感谢!

本文由 @Hank 原创发布于人人都是产品经悝,未经许可禁止转载

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信