软件测试的前景与现状
软件测试越来越被企业重视,人才稀缺,市场需求扩大。
软件测试人员的职业生涯规划
初级软件测试人员专业知识点
其他需要掌握的知识点(仅列出部分)。
矿泉水瓶的测试
产品测试的基本要素
对一名初级软件测试人员来讲,当你对软件进行全面测试的时候,可以基于软件的 外观界面、功能、性能、安全性、兼容性、易用性 6 个方面开展。
思考如何在 “邮箱的登录测试” 中运用以上 6 个方面。
先了解一下软件项目组中所涉及的一些重要角色和关键词,它们分别是项目、项目经理、需求、用户、开发人员、测试人员和产品人员。

测试人员需要从哪些方面来对需求文档进行评审呢?
需求评审是测试人员非常重要的一项工作。据统计,50%以上的软件缺陷是由于前期的需求没有评审确认好而造成的。
作为一名软件测试工程师,从拿到软件需求的那一刻起,软件测试工作其实就已经开始,因为需要对软件需求文档进行需求评审。评审通过后,才可以具体开展测试工作。
软件质量
软件经过开发测试完成后,软件所展现出来的各项功能特性是否满足需求文档,是否满足用户的需求。如果满足,则表明这个软件质量很好;如果不满足,则表明软件质量不好。
软件测试
软件测试是从前期需求文档的评审,到中期测试用例设计及测试执行,再到后期问题单的提交和关闭等一系列的测试过程。
软件错误
测试人员在测试软件的过程中,当发现实际运行的结果和预期的结果不一致时(这个预期的效果其实就是指需求文档里面的规格要求),就把这个不一致的地方统称为软件错误。当然,软件错误不仅仅是指与需求文档不符的地方,在测试过程中,测试人员发现有影响用户体验和使用的任何地方,都可以把它当作软件错误提出来。
80/20原则
80% 的 Bug 集中在 20% 的模块里面,经常出错的模块经修复后还会出错。
测试原理分类
黑盒测试。不关注软件内部代码的结构和算法,只关注这个软件外部所展现出来的所有功能特性的测试。
白盒测试。只关注软件内部代码的结构和算法,而不关注这个软件外部所展现出来的功能点的测试。
测试阶段分类

软件测试计划的内容
软件测试计划的模板

功能测试的用例设计方法
用例设计的基本思路
如何评审测试用例
一般情况下,软件系统有两种常用的结构,一种是浏览器 / 服务器(Browser / Server,B/S)结构的软件系统,另一种是客户端 / 服务器(Client / Server,C/S)结构的软件系统。

前台环境的搭建
后台环境的搭建

前台环境搭建
只需要安装一个Windows桌面版的操作系统(如Windows 10操作系统等)和相应的客户端软件即可。
后台环境的搭建
提交Bug不仅仅是测试人员价值的体现,也是测试人员与开发人员沟通的重要桥梁,Bug的数量和质量将会对软件质量的改善起到重要的推动作用。
一个Bug所包括的内容

Bug记录的正确范例

测试管理工具
虽然每个公司所使用的Bug管理工具不同,但是它们对Bug的处理流程都大同小异,学会了其中一种,就很容易理解和操作其他的Bug管理工具。
回归测试的基本流程

回归测试是在系统测试人员完成了需求评审、测试计划、用例设计、环境搭建、Bug提交等关键性的测试工作之后所要开展的工作,可以说此时的测试人员已经完全融入测试体系当中,也完全可以胜任相应的测试工作了。
测试报告是一份描述软件的 测试过程、测试环境、测试范围、测试结果 的文档,用来分析总结系统存在的风险以及测试结论。
软件测试报告模板
自动化测试与手工测试相比,最大的一个区别是要求测试人员掌握一门脚本开发语言。
Selenium WebDriver
简单地说,Selenium WebDriver是一个被打了包的模块,该模块内部封装了一套可以操作网页元素的方法,当然单靠这个打了包的模块是没有办法完成Web自动化测试工作的,还需要程序把模块里面的方法调用出来才能实现对网页元素的操纵。
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver. maximize_window()
driver. get("http://account. ryjiaoyu.com/log-in")
time. sleep (3)
driver.find_element_by_xpath("//input[@id='Email']"). clear()
driver.find_element_by_xpath("//input [@id='Email']").send_keys("mmgss@qq.com")
driver.find_element_by_xpath("//input[@id='Password']"). clear()
driver.find_element_by_xpath("//input[@id='Password']"). send_keys("testpress")
driver.find_element_by_xpath("//input[@value='登录']").click()
driver. quit()
Web自动化测试的工具有很多,例如以前比较流行的QTP(升级版叫UFT),它一直被拿来与Selenium WebDriver作对比。首先,QTP是商业工具,需要付费购买,而Selenium WebDriver是开源的,无须购买;其次,QTP弱化了测试人员脚本设计能力,而Selenium WebDriver强化了测试人员脚本设计能力。深入比较二者后,越来越多的企业把目光转向了Selenium WebDriver。
在测试领域,HTTP接口一般代表的是HTTP接口或HTTPS接口,HTTP请求一般代表的是HTTP请求或HTTPS请求。具体情况需根据其遵循的协议而定。
可以把提供资源的一方称为服务端,把请求资源的一方称为客户端,而“接口”(Application Programming Interface,API)可以理解为服务端或服务端内的某个模块提供的一个可供“他人”调用其内部资源的“入口”。

再通俗一点说,HTTP接口测试的实质就是数据的传输和接收,传输的是接口地址中的参数,接收的是文本字符串,然后对比文本字符串是否正确。

