测试自动化ZAP和E2E(赛普拉斯)

时间:2020-04-21 07:02:09

标签: docker automated-tests gitlab gitlab-ci zap

最后,我设法通过 e2e ZAP (使用Docker)实现了自己的目标。

因此,我可以从 http://localhost:8091/OTHER/core/other/htmlreport 或本地PC的终端(使用curl -X GET)查看结果

环境:

  • 具有 e2e 测试的GitLab存储库,可与Cypress一起运行(Linux映像)
  • 具有 ZAP (最新版本)的Docker映像

目前,我正在考虑将yap文件中的ZAP用作服务。 这意味着,我还必须更新package.json文件和dockerfile,以便从 Cypress 容器转移此处的流量并运行ZAP。

  • Cypress :将流量(通过代理)转发到ZAP(选项 HTTP_PROXY = http://containerAlias_port
  • ZAP守护程序:在localhost侦听以从e2e接收数据(也使用端口绑定)

gitlab-ci.yml的示例:

services:
 - name: owasp/zap2docker-stable:latest
   alias: zap
   ports:
       - "8092:8092"
   entrypoint: ["zap.sh", "-daemon", "-port", "8092", "-host", "0.0.0.0", "-config", "api.disablekey=true", "-config", "api.addrs.addr.name=.*", "-config", "api.addrs.addr.regex=true"] 

问题是:

1)在这种环境下如何从守护程序获取结果?因为带有CURL的“终端”不太适合CI / CD

2)主要问题是如何获得结果。在本地使用终端不是一个非常“自动化”的解决方案,我希望有机会保存报告文件(html或json)。 我尝试了“基线扫描”,但是针对执行测试的IP地址存在很大问题。 还有其他可能的解决方案吗?甚至可以借助Daemon来解决此问题?

1 个答案:

答案 0 :(得分:1)

docs中提到的方法对我有效:

将ZAP作为守护程序运行,监听"0.0.0.0"

docker run -p 8090:8090 -i owasp/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0

找出容器ID:

docker ps

找出分配给它的地址:

docker inspect <CONTAINER ID> | grep IPAddress

然后,您应该能够将浏览器指向指定的主机/端口并访问ZAP API,例如http://172.17.0.8:8090/

然后,我使用以下URL来查看报告并使用htmlpublisher插件以jenkins发布。您也可以使用curl / wget下载它:

http://172.17.0.8:8090/OTHER/core/other/htmlreport/?