├── API-AutoTesting ├── Images │ ├── nonefile │ ├── postman工作原理.png │ └── postman的基础功能.png └── README.md ├── Images ├── H模型.png ├── OSI参考模型.jpeg ├── V模型.png ├── W模型.png ├── X模型.png ├── nonefile ├── 软件测试分类的三维空间.jpg ├── 软件测试执行过程中的三个阶段.png └── 软件测试的工作流程.png ├── README.md ├── Selenium-Usage └── README.md ├── Tools-Usage ├── Images │ ├── nonefile │ └── ubuntu错误提示.png ├── README.md └── fiddler从安装到使用及细节问题.md ├── UI-AutoTesting ├── Images │ ├── Xpath定位.png │ ├── css选择器定位.png │ ├── nonefile │ ├── selenium安装截图.png │ ├── webdriver安装成功.png │ ├── 元素属性.png │ └── 测试金字塔.png └── README.md ├── 软件测试方法 └── README.md └── 软件测试过程 └── README.md /API-AutoTesting/Images/nonefile: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /API-AutoTesting/Images/postman工作原理.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/API-AutoTesting/Images/postman工作原理.png -------------------------------------------------------------------------------- /API-AutoTesting/Images/postman的基础功能.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/API-AutoTesting/Images/postman的基础功能.png -------------------------------------------------------------------------------- /API-AutoTesting/README.md: -------------------------------------------------------------------------------- 1 | ## 接口自动化测试 2 | 3 | ``` 4 | Date : 2020 - 03 - 19 5 | 6 | Author : Soler HO 7 | 8 | Description : 接口自动化测试 9 | ``` 10 | # 接口测试基础 11 | 12 | ## 接口测试的概述 13 | 应用程序编程接口(Application ProgrammingInterface,API)。 14 | 15 | ### 接口的定义? 16 | 两个`不同的系统`或者一个系统中`两个不同的功能`,它们之间相互连接的部分称为**接口** 。 17 | 18 | 常说的接口测试有两种: 19 | - 图形用户接口(Graphical User Interface,GUI),是人与程序的接口; 20 | - 应用程序编程接口(Application ProgrammaInterface,API) 21 | - API是一组定义、程序及协议的集合,API可实现计算机软件之间的相互通信。 22 | - 主要功能:提供通用功能集 23 | 24 | ### 接口的分类 25 | 26 | 根据遵循协议的不同,接口分为3类: 27 | - **HTTP接口**,:基于超文本传输协议(HyperTextTransfer Protocol,HTTP)开发的接口,但并不能排除没有使用其他协议。 28 | - 基于浏览器/服务器模式(Brower/Server,B/S)的软件系统接口大多数为HTTP接口 29 | - **Web Service接口**:系统对外的接口。 30 | - **RESTful接口,简称为REST**:其描述了一个架构样式的网络系统,核心是面向资源。 31 | 32 | ## HTTP协议 33 | 34 | ## 接口测试的流程 35 | 36 | #### 1.编写接口测试计划 37 | 接口测试计划包含`概述、测试资源、测试功能及重点、测试策略、测试风险、测试标准`。 38 | #### 2.编写、评审接口测试用例 39 | 根据`需求文档、接口文档`等项目相关文档编写并`评审接口测试用例`。 40 | #### 3.执行接口测试 41 | 依据编写的接口测试用例,借助`测试工具(如Postman、JMeter、SoapUI等)`执行接口测试,上报发现的问题。 42 | #### 4.接口自动化测试持续集成要点 43 | 借助`工具Jenkins`进行持续集成。 44 | - 接口自动化持续集成的主要内容: 45 | 46 | - 流程方面:在回归阶段加强接口异常场景的覆盖,并逐步向系统测试、冒烟测试阶段延伸,最终达到全流程自动化。 47 | - 结果展示:丰富的结果展示、趋势分析、质量统计和分析等。 48 | - 问题定位:报错信息、日志更精准,方便问题复现与定位。 49 | - 结果校验:加强自动化校验能力,如数据库信息校验。 50 | - 代码覆盖率:尝试由目前的黑盒向白盒下探,提高代码覆盖率。 51 | - 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。 52 | 53 | ## 一个完整的API文档包含的主要部分 54 | ① 接口名称。 55 | 56 | ② 简要描述。 57 | 58 | ③ 请求的URL。 59 | 60 | ④ 请求方式(GET / POST等)。 61 | 62 | ⑤ 请求参数(参数名、是否必选、参数类型、说明)。 63 | 64 | ⑥ 返回示例。 65 | 66 | ⑦ 返回参数说明(参数名、类型、说明)。 67 | 68 | ⑧ 备注及责任人。 69 | 70 | ## postman概述 71 | 72 | #### postman工作原理 73 | ![](https://github.com/SolerHo/Software-Testing/blob/master/API-AutoTesting/Images/postman%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.png) 74 | 75 | ①postman点击send发送请求给服务器 76 | 77 | ②服务器响应,对数据进行处理,然后返回给postman 78 | 79 | ③对返回内容进行加工处理,把格式化后的内容显示出来 80 | 81 | #### postman的基础功能 82 | 83 | ![](https://github.com/SolerHo/Software-Testing/blob/master/API-AutoTesting/Images/postman%E7%9A%84%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD.png) 84 | 85 | ## postman基本操作 86 | 87 | ## postman脚本问题 88 | -------------------------------------------------------------------------------- /Images/H模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/H模型.png -------------------------------------------------------------------------------- /Images/OSI参考模型.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/OSI参考模型.jpeg -------------------------------------------------------------------------------- /Images/V模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/V模型.png -------------------------------------------------------------------------------- /Images/W模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/W模型.png -------------------------------------------------------------------------------- /Images/X模型.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/X模型.png -------------------------------------------------------------------------------- /Images/nonefile: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Images/软件测试分类的三维空间.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/软件测试分类的三维空间.jpg -------------------------------------------------------------------------------- /Images/软件测试执行过程中的三个阶段.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/软件测试执行过程中的三个阶段.png -------------------------------------------------------------------------------- /Images/软件测试的工作流程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Images/软件测试的工作流程.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Auto-Testing 2 | 自动化测试,包括了UI自动化和接口自动化测试! 3 | 4 | ``` 5 | Date : 2020 - 03 - 17 6 | 7 | Author : Soler HO 8 | 9 | Description : 10 | ``` 11 | # 什么是软件测试? 12 | 测试(Test)就是为检测特定的目标是否符合标准而采用专用的工具或者方法进行验证,并最终得出特定的结果。 13 | 14 | 15 | `软件测试(Software Testing)`:在有限的时间内`提高软件质量`的保证,是软件开发过程中重要的部分。 16 | 17 | # 软件测试的目的 18 | - 测试并不仅是为了找出错误,而且要通过分析错误产生的原因和错误的发生趋势,帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。 19 | - 需要测试工程师设计出具有针对性的测试方法,以改善测试的有效性。 20 | - 没有发现错误的测试也是有价值的,完整的测试是评估软件质量的一种方法。 21 | 22 | 综上总结:软件测试目的是**尽可能早的发现软件中存在的陷并提高软件质量**。 23 | 24 | # 软件测试的工作流程 25 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B.png) 26 | 27 | # 软件测试的过程 28 | ### 测试设计阶段 29 | #### 1.制定计划 30 | - 主要工作: 31 | - 对需求规格说明书的仔细研究 32 | - 将要测试的产品分解成可独立测试的单元 33 | - 为每一个测试单元确定采用的测试技术 34 | - 为测试的下一个阶段及其活动制定计划 35 | - 制定计划包括两个部分: 36 | - 概要测试计划 37 | - 详细测试计划 38 | #### 2.测试用例 39 | 测试大纲是软件测试的依据,包括`测试项目`、`测试步骤`、`测试完成的标准`。 40 | - 测试大纲的本质 41 | 从测试的角度对被测对象的功能和各种特性的细化和展开。 42 | 43 | - 测试大纲的好处 44 | - 保证测试功能不被遗漏,也不被重复测试 45 | - 合理安排测试人员 46 | - 使得软件测试不依赖个人 47 | 48 | #### 3.软件测试的报告 49 | 软件测试报告是软件测试过程中最重要的文档,包括如下内容: 50 | - 记录问题发生的环境 51 | - 记录问题的再现步骤 52 | - 记录问题性质的说明 53 | - 记录问题的处理进程 54 | - 问题处理进程从一定角度上反映测试的进程和被测软件的质量状况以及改善过程。 55 | ### 测试执行阶段 56 | 软件测试执行过程的三个阶段 57 | 58 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B%E4%B8%AD%E7%9A%84%E4%B8%89%E4%B8%AA%E9%98%B6%E6%AE%B5.png) 59 | 60 | - #### 初测期 61 | - 测试主要的功能和关键的执行路径,排除主要的障碍。 62 | - #### 细测期 63 | - 依据测试计划和测试大纲、测试用例,逐一测试功能、特性、性能、用户界面、兼容性、可用性等。 64 | - 预期可发现大量不同的性质、不同严重程度的错误和问题。 65 | - #### 回归测试期 66 | - 系统已达到稳定,在一轮测试中发现的错误已十分有限;复查已知错误的纠正情况,确认未引发任何新的错误时,终结回归测试。 67 | 68 | #### 2.集成测试过程中的两个重要部分 69 | 在集成测试过程中的两个重要部分是`功能冻结`和`代码冻结`的确定。这两个部分界定出回归测试期的起止界限。 70 | - **功能冻结(Function/Feature Freeze)** 71 | - 经过测试,符合设计要求,确认系统功能和其他特性均不再做任何改变。 72 | - **代码冻结(Code Freeze)** 73 | - 理论上,在无错误时冻结程序代码,但实际上,代码冻结只标志系统的当前版本的质量已达到预期的要求,冻结程序的源代码,不再对其做任何修改。这个里程碑是设置在软件通过最终回归测试之后。 74 | 75 | 76 | 77 | # 软件测试的模型 78 | 软件测试根据不同的测试对象以及测试项目的背景可采用不同的测试模型实施测试活动。 79 | 80 | 软件测试模型有:`V模型、W模型、H模型、X模型、敏捷测试`等。 81 | 82 | ### V模型 --- 主要应用在快速的软件开发 83 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/V%E6%A8%A1%E5%9E%8B.png) 84 | 85 | - V模型中的过程从左到右,描述了基本的开发 过程和测试行为。 86 | - V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 87 | - 局限性: 88 | - 把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现. 89 | - 容易使人理解主要是针对程序进行测试寻找错误 90 | 91 | ### W模型 --- 主要应用在一些中型软件并且业务逻辑关联紧密的项目中 92 | 93 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/W%E6%A8%A1%E5%9E%8B.png) 94 | 95 | - V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试” 的原则。 96 | - 在V模型中增加软件各开发阶段应同步进行的测试,演化为W 模型 。 97 | - 开发是“V”,测试是与此并行的“V”。 98 | - 相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。 99 | 100 | W模型也有局限性。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,`无法支持迭代、自发性以及变更调整`。 101 | 102 | ### H模型 103 | 104 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/H%E6%A8%A1%E5%9E%8B.png) 105 | 106 | H模型中, 软件测试过程活动`完全独立`,`贯穿于整个产品的周期`,与其他流程`并发地进行`,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。 107 | 108 | 软件测试可以`尽早进行`,并且可以根据`被测物的不同`而`分层次进行`。 109 | 110 | ### X模型 111 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Images/X%E6%A8%A1%E5%9E%8B.png) 112 | 113 | 很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点) 114 | 115 | 左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。 116 | 117 | 己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。 118 | 119 | X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。 120 | 121 | 122 | # 软件测试的理念 123 | ### 尽早测试 124 | - 测试人员尽早参与软件项目,及时开展测试的准备工作,包括编写测试用计划、制定测试方案、测试用例。 125 | 126 | - 尽早地开展测试执行工作,一旦代码模块完成就应该开展单元测试,代码模块被集成为相对独立的子系统,就开展集成测试,一旦有了Build提交,便可以开展系统测试工作。 127 | 128 | 129 | ### 全面测试 130 | - 对软件的所有产品进行全面的测试,包括需求、设计文档、代码、用户文档。 131 | - 软件开发及测试人员全面参与到测试工作中,如对需求的验证和确认。 132 | 133 | 134 | ### 全过程测试 135 | - 测试人员要充分关注开发过程。 136 | - 测试人员要对测试的全过程进行全程的跟踪。 137 | 138 | ### 独立的、迭代的测试 139 | - 只要测试条件成熟,测试准备活动完成,测试的执行活动就可以开展。 140 | 141 | ### 专业的测试部门完成 142 | - 程序员应该避免测试自己的程序。 143 | 144 | ### 测试计划 145 | - 制订严格的测试计划,安排足够的测试时间 146 | 147 | ### 修改有记录 148 | 149 | # 测试用例(Test Case) 150 | 指对一项特定的软件产品测试任务的描述,体现`测试方案、测试方法、测试策略和技术`。 151 | 152 | ### 1.测试用例的重要性 153 | - 避免程序遗漏 154 | - 测试进度的把控 155 | - 一个度量指标 156 | - 分析缺陷的依据 157 | - 项目的管理成本 158 | 159 | ### 2.测试用例的写作思路 160 | 编写测试用例需要遵守**5C原则(Correct准确、Clear清晰、Concise简洁、Complete完整、Consistent一致)** 。 161 | 162 | 大多数的测试用例包括: 163 | 164 | - 用例编号 165 | - 测试用例的唯一标识,主要用来识别测试用例的目的。 166 | - 用例编号需要具有指引性和维护性,格式一般由字母、数字、下划线组成。 167 | - 所属模块 168 | - 为了更好识别以及维护用例。 169 | - 用例标题 170 | - 简洁明了的一句话来描述测试用例的关注点,原则上测试标题也具有唯一性。 171 | - 用例优先级 172 | - 一般划分为三个级别:高、中、低。 173 | - 高优先级别用例是指软件的核心业务、基本功能、重要特性以及使用频率比较高的部分。 174 | - 前提条件 175 | - 指测试用例在执行前需要满足的一些的条件,否则测试用例无法执行。 176 | - 因果关系 177 | - 测试数据 178 | 179 | - 操作步骤 180 | - 执行测试用例的步骤描述,测试用例执行人员根据该操作步骤完成测试执行。 181 | - 预期结果 182 | - 用来判断被测对象是否正常。 183 | - 根据需求规格说明书来描述用户的期望。 184 | 185 | - 用例状态 186 | - 用例状态一般分三种:**PASS通过、FAIL失败、N/A未执行**。 187 | 188 | # 软件测试的流程 189 | ![](https://github.com/SolerHo/Software-Testing/blob/master/Images/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95%E5%88%86%E7%B1%BB%E7%9A%84%E4%B8%89%E7%BB%B4%E7%A9%BA%E9%97%B4.jpg) 190 | 191 | 按照测试层次划分为四个层次: 192 | 193 | - 底层层次:[**单元测试(Unit Testing)**]() 194 | - 接口层次:[**集成测试(Integration Testing)**]() 195 | - 系统层次:[**系统测试(System Testing)**]() 196 | - 用户层次:[**验收测试(Acceptance Testing,Beta Testing)**]() 197 | 198 | - [**回归测试**]() 199 | 200 | # 软件测试的方法 201 | 202 | 一般按以下三种方式划分: 203 | - 按照执行`阶段`划分为:**[白盒测试]()、[黑盒测试]()、灰盒测试**。 204 | - 按照执行`状态`划分为:**[静态测试]()、[动态测试]()**。 205 | - 按照执行`行为`划分为:**手动测试、自动测试**。 206 | 207 | # 软件测试的工具 208 | ### 配置管理工具 209 | - [SVN]() 210 | 211 | ### 缺陷管理工具 212 | - [Quality Center]() 213 | - [JIRA]() 214 | - [禅道]() 215 | - [Bugzero]() 216 | - [Mantis]() 217 | 218 | ### 性能测试工具 219 | - [kylinpet]() 220 | - [LoadRunner]() 221 | - [SmartMeter.io]() 222 | 223 | ### UI测试工具 224 | - [Airtest]() 225 | 226 | ### 接口测试工具 227 | - [Postman]() 228 | - [Jmeter]() 229 | 230 | ### 抓包工具 231 | - [fiddler]() 232 | - [httpwatch]() 233 | - [Wireshark]() 234 | - [Charles]() 235 | - [Thor]() 236 | 237 | ### 自动化测试工具 238 | - [Appium]() - - - App UI自动化测试 239 | 移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台 240 | 241 | - [Selenium]() - - - Web UI 自动化测试 242 | Web应用程序测试的工具,Selenium测试直接运行在浏览器中。 243 | 244 | - [Postman]() - - - 接口测试 245 | 246 | - [Robot Framework]() - - - Web UI自动化测试,接口测试,APP测试 247 | 248 | - [Jmeter]() - - - 接口测试,性能测试 249 | 250 | - [Loadrunner]() - - - 性能测试 251 | 预测系统行为和性能的负载测试工具。 252 | 253 | - [Monkey]() - - - App稳定性测试 254 | 255 | - [GT]() - - - App性能测试 256 | 257 | - [Appscan]() - - - 安全性测试 258 | 259 | - [Jenkins]() - - - 持续集成 260 | 自动化构建、编译、部署、任务执行、测试报告等。 261 | 262 | # 常见的通信协议 263 | ### OSI协议 264 | ![](https://github.com/SolerHo/Software-Testing/blob/master/Images/OSI%E5%8F%82%E8%80%83%E6%A8%A1%E5%9E%8B.jpeg) 265 | 266 | ### TCP/IP协议 267 | ### HTTP协议 268 | 超文本传输协议(Hyper Text Transfer Protocol,简称HTTP) 269 | 270 | 最广泛的一种网络协议,是一种属于应用层的面向对象的协议。 271 | 272 | 273 | ### HTTPS协议 274 | 275 | # 软件测试的基本素养 276 | 277 | -------------------------------------------------------------------------------- /Selenium-Usage/README.md: -------------------------------------------------------------------------------- 1 | ## Selenium自动化测试 2 | 3 | -------------------------------------------------------------------------------- /Tools-Usage/Images/nonefile: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Tools-Usage/Images/ubuntu错误提示.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/Tools-Usage/Images/ubuntu错误提示.png -------------------------------------------------------------------------------- /Tools-Usage/README.md: -------------------------------------------------------------------------------- 1 | ## 工具使用笔记 2 | -------------------------------------------------------------------------------- /Tools-Usage/fiddler从安装到使用及细节问题.md: -------------------------------------------------------------------------------- 1 | ``` 2 | Date : 2020 - 03 - 17 3 | 4 | Author : Soler HO 5 | 6 | Description : fiddler从安装到使用及细节问题 7 | ``` 8 | ## fiddler在Ubuntu Linux上的安装 9 | 10 | #### 安装mono 11 | ``` 12 | sudo apt-get install mono-complete 13 | ``` 14 | 15 | 如果在安装过程中出现了如下的错误: 16 | ``` 17 | E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) 18 | E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? 19 | ``` 20 | 截图如下: 21 | ![](https://github.com/SolerHo/Auto-Testing/blob/master/Tools-Usage/Images/ubuntu%E9%94%99%E8%AF%AF%E6%8F%90%E7%A4%BA.png) 22 | 23 | 解决方案: 24 | ``` 25 | sudo rm /var/lib/dpkg/lock-frontend 26 | 27 | sudo rm /var/lib/dpkg/lock 28 | 29 | ``` 30 | 31 | 在fiddler的官网下载最新版本,下载地址:http://fiddler.wikidot.com/mono 32 | 33 | 使用命令行解压文件,然后切换到fiddler.exe文件所在的目录,使用下面命令: 34 | ``` 35 | mono fiddler.exe 36 | ``` 37 | 38 | -------------------------------------------------------------------------------- /UI-AutoTesting/Images/Xpath定位.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/Xpath定位.png -------------------------------------------------------------------------------- /UI-AutoTesting/Images/css选择器定位.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/css选择器定位.png -------------------------------------------------------------------------------- /UI-AutoTesting/Images/nonefile: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /UI-AutoTesting/Images/selenium安装截图.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/selenium安装截图.png -------------------------------------------------------------------------------- /UI-AutoTesting/Images/webdriver安装成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/webdriver安装成功.png -------------------------------------------------------------------------------- /UI-AutoTesting/Images/元素属性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/元素属性.png -------------------------------------------------------------------------------- /UI-AutoTesting/Images/测试金字塔.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hanlen520/Software-Testing/242446f8273e58bf3132761e0cdac6aaa4b176a8/UI-AutoTesting/Images/测试金字塔.png -------------------------------------------------------------------------------- /UI-AutoTesting/README.md: -------------------------------------------------------------------------------- 1 | ## UI自动化测试 2 | 3 | ``` 4 | Date : 2020 - 03 - 19 5 | 6 | Author : Soler HO 7 | 8 | Description : UI自动化测试 9 | ``` 10 | # UI自动化测试 11 | 12 | ## 自动化测试概述 13 | 14 | #### 定义 15 | 把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念; 16 | 17 | **优势**:节约人力和时间成本。 18 | 19 | ## 测试金字塔 20 | 21 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/%E6%B5%8B%E8%AF%95%E9%87%91%E5%AD%97%E5%A1%94.png) 22 | 23 | 由敏捷大师Mike Cohn提出该概念,然后由Martin Fowler大师在此基础上提出了测试分层概念,以区别于传统的自动化测试。 24 | 25 | ## Selenium概述 26 | Selenium 是一个用于`Web 应用程序`的自动化测试工具。 27 | 28 | Selenium 直接运行在浏览器中,它可以`模拟用户的行为操作`,操作界面友好。 29 | 30 | Selenium 支持 `IE、GoogleChrome、Firefox、Opera` 等主流浏览器。 31 | 32 | Selenium也支持主流开发语言,如Java、Python、C#等。 33 | 34 | ### Selenium 和 Webdriver 的安装问题 35 | 36 | #### Selenium的安装 37 | - 如果你使用的 `Python语言` 进行自动化测试,命令行输入: 38 | 39 | ``` 40 | pip3 install selenium 41 | ``` 42 | 截图: 43 | 44 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/selenium%E5%AE%89%E8%A3%85%E6%88%AA%E5%9B%BE.png) 45 | 46 | #### Webdriver的安装 47 | 48 | 对于Python进行自动化时,要安装对应浏览器的 `Webdriver` 。查看浏览器的版本后下载对应的版本进行解压安装。 49 | 50 | 由于我使用的是Chrome浏览器,所以具体的下载地址:http://npm.taobao.org/mirrors/chromedriver/ 51 | 52 | Mac下的安装,Windows用户自行Google一下。 53 | 54 | 如果使用命令行对下载解压的文件移动到`usr/local/bin`,会出现没法移动文件. 55 | 56 | 所以可以使用 `command + shift + G` ,输入你要直接前往的`目录文件`。 57 | 58 | ![]() 59 | 60 | 将解压的Webdriver文件复制到文件目录下即可。 61 | 62 | **验证是否安装成功** 63 | ``` 64 | # coding = utf-8 65 | from selenium import webdriver 66 | 67 | wd = webdriver.Chrome() 68 | wd.get("http://www.baidu.com") 69 | ``` 70 | 71 | 以下结果则安装成功 72 | 73 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/webdriver%E5%AE%89%E8%A3%85%E6%88%90%E5%8A%9F.png) 74 | 75 | 76 | ### 使用浏览器插件Selenium IDE 77 | 78 | Selenium IDE是一个带有执行界面的,用于 `录制或编写脚本` 的初级工具。 79 | 80 | Chrome 浏览器 直接进入 `扩展程序应用商店` 搜索添加安装即可。 81 | 82 | 其他的浏览器不做一一介绍。 83 | 84 | ## Selenium元素定位问题 85 | 以百度搜索为例 86 | 87 | 在Selenium自动化测试中,提供了单个元素定位方式和多个元素定位方式。 88 | 89 | 两种方式都是根据`元素属性 ID、NAME、CLASS_NAME、TAG_NAME、CSS_SELECTOR、XPATH、LINK_TEXT、PARTIAL_LINK_TEXT` 来进行定位。 90 | 91 | ### Webdriver采用的基本元素定位方式 92 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/%E5%85%83%E7%B4%A0%E5%B1%9E%E6%80%A7.png) 93 | 94 | #### 一、针对单个元素定位 95 | 96 | #### 1.ID属性 97 | 98 | 可以看到,输入框的id为:kw,使用方法:` find_element_by_id` ,代码如下: 99 | ``` 100 | """ 101 | Date: 2020 - 03 - 19 102 | Author: Soler HO 103 | Description: ID属性定位 104 | """ 105 | 106 | # coding = utf-8 107 | import time 108 | from selenium import webdriver 109 | 110 | wb = webdriver.Chrome() 111 | wb.get("http://www.baidu.com") // 获取url 112 | wb.implicitly_wait(5) 113 | wb.find_element_by_id('kw').send_keys('python') 114 | wb.quit() 115 | ``` 116 | 117 | #### 2.name属性 118 | name属性为:wd ,使用的方法:`find_element_by_name`。代码如下: 119 | ``` 120 | """ 121 | Date: 2020 - 03 - 19 122 | Author: Soler HO 123 | Description: name属性定位 124 | """ 125 | 126 | # coding = utf-8 127 | import time 128 | from selenium import webdriver 129 | 130 | wb = webdriver.Chrome() 131 | wb.get("http://www.baidu.com") 132 | wb.implicitly_wait(5) 133 | wb.find_element_by_name('wd').send_keys('python') 134 | ``` 135 | #### 3.class_name属性 136 | class_name 属性为:s_ipt,使用的方法:`find_element_by_class_name`。代码如下: 137 | ``` 138 | """ 139 | Date: 2020 - 03 - 19 140 | Author: Soler HO 141 | Description: calss_name属性定位 142 | """ 143 | 144 | # coding = utf-8 145 | import time 146 | from selenium import webdriver 147 | 148 | wb = webdriver.Chrome() 149 | wb.get("http://www.baidu.com") 150 | wb.implicitly_wait(5) 151 | wb.find_element_by_class_name('s_ipt').send_keys('python') 152 | wb.quit() 153 | ``` 154 | 155 | #### 4.使用Xpath定位 156 | 使用的方法是:`find_element_by_xpath`。 157 | 158 | 具体的xpath获取方式: 159 | 160 | 定位到某个属性,然后右键 `copy ---> copy xpath`即可。 161 | 162 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/Xpath%E5%AE%9A%E4%BD%8D.png) 163 | 164 | 代码如下: 165 | ``` 166 | """ 167 | Date: 2020 - 03 - 19 168 | Author: Soler HO 169 | Description: xpath进行定位 170 | """ 171 | 172 | # coding = utf-8 173 | import time 174 | from selenium import webdriver 175 | 176 | wb = webdriver.Chrome() 177 | wb.get("http://www.baidu.com") 178 | wb.implicitly_wait(5) 179 | wb.find_element_by_xpath('//*[@id="kw"]').send_keys('python') 180 | wb.quit() 181 | 182 | ``` 183 | 184 | #### 5.对超链接的处理的`LINK_TEXT` 185 | HTML的代码中主要是以 `标签a` 对应,使用的方法是:`find_element_by_link_text`。 186 | 187 | HTML代码 188 | ``` 189 | 学术 190 | ``` 191 | 192 | Python代码 193 | ``` 194 | """ 195 | Date: 2020 - 03 - 19 196 | Author: Soler HO 197 | Description: Link_text定位 198 | """ 199 | 200 | # coding = utf-8 201 | import time 202 | from selenium import webdriver 203 | 204 | wb = webdriver.Chrome() 205 | wb.get("http://www.baidu.com") 206 | wb.implicitly_wait(10) 207 | wb.find_element_by_link_text(u'学术').click() 208 | ``` 209 | #### 6.链接处理`PARTIAL_LINK_TEXT` 210 | PARTIAL_LINK_TEXT 也用于对超链接的处理,它与 LINK_TEXT 不同的是,它是按`模糊搜索方式`处理的。 211 | 212 | #### 7.css选择器定位 213 | 使用ID、NAME等方式无法定位元素时,可使用 `CSS_SELECTOR`,使用的方法是:`find_element_by_css_selector`。 214 | 215 | css选择器定位,获取选择器的方式: 216 | 217 | ![](https://github.com/SolerHo/Software-Testing/blob/master/UI-AutoTesting/Images/css%E9%80%89%E6%8B%A9%E5%99%A8%E5%AE%9A%E4%BD%8D.png) 218 | 219 | Python代码如下: 220 | ``` 221 | """ 222 | Date: 2020 - 03 - 19 223 | Author: Soler HO 224 | Description: CSS选择器定位 225 | """ 226 | 227 | # coding = utf-8 228 | import time 229 | from selenium import webdriver 230 | 231 | wb = webdriver.Chrome() 232 | wb.get("http://www.baidu.com") 233 | wb.implicitly_wait(10) 234 | wb.find_element_by_css_selector('#kw').send_keys('Python3') 235 | ``` 236 | 237 | #### 二、针对多个元素定位 238 | -------------------------------------------------------------------------------- /软件测试方法/README.md: -------------------------------------------------------------------------------- 1 | ## 软件测试的方法 2 | -------------------------------------------------------------------------------- /软件测试过程/README.md: -------------------------------------------------------------------------------- 1 | ## 软件测试的过程 2 | 按照测试层次划分为四个层次: 3 | 4 | - 底层层次:**单元测试(Unit Testing)** 5 | - 接口层次:**集成测试(Integration Testing)** 6 | - 系统层次:**系统测试(System Testing)** 7 | - 用户层次:**验收测试(Acceptance Testing,Beta Testing)** 8 | --------------------------------------------------------------------------------