(如何)自动对您的服务运行“功能”测试?

Modified on: Mon, 08 Jul 2019 03:40:02 +0800

考虑一个运行SMTP服务器的简单FreeBSD计算机 - 如何自动验证它是否做正确的事情(例如,接受某些收件人的传入SMTP连接,并将邮件丢弃到某些Maildir中)?

我们已经使用服务器监控软件(在这个cas,Nagios中),当然我们也进行了手动测试,但我想知道:是否有一些常用的方法可以在服务器服务上运行自动功能测试?

我正在考虑的一个例子:当重新配置我们的服务器时(通常在VM内部进行测试),我正在考虑

  1. 将一些手工制作的SMTP会话传输到netcat,后者连接到我们服务器的SMTP端口,然后
  2. 在服务器上运行某种'verfication'脚本,确保预期的断言成立(例如:服务器上出现预期内容的新文件,创建日志条目等)。
  3. 醇>

    我想能够为其他服务执行一系列此类测试(例如,测试可以创建备份,测试IMAP服务器是否接受某些用户的连接以及列出正确的邮件)可能对测试配置很有用更改,或用于验证已还原的系统备份是否按预期工作。

最佳答案

您可以使用期望与服务互动,例如

#!/usr/bin/expect -f
set timeout 1
spawn telnet localhost 25
expect "220 *"
send -- "helo localhost\n"
expect -- "250*Hello\ localhost*"
send -- "mail from: root@localhost\n"
expect -- "250\ OK"
send -- "rcpt to: root@localhost\n"
expect -- "250\ Accepted"
send -- "data\n"
expect -- "354*"
send -- "functional test\n.\n"
expect -- "250\ OK*"
send -- "quit\n"
expect "221*closing\ connection"

如此调用上面的

/path/to/expect.script | grep -q "250 OK"
if [ $? = 0 ]
then
    echo "Message queued successfully"
else
    echo "Message Failed to queue"

然后,您可以继续查看邮件是否已正确传送到mailspool或Maildir或其他任何内容。你可以为你选择的远程主机更改localhost,然后使交付检查变得复杂,但你总是可以使用expect来登录 - 这是一个非常强大的工具。

作者:Iain

相关问答

添加新评论