学习软件测试必备:掌握Linux命令之curl (软件测试linux命令curl)

作为软件测试人员,我们经常需要验证Web应用程序的行为。而对于Web应用程序的测试中最重要的一件事情就是需要发送HTTP请求。发起HTTP请求包括多个步骤,如填写表单或者提交请求,验证服务器的响应等等。我们通常在浏览器中执行这些步骤,但是有时候,我们也可以使用命令行工具来执行这些操作。在Linux中有一个非常强大的命令行工具叫做curl。本文将讲解curl的基本使用和如何在测试中应用。

什么是curl?

curl是一个用于http、https、ftp、gopher、telnet、ldap、file等传输协议的命令行工具,开源且跨平台(支持Windows、macOS、Linux等)。它可以用来发送GET、POST、PUT、DELETE等HTTP请求,捕获服务器的响应,并显示在控制台上。curl还可以通过Cookies和Headers进行身份验证和授权。curl自身可以理解一些不同的命令行参数,方式和形式,可以方便地完成大量的测试操作。

curl的基本用法

1. 发送GET请求

curl https://www.bdu.com

上述命令即为向百度主页发送一个GET请求。执行结果会将网页源代码展示在控制台上。

2. 发送POST请求

curl -d “username=user&password=pass” https://www.example.com/login

上述命令即为向指定网址发送一个POST请求,并通过参数-d传输用户名和密码。执行结果会将服务器返回的响应打印在控制台上。

3. 保存响应内容到本地文件

curl -o “result.html” https://www.example.com/test

上述命令即为将https://www.example.com/test的响应内容保存到本地文件result.html中。执行结束后,文件result.html即可在当前目录下找到。

4. 发送Json数据

curl -H “Content-Type: application/json” -X POST -d ‘{“username”:”bob”,”age”:21}’ https://www.example.com/user

上述命令即为向指定网址发送一个POST请求,并在请求头中设置Content-Type为application/json,请求体中传输ON数据。执行结果会将服务器返回的响应打印在控制台上。

如何在测试中应用curl?

使用curl进行测试是非常有用的,我们可以通过curl来执行一些常见的测试场景,如验证REST API的响应,验证表单提交的反馈等等。在这里,我们举一个简单的例子,即如何验证用户登录的反馈是否正确。假设我们现在有一个用户登录页,URL为https://www.example.com/login,需要完成以下测试场景:

1. 用户登录成功后,响应的状态码为200

2. 用户登录失败后,响应的状态码为401

3. 用户登录成功后,响应中应当包含“Welcome”的字样

为了完成这个测试,我们需要使用curl来模拟用户提交请求。之一步是编写shell脚本,该脚本应该包含能够发起HTTP请求的curl命令。以下是一个典型的示例脚本:

#!/bin/bash

#USERNAME and PASSWORD are command line parameters

USERNAME=$1

PASSWORD=$2

#Login to example.com and save cookies

curl -c cookies.txt -d “username=$USERNAME&password=$PASSWORD” https://www.example.com/login

echo “”

#Access a page that is visible only when logged in

curl -b cookies.txt https://www.example.com/my-account

这个脚本使用curl进行用户登录的功能,并保存登录后的Cookie。其中,-c选项用来保存Cookie的数据,以便之后使用;-d选项用于发送POST请求的数据。

完成之后,我们保存这个脚本为login.sh,并为其设置执行权限:

$ chmod +x login.sh

现在,我们可以使用命令行来执行这个脚本,并传入用户名和密码:

$ ./login.sh user pass

执行这个脚本会跳转到指定网址进行登录,并访问该网站上一个需要登录后才能访问的页面。如果登录成功了,则可以在控制台上看到一条欢迎信息:“Welcome back, user!”如果登录失败,则返回响应代码401 Unauthorized。

