基于无状态请求的前端测试思考/讨论
该问题/讨论仅针对 后端仅提供无状态的接口,前端为富应用的情况。
希望将整个前端的开发过程同后端剥离,即后端的开发进度不影响前端的开发进度。所以,测试的代码段将包含下面几个流程:
- 页面元素操作(包括表单操作、表单提交、元素操作)
- 根据文档验证前端请求的正确性
- 控制模拟后端服务器返回特定内容
- 验证前端针对该返回内容的响应正确性
例如一个简单的登录代码示例如下:
define "login with right password" do |browser, server|
password = 'hereIsPassword'
browser.text_field(id: 'password').set password
browser.button(id: 'goLogin').click
server.should_receive('/user/login', password: md5 password)
server.will_response(code: 200, msg: 'login success')
browser.button(id: 'result').wait_while_present
return browser.text.include? '登录成功'
end
在输入框里面输入了东西,然后点击提交,确认发给服务端的内容正确,然后服务端模拟返回结果,然后确认前端正确反馈即页面上出现了正确的内容。
想法可行性在于现在已经有成熟的控制浏览器、或者控制鼠标、键盘操作的第三方开源方案,所以整个实现起来不存在技术风险。前端区分测试环境、验证环境、生成环境来访问不同的地址即可。
想知道各位在这样的场景中是否考虑过如何测试,有什么更好的方案,这样的方案存在的风险。