6 months ago

自动化测试的对立面是手动测试,手动测试可以在irb内一个一个写测试方法,也可以使用postman做手动测试

使用RSpec自动化测试

自动化测试分成几种不同类型,针对单一类别的方法进行测试,叫做单元测试(Unit Testing)
步骤:
1、准备测试案例,要测那些案例(example)才算程序是正确的,案例之间是互相独立的。

2、开始撰写测试代码,可以先写下测试代码,再写实作代码,让原本失败的测试通过,这样就可以避免一片绿但其实什么都没有测试到的情形。
这个技巧叫做TDD(Test-Driven Development):
1)、write a test that fails
2)、make only enough code for it to pass
3)、improve the code quality(重构代码)

3、执行程序、检查结果。

如何在测试除错
方法一:暂时注解掉其他的测试案例,只留下一个就好了
方法二:请编辑spec/rails_helper.rb,加上两行设定:
然后在spec/models/parking_spe.rb针对你想要单独测试的案例,加上:focus => true
当执行程序时就只会跑这个测试了,除错完毕把:focus => true移除就可以了。

除了用puts,也可以用byebug下中断电,输入continue就会继续执行下去。

用户的验收测试:在Rspec中叫做Feature Spec.这会模拟用户操作浏览器的行为,来对Rails进行整合性的测试。

流程:
1、Capybara安装
这个gem会用来搭配Rspec进行Feature Spec测试

2、测试【一般费率】缴费流程
执行mkdir spec/features建立验收测试的目录
新增guest_spec.rb

Feature Spec的重点在于检查东西(Model + Controller + View)接起来有没有正常运作。

测试用户注册流程;测试用户登入登出流程;

刚刚都是跑单个测试档案,要一次跑全部的测试的话,请执行 rake spec

通常我们会在 git push 前,尽量跑过一次全部的测试。实际部署上 production 服务器前,也一定会执行 rake spec 检查所有测试都必须通过。一个项目如果有良好的测试涵盖,那么透过执行自动化测试可以大幅减少人工测试的时间,确保这次的修改一切功能正常,增加成功上线的把握。

至于验收测试什么时候写? 要写多少呢?

相对于单元测试,验收测试通常是在功能完成之后才撰写,主要的目的其实是做「回归测试(Regression Testing」,旨在检验软件原有功能在修改后是否保持正常,每次部署新版本上线前,会跑全部的测试做回归测试检查,看看有没有东西被弄坏了,是一种投资未来的测试。

单元测试通常是跟该功能一起由开发者完成,验收测试则会另外开任务,并可能由另一个开发者(或专门的测试工程师)来完成会更好。

撰写验收测试会花额外的时间,而且比较脆弱。因为页面流程一改、或是改个文案,测试就得跟着改。因此通常我们只会针对网站最常用的功能(Happy Path),来撰写验收测试报资报酬率最高。

验收测试很难完全取代人工验证,因为有太多东西是很难验证的,例如 CSS、画面颜色、按钮位置等等。如果要做到自动检查画面完全一模一样,会耗费很大的维护成本。
因此相对于新创公司还在时常变动功能的软件,成熟期的软件比较会投资在完整的验收测试,特别是 B2B 领域,因为软件出错对客户造成的损失是很大的。

← 购物车设计逻辑 资料验证 →
 
comments powered by Disqus