需要注意的是,对于实际的测试任务而言,测试人员需要预先编写测试用例,并将这些测试用例转化为不同的测试场景。测试人员还需要去学习不同的curl命令选项,并结合测试场景和测试用例进行测试。整个过程需要非常谨慎,因为一个错误或者实施失误可能会导致整个软件系统出现严重的问题。

curl作为一个跨平台的命令行工具,被广泛用于发送HTTP请求。而对于软件测试人员而言,掌握curl命令是十分必要的。curl可以用于执行诸如验证REST API响应、测试表单提交等任务。通过本文,读者已经掌握了curl的基本使用以及如何在测试中应用curl。然后发挥你们的创造力,开展针对性的测试,创造出更加高效的测试框架,为更好的产品提供保障。

相关问题拓展阅读:

curl的用法

curl是一个利用URL语法在命令行方式下工作的文件传输工具。本文介绍了它的简单用法。

*******************************************************************************************************************************************************

curl是一个利用URL语法在命令行方式下工作的文件传输工具。

它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。

curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证, HTTP上传, 代理服务器, cookies, 用户名/密码认证, 下载文件断点续传, 上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器, 通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。

curl是瑞典curl组织开发的,您可以访问:

获取它的源代码和相关说明。

鉴于curl在Linux上的广泛使用,IBM在AIX Linux Toolbox的光盘中包含了这个软件,并且您可以访问IBM网站:

1.ibm.com/servers/aix/products/aixos/linux/altlic.html 下载它。

curl的最新版本是 7.10.8,IBM网站上提供的版本为7.9.3。

在AIX下的安装很简单,IBM网站上下载的rpm格式的包。

docs/,您可以下载到UNIX格式的man帮助,里面有详细的curl工具的使用说明。

curl的用法为:curl

其中options是下载需要的参数,大约有80多个,curl的各个功能完全是依靠这些参数完成的。

具体参数的使用,用户可以参考curl的man帮助。

下面,本文就将结合具体的例子来说明怎样利用curl进行下载。

1、获得一张页面

使用命令:curl

这是最简单的使用方法。用这个命令获得了

指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么腊岩缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。

2、表单(Form)的获取

在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:

那么浏览器上会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单就用GET方法向服务器羡闹提交文本兄局罩框的数据。

例如原始页面是在

www.hotmail.com/when/birth.html

看到的,然后您在文本框中输入1905,然后按OK按钮,那么浏览器的URL现在应该是:“

www.hotmail.com/when/junk.cgi?birthyear=1905&;press=OK

对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:

curl “

www.hotmail.com/when/junk.cgi?birthyear=1905&;press=OK

就可以了。

表单用来提交信息的第二种方法叫做POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。类似GET,这里有一个网页:

浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单用POST方法向服务器提交数据。

这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:

curl -d “birthyear=1905&press=OK”

www.hotmail.com/when/junk.cgi

这个命令就可以做到。

1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:

对于这种页面,curl的用法不同:

curl -F upload=@localfilename -F press=OK URL

这个命令的实质是将本地的文件用POST上传到服务器。

有关POST还有不少用法,用户可以自己摸索。

3、使用PUT方法。

HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数:

curl -T uploadfile

www.uploadhttp.com/receive.cgi

4、有关认证。

curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框):

curl -u name:password

www.secrets.com

如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入:

curl -U proxyuser:proxypassword

任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。

5、引用。

有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。

对于这种地址的资源,curl也可以下载:

curl -e

daniel.haxx.se

6、指定用户客户端。

有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。

此时curl可以把自己“伪装”成任何其他浏览器:

curl -A “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)” URL

这个指令表示curl伪装成了IE5.0,用户平台是Windows 2023。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。

使用:

curl -A “Mozilla/4.73 (X11; U; Linux 2.2.15 i686)” URL

此时curl变成了Netscape,运行在PIII平台的Linux上了。

7、COOKIES

Cookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令:

curl -b stored_cookies_in_file

www.cookiesite.com

