验收测试 - 测试目标

  • 作者:KK

  • 发表日期:2015.12.13


一句话总结:最好就是测试代码放在本地服务器,测试目标也是公司本地服务器的测试网站,尽量不要针对线上服务器做增删改测试

详解

像这样的测试注册功能的代码

$I->amOnPage('/register.html');
$I->fillField('email', 'xxx@yy.com');
$I->fillField('password', '121212');
$I->submitForm('#registerForm');

写好后,为了确保注册功能是正常的,理想状态下应该让它每天都运行至少1次

但是要测试的网站是哪个呢?你有本地开发的测试网站,也有外网正式部署的网站呀

这里我没有绝对的答案,问过前辈们也得不到最终答案。

其实只要确认好本地测试站没事,线上站一般都不会有事的,除非你的代码够乱

所以只要确保本地测试网站正常就基本可以了(中大型项目另谈)


我想针对线上进行测试好吗?

如果这个注册代码针对线上做测试,你需要解决一个问题就是“删除测试数据"

每天都测试注册,肯定会产生一个注册用户的数据嘛,然后你要删除他,可能有N个关联表的初始化信息都要删除是不是

如果注册时还有地区这种表单,填了北京作为测试地区,然后确认注册,刚好这一时刻有个用户查找可能认识的人或查找北京的人,对你这个用户加好友,然后好友申请表中有关于这个用户的ID了,又或者可能认识的人的ID集中冗余了这个ID,呵呵,这时候你除了要删除基础的用户数据表,还要找到可能关联的位置把ID都灭掉

所以删除数据绝对麻烦死你,虽然并非做不到那么狠


我还是想针对线上进行测试好吗?

"我总是觉得,测试线上才是最实际的!有时候偏偏就是线下没问题,线上出问题呀!"

我不否认出问题的情况会有差异,但只能断定为你对项目的规划和程序设计方面并不到位才造成了问题,稳定的程序基本不会出现这个问题的

但我依然不赞成你对线上做测试!

注意你测试的其实不只是注册功能吧,登陆好说,填东西点击登陆成功就是了,但你还可能有评论测试,赞的测试,领取礼物的测试啥的

我问你,评论测试的话,你测试的评论被发表出去,要是被别人引用回复了怎么办,你销毁测试评论的时候是不是要把别人的回复也灭了才行,不然别人引用的回复找不到数据可麻烦了。...而且这是程序自动化测试,不是人工测试,所以不能智能地写评论,只能把你填好的字符串提交上去,或者随机字符,如果你说不删除测试数据,是不是就纵容这些测试评论一天一天地堆积?一天测试一次量肯定不大,其实你还不知道有的项目是一小时测试一次的,狠不狠?人家就是那么重视质量

我问你,删除数据怎么删除,你的测试代码一般是不能跟产品服务器放在一起的,就像之前针对我的博客网站测试一样,你的代码不必放在我网站服务器上嘛,你也可以运行起来对我网站各页面做各种断言。于是,如果我的网站是属于你自己的,你测试完注册用户后,要删除一个注册用户,怎么实现删除?

  • 远程连接网站数据库做数据删除吗----实际上大部分网站的数据库是不对外开放连接的,所以你顶多是对自己的小站点实施这个方案,我服了你

  • 在网站下添加一个叫delete-test-data.php的文件,测试完后再来一句$I->amOnPage('/delete-test-data.php')来触发删除脚本----后果就是如果这个入口被外人知道了的话他也能通过浏览器输入来触发删除,一旦你代码写不好可能就被这个触发误删了些东西

  • 将本地测试服务器的ssh公钥放到线上服务器中,然后发送通知到线上服务器进行数据删除----这个还算可以,但实际上允许了通过ssh做更多事情。..公司内其他同事一旦控制了这台测试服务器,你不能保准他们会干嘛

更多更多。..

最终,删除测试数据真是麻烦的事,而且通常是很可能删不干净的,导致数据库有坏数据,不必要的冗余等。

听我的,别对线上服务器做增加数据的操作,包括修改的,因为修改后,你又要将数据恢复是不是?比如修改年龄啊,本来是18岁,你改成20岁,如果你不恢复,明天测试时又修改成20岁,网站应该会提示“您的信息没有变更“啥的吧

删除数据的测试更加不行啦哈哈,比如你测试删除一个好友后,又要实现恢复好友数据的代码,或者删除评论,又要恢复评论,而且你删除后没恢复期间有别的数据间插入来扰乱了原来的顺序就可能会导致麻烦。

所以呢,听我的,增删改的操作最好别对线上服务器做测试,因为数据变更好,要恢复到原来的状态是非常非常麻烦的事情。毕竟数据经常有多方面的关联性

只做查询的测试倒是可以,起码能确认页面是正常的,或者个别数据的增删改测试后,不恢复的话都完全不会造成影响就是,这毕竟也只是少数

一般本地测试网站怎么增删改数据都无所谓,不搞恢复工作也无所谓,因为可以直接从线上镜像一份数据下来,或者先备份后测试,再恢复备份数据库