了解 GET / POST 方式的 HTTP 请求
工具:Postman
当采用POST方式发送HTTP请求时,为了安全起见,其传递的参数不能直接放在URL中,这是POST方式与GET方式最大的不同点之一。
POST方式中的参数并不是直接放在URL中,而是放在了请求的Body中。所以如果要采用POST方式发送请求,普通的浏览器是没有办法完成的,只能寻求如Postman这样的专业工具。在接口测试中,具体是采用GET方式还是POST方式,这在接口文档中会有明确的规定。大家按接口文档的要求进行测试即可。
HTTP 的状态码
| 状态码 | 意义 |
|---|---|
| 200 | 代表你发送的请求成功了,服务端成功响应了你的请求。 |
| 202 | 代表你发送的请求已接受,但服务端还未完成处理。 |
| 301 | 你请求的资源已被永久地移动到新的URL,网页会跳转到新的地址。 |
| 302 | URL临时移动,与301类似。但资源只是临时被移动,客户端应继续使用原有URL。 |
| 400 | 客户端请求的语法错误,服务器无法理解。 |
| 403 | 资源不可用,服务器理解客户的请求,但拒绝处理它,通常是由于服务器上文件或目录的权限设置导致的Web访问错误。 |
| 404 | 服务器无法根据客户端的请求找到资源(网页),也就是代表着你请求的资源(网页)不存在了。 |
| 500 | 服务器的内部产生了错误,无法完成客户端的请求。 |
| 501 | 服务器不具备完成请求的功能,无法完成此请求。 |
了解HTTP请求/响应的协商过程
通过客户端发送HTTP请求到服务端看似很简单,只需要通过浏览器或Postman等相关工具就可以发送,然后等着接收服务端响应的资源即可。但实际上双方还有一个协商的过程,不是说客户端无论发送什么请求,服务端就必须给出相应的响应。客户端在发送请求时,是需要和服务端签订协议的,这个协议称为HTTP协议。
抓包工具:Firefox浏览器就自带抓包工具(有很多工具可供使用)

上图展示了客户端和服务端交互的信息,这些信息包括 消息头、请求头、响应头、Cookie、参数、响应 6 个选项的信息,对于耗时、堆栈跟踪、安全这些选项初级软件测试人员可不用关注。
通过Python代码发送HTTP请求
除了通过相关的工具可以发送HTTP请求外,还可以通过代码来发送HTTP请求。Python自带的很多模块也可以发送HTTP请求,如http.client,urllib2等模块,但这些自带的模块用起来很复杂,不建议使用。在这里可以使用一个第三方提供的requests模块,在该模块中已经封装了发送HTTP请求的方法。
import requests
test_params = 'q=漫步人生路’
r = requests.get('https://api.douban.com/v2/music/search', params=test_params)
print(r.status_code)
print(r.headers)
print(r.cookies)
print(r.json())
print(r.text)

有90%的企业在招聘软件测试人员时都要求应聘者了解Linux操作系统的相关知识,而近年来云计算的发展更是增加对Linux人才的需求。Linux操作系统同Windows操作系统一样,同样提供了图形操作界面。但Linux操作系统的核心并不在于图形界面,而是在于命令行界面。
Linux操作系统有多个版本,每个版本都有其应用领域。常见的版本有Ubuntu版本、RedHat版本、CentOS版本、Fedora版本等。而CentOS版本是常被应用于后台服务器的操作系统,并且可免费使用。
常见且重要的命令行包括:cd命令、ls命令、pwd命令、命令提示符、touch命令、mkdir命令、cp命令、rm命令、vi编辑器、find命令、grep命令、cat命令、head命令、tail命令。初学者尤其要注意cd命令、ls命令、pwd这3个命令的使用。
[root@localhost etc] #
touch命令、mkdir命令、cp命令、rm命令




vi编辑器
vi编辑器是Linux操作系统中的一款文本编辑器,用于编写与修改Linux操作系统中的文本文件,而vim是vi的升级版,但大多数Linux用户习惯操作vi编辑器。
vi编辑器在命令行模式下,还可以进行复制、粘贴、删除操作,例如要复制某一行内容,可将光标移动到要复制的行中,然后快速按下yy就可以复制本行内容,粘贴的话只需要按下“P”键就可以了;如果想要删除某一行,只需要快速按下dd就可以了。请注意无论是复制、粘贴,还是删除,都是在命令行模式下操作的。
find命令、grep命令


cat命令、head命令、tail命令


演示一个简单的shell脚本
前一节中介绍的命令行都是一条一条执行的,但其实可以把要执行的命令按顺序存放在一个文本文件中,并且给该文本文件授予一个可执行的权限,这样每次执行时就只需要执行该文本文件,就可以一次性把文本文件里所包含的全部命令执行完成,而无须手工一条一条执行。这个具有可执行权限的文本文件就是shell脚本。

退出vi编辑器后将回到命令行界面,接着使用chmod命令为456这个文件授予可执行的权限。

chmod 为授予权限命令,x 代表的是可执行的权限,+x 456 的含义是为456这个文件增加可执行的权限,注意“+x”前后有空格,执行完“chmod +x 456”这个命令后,456这个文件就变成了一个可执行文件。
通过 ./456(也就是点加斜杠加456,注意这三者之间没有空格)就可以执行456这个脚本文件。

对于Web系统而言,测试人员在前台页面所做的操作,无论是查询数据,还是增加数据等其他操作,其实很大程度上都是在操纵后台数据库。因为前台页面显示的这些数据大多是从后台数据库查询出来的,在前台增加的数据最终也是存放在数据库里。
不同的是通过前台页面操作数据时,需要通过Web中间件(如Apache服务、PHP服务等服务程序)处理后再去操作数据库,也就是说前台在操作数据时其实是在间接地操作数据库。
😊 想对数据库操作了解更多的朋友,可以查看我之前的博客文章。