测试和开发一个复杂的小部件意味着在客户网站上运行的工作流程

Testing and Development Workflow of a complex widget meant to run in a customers website

本文关键字:意味着 客户 网站 工作流程 运行 小部 测试 开发 复杂 一个      更新时间:2023-09-26

我想开发一个基于小部件的服务,该小部件在我的客户网站上运行。想想UserVoice或Intercom,但我的可能还包括他们的客户对我的服务和支付处理的身份验证。

你会如何设置测试这样一个复杂的小部件?你会推荐什么样的开发流程?

我建议使用webdriver创建一个端到端(E2E)测试。咖啡和摩卡。您必须为此创建几个程序:

  • 模拟客户端服务器-使用小部件提供页面。
  • 小部件客户端-从客户端服务器
  • 提供服务
  • 小部件服务器-小部件客户端连接的地方。
  • Selenium服务器-打开浏览器并启动测试。

您的End2End测试流程将如下所示

  • 启动所有服务器:selenium、客户端、widget服务器。
  • 测试将运行selenium客户端并连接到selenium服务器。
  • selenium服务器将启动浏览器并连接客户端服务器。
  • 浏览器将获取客户端软件并等待widget
  • widget代码将尝试连接到widget服务。
  • 小部件代码将在连接成功时改变ui中的某些内容。
  • 您的测试将指示selenium查找该更改。

最后,如果您遵循某种TDD和个人理智,我建议为您的基本测试保留一个简单的E2E,并将尽可能多的逻辑移动到集成/单元测试级别。下面是一些代码,用于在所有服务器启动后获得实际测试的简单概念:

var webdriverio = require('webdriverio');
var options = { desiredCapabilities: { browserName: 'chrome' } };
var client = webdriverio.remote(options);
client
    .init()
    .url('[ClientServerURL]')
    .pause(100000)
    .getSomething(/*...*/)
    .then(()=>{
        //expect results.
     })
    .end();