curl可以根据旧的cookie写出新cookie并发送到网站:

curl -b cookies.txt -c newcookies.txt

www.cookiesite.com

8、加密的HTTP——HTTPS。

如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:

curl

9、http认证。

如果是采用证书认证的http地址,证书在本地,那么curl这样使用:

curl -E mycert.pem

参考读物和注意事项:

curl非常博大,用户要想使用好这个工具,除了详细学习参数之外,还需要深刻理解http的各种协议与URL的各个语法。

这里推荐几个读物:

RFC 2616 HTTP协议语法的定义。

RFC 2396 URL语法的定义。

RFC 2109 Cookie是怎样工作的。

RFC 1867 HTTP如何POST,以及POST的格式。

文字

curl是免费软件,IBM公司对curl不提供技术支持。

curl官方网站:

linux curl 命令怎么在windows上实现

可以在windows里安装curl命令,去官网下载下来,然后照里面的安装说明安装就可以了。。。

1、根据自己的操作系统位数和是否需要SSL下载相应的版本。

这里下载curl-7.33.0-win64-ssl-sspi.zip,下载完成之后解压到需要使用curl命令的目录。这里为了方便我先直接解压到当前目录。

2、在本窗口下打开运行该命令

【没有建立系统环境变量,所以只能在本目录下运行】,检测是否可以正常运行

注意:

想得到上面的“在此处打开命令窗口(W)”,请使用键盘 Shift+鼠标右键 即可

C:\common_command>curl -v -X OPTIONS

*Adding handle: conn: 0x205e100 *Adding handle: send: 0 *Adding handle: recv: 0 *Curl_addHandleToPipeline: length: 1 * -Conn 0 (0x205e100) send_pipe: 1, recv_pipe: 0 *About to connect() to

www.baidu.com

port 443 (#0) * Trying 220.181.112.244… * Connectedto

www.baidu.com

(220.181.112.244) port 443 (#0) *SSLv3, TLS handshake, Client hello (1): *SSLv3, TLS handshake, Server hello (2): *SSLv3, TLS handshake, CERT (11): *SSLv3, TLS alert, Server hello (2): * SSLcertificate problem: unable to get local issuer certificate*Closing connection 0 curl:(60) SSL certificate problem: unable to get local issuer certificate Moredetails here:

curlperforms SSL certificate verification by default, using a “bundle” of Certificate Authority (CA) public keys (CAcerts). If the default bundle file isn’t adequate, you can specify ternate file using the –cacert option. Ifthis HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verificationprobably failed due to a problem with the certificate (it might beexpired, or the name might not match the domain name in the URL). Ifyou’d like to turn off curl’s verification of the certificate, use the -k (or –insecure) option. C:\common_command>

4、加入系统环境变量

用户变量和系统变量的区别:

答: 用户变量:指在该用户登录后该环境变量有效。

系统变量:指任何用户登录该系统,该环境变量都有效。

怎么使用:判断该环境变量是否敏感或者是否有用户限制,如果没有则配置在系统变量;否则请根据敏感度或者限制情况配置在用户的环境变量,有利于安全。

5、在其他路径下测试是否可以使用CURL命令

成功!

6、该命令常用作用

答:

1、用于查看该网站可以允许有哪些http请求 【常用:GET, HEAD, POST,PUT, DELETE, OPTIONS】

我们经常不希望有PUT和DELETE请求,如果有则需要关闭;因为容易造成一些安全问题。

$ curl -v -X OPTIONS

*About to connect() to

www.aliyun.com

port 443 (#0) * Trying 42.156.220.114… connected *Connected to

www.aliyun.com

软件测试linux命令curl的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件测试linux命令curl,学习软件测试必备:掌握Linux命令之curl,curl的用法,linux curl 命令怎么在windows上实现的信息别忘了在本站进行查找喔。


数据运维技术 » 学习软件测试必备:掌握Linux命令之curl (软件测试linux命令curl)