手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表2025年12月的文章

淘宝QA团队谈BUG的描述

BUG管理给开发人员带来了方便,但,如果你描述的不合理,或者无法让开发人员重现BUG,那么,你其实是在给开发人员带来困惑。。。

一般情况下,我们使用bugzilla来记录BUG,有时候也用 mantis,毕竟这两个都算是开源软件了。bugzilla被使用的更多,因为有很多IDE,都有插件支持,但对于开发人员来说,更重要的是BUG产生的情况,所以淘宝的QA TEAM 这样谈BUG描述时,我觉得有必要记录一下,以后也可以让同事看看,HOHO,可以报BUG更精确一点:

清楚准确的描述BUG,这是测试人员的必备的基础。但是针对各种问题,我们又如何使自己提交的BUG让开发人员看一遍就明白呢?我相信大部分人都会碰到以 下这种情况,我们提交上去的BUG在某些特定的环境下存在,这时候如果没有写清楚具体产生BUG的前提条件的话,BUG难以重现,这个时候开发就会说: “为什么我测试的时候没有出现这个问题呀,人品问题。:)”。还有就是开发经常说:“为什么在我的机器上没有出现这个问题呀?”。“这个BUG是什么意 思”等等问题,出现以上一些问题还是追究其根源:
1. 测试与开发理解需求有偏差
2. BUG的出现是有概率性的
3. BUG受环境影响
4. BUG在一定条件下存在
5. BUG受数据影响,数据量达到一定量时才存在。
6. 测试人员提交的BUG,描述不清楚,让开发人员不明白其意
为了尽量避免以上问题的出现,我们测试就要尽量用最简洁的语言最清晰的描述出BUG的出处、操作步骤、现象等。下面讲一讲BUG的描述规则:
1.摘要主要用于指明Bug发生的地点、在什么条件下发生什么现象。
2.描述字段:
1)描述Bug发生的地点、所用账号类型、操作步骤、期望值、实际值, 如果Bug与浏览器相关,需尽量描述更多的环境参数,如操作系统等。
2) 一个Bug不会包含多个问题,会尽量单一化,便于跟踪处理及统计
3) 对于很难描述清楚的Bug需截屏作为附件上传,并在描述中写明参照附件。
4)尽量减少重现的步骤以达到用最少的步骤来重现问题;
5)不要使用完全的大写形式,那样会让人感觉象控诉。不要使用感叹号或其他表现个人感情色彩的词语或符号。
6)不要使用含糊的词语(例如,好像,似乎)来描述发现的现象。
7)在BUG提交前,测试人员应该反复阅读它,集中剔除那些没有关系的步骤或词语。隐含的或模糊的说明和那些由于对没有任何关系的细节或者那些在重现错误过程中不需要的步骤。
8)测试人员在精简空话的同时或其之后随即应该再仔细检查报告是否有会产生误解的地方。测试人员应该尽量避免使用模糊的,会产生歧义的和主观的词语。目标是使用能够表述事实,清楚的,不会产生争执的词语。
9)如有必要可以把产生结果的SQL语句放上去,不过需要开发人员在短时间内定位问题,否则测试人员不能保证数据的完整性。
10)如果是概率性的BUG,尽量重现BUG,找到BUG产生的条件,如果找不出BUG产生的原因必须写明BUG发生的概率大约是多少。
11)BUG如果在特定条件下产生的,必须写明BUG产生的条件和操作步聚。

对了,本文来源:http://rdc.taobao.com/blog/qa/?p=5168,作者是pingyan

Tags: bug, qa

O&O CleverCache 7.0 Build 2869 专业版&服务器版

O&O的软件,让人记忆犹新的应该是磁盘整理吧?想不到,居然还有这样的软件,它,最起码,看上去很美。
感谢国内汉化人员的努力,可惜我的服务器已经转为ubuntu,不过,我的台机和笔记本都是用的windows,所以,我还是想尝试一下。

以下为内容介绍:

O&O CleverCache 可以优化你的 Windows NT/2000下内存和文件缓存管理。这可以导致性能的大幅度提高,可以加速你的系统速度,而不需要任何硬件上的更新,也不会限制系统的稳定性。安装它不 需要任何的配置和重启动,只要5 分钟就可以激活系统中未使用的资源。
在使用较长时间不中断服务器往往会造成问题。应用程序和操作系统更容易崩 溃,因为主存储器超载或太多的程序在同一时间运行。O&O CleverCache 7 服务器版不断监控您的服务器,优化调整Windows 的文件存储,以适应其要求。因此,你就可以防止系统崩溃,停机时间,甚至数据丢失。
可用于 Windows NT/2000/XP/2003/Vista/Win7
汉化使用说明:
1、此为汉化版,安装后即可直接使用。
2、制作安装包时,已将专业版和服务器版同时打包在内,请
在运行安装时自己选择所需要安装的版本类型。
3、两种版本安装后均已注册。
4、此汉化无捆绑。
下载:http://www.hanzify.org/index.php?Go=Show::List&ID=9613

 

Tags: o&o

希望正常吧。。新年快乐

00-----00---------0---------00000000--00000000--00------00---00-----00--00000000--00-----00
00-----00--------000--------00000000--00000000---00----00---000----00--00000000--00-----00
00-----00-------00-00-------00-----00--00-----00----00--00----0000---00--00---------00-----00
00000000------00---00------00-----00--00-----00-----0000-----00-00--00--00000000--00--0--00
00000000-----00000000-----00000000--00000000------00------00--00-00--00000000--00-000-00
00-----00----0000000000----000-------000-------------00------00---0000--00---------0000-0000
00-----00---00---------00---000--------000------------00-------00----000--00000000--000---000
00-----00--00-----------00--000--------000------------00-------00-----00--00000000--00-----00
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
-00------00--00000000---------0---------00000000------0000000--00000000---000----00000000-
--00----00---00000000--------000--------00000000------0000000--00-----00----00----00-----00-
---00--00----000--------------00-00------00-----00------------00--00-----00----00----000----00-
----0000-----00000000------00---00------00-----00-----------00---00-0---00----00----00--0--00-
-----00------00000000-----000000000----00000000----------00----00--0--00----00----00--0--00-
-----00------000----------00000000000---00-00-----------00-------00----000----00----00----000-
-----00------00000000---00----------00---00--00--------00000000-00-----00----00----00-----00-
-----00------00000000--00-----------00--00----00------00000000--00000000---0000---00000000-

改了半天,终于有点象样了。。。

ThinkSNS与Ucenter整合

上回我写过一点thinksns与ucenter整合的注意事项,详情可见:thinksns在整合Ucenter的时候注意事项,今天我写的另外的一些注意点。

上回仅仅是做UCAPI接口的通讯以及同步登录和退出,因此完全没有涉及到系统模块。今天我要讲的是,如何修改系统自带的login,logout,register,changepwd以及后台的管理。

如果你将login,logout,register都交由第三方来托管,那么,本文的前几段你几乎可以忽略掉。仅看最后的changepwd以及后台管理的注意事项。

OK,让我们开始吧。判断是否登录,我这里不管了,请看我上篇文章吧。。

【注意】由于加载uc_client,会导到错误发生,原因查看:THINKPHP框架与Ucenter通讯注意事项,因此,我在thinksns的define.inc.php中,强行定义了uc_connect为空,这是一个常量,在这里定义后,在uc_config文件中又定义了一次。会出现一个notice,这个我们不用管。常量是不会被覆盖的。之所以这样做,我是有理由的。thinksns在整合Ucenter的时候注意事项一文中我说过,uc.php没有用到任何thinkSNS除api外的核心函数,因此也就没有加载THINKPHP框架,所以不会有THINKPHP框架与Ucenter通讯注意事项文中所说的base类的冲突。而我们现在涉及的则是在thinksns内部使用uc_client,那就不得不先定义uc_connect模式了。正是基于常量不会被覆盖,所以uc_config文件,就不需要被修改了。【方法有点野蛮,但我想应该可以接受】

1、login,系统的login和dologin函数都在IndexAction.class.php中,因此,改起来比较方便,但是需要动 /public/themes/中的apps.html模版,因为登录框在这个文件中。没办法,不改不行,uc不支持email登录,所以不得不把 email改为username。然后在dologin方法中,直接调用接口,判断用户是否存在,如果不存在则返回错误,存在的话就登录。登录时还要判 断,如果该用户在thinksns库中没有记录,则生成一条记录,用户信息由uc_get_user取回来。同时设定active为1,代表是已激活用 户。然后就是原始的登录流程,生成session生成cookie之类的了

2、logout,除了系统标准的logout外,还需要调用一下uc_user_synlogout,以便向其他应用发向退出系统的请求

3、register,如果属于偷懒情况,你可以把register引用到别的应用中【我是自己定义了一个user应用来接管所有的,注册、登录、退出的,所以1、2这些问题,其实我都可以忽略掉】

4、changepwd,这是在用户信息管理界面中的。主要问题也就在这里。如果你不改程序,那你会在这里吐血,因为如果你的用户是通过 ucenter过来的,那么password并非标准的md5(password),它的password是有salt的【salt你可以看一下 ucenter表。不想多解释】,因此chagepwd功能,你必须得完全改掉。判断原始密码是否正确,也必须先用uc_get_user获取用户的信息 后,把获取回来的密码与提交过来的原始密码比对。更改密码时也需要用uc_user_edit进行修改【其实可以两步并一步,因为 uc_user_edit的第二个参数就是oldpassword,如果oldpassword不正确,会返回错误代码的,也可以少做一步】,更改完后, 就是一个比较重要的一步:把你刚才设置的newpassword,重写回thinksns数据库,可能你会认为是多余的,因为很明显,我们前面的操作都是 直接读写ucenter的用户资料,根本没有涉及到本地thinksns用户数据库,为什么还要写回密码?这其实是因为下面的第5步

5、管理,如果你是新安装thinksns,那么或许你不会遇到我说的问题,但如果你是已经安装好,而迁移过来的thinksns,你会发现,你永 远登录不了管理界面,为啥?因为你登录前台时的密码是发给ucenter的,而登录后台时,密码是thinksns本地的。因此,你必须得通过 changepwd功能先修改一下密码,然后才能操作【所幸管理员不多,这样的问题也都还能够被接受。】

---

如果有什么问题,还是发到http://www.ucapi.com去比较好。呵呵。在这里,我就纯记录一下而己了。

Tags: thinksns, ucenter

snoopy的缺陷与CURL的强大

在使用PHP进行POST和GET的时候,如果为了简单的应用,大多情况下,我们都采用了fsockopen,于是snoopy就成了我们的最佳选择。可惜,并非所有POST都可以通过snoopy来完成。毕竟,在snoopy中,POST的方式,即类似FORM的entype只支持两种 :application/x-www-form-urlencoded和multipart/form-data,一个是针对FORM中的变量,一个是针对文件上传。一般来说这两种足够了。但昨天发现了一个问题。那就是。。。http://www.baidu.com/search/blogsearch_help.html#n7
baidu和google其他一样,都提供了blogsearch的ping服务,因此,你发表博客后,可以通知一下百度,你的博客更新了。
于是昨天尝试着用snoopy来进行POST发送。结果。。。一直失败,提示无法连接80端口,再看一下百度的说明:

XML/HTML代码
  1. ping-service对非POST方法请求返回HTTP_METHOD_NOT_ALLOWED(405)错误代码,对超大错误包返回 HTTP_REQUEST_ENTITY_TOO_LARGE(413)错误代码,对非“text/xml”请求包返回 HTTP_UNSUPPORTED_MEDIA_TYPE(415)错误代码。  
  2. 其他情况返回HTTP_OK(200)代码,xml-rpc响应http包体为一个xml文档,含有一个int值,0表示推送成功,其他值表示推送失败,目前只有0和1。  

而snoopy在连接的时候是需要先fsockopen,打开80端口的连接后才能发送数据。。。所以,死活连接不上了。最后,用了curl。。。短短几行代码就解决了。。
事实上,即使snoopy能够连接上百度的ping服务,也没有办法提交,因为$snoopy->submit()方法的第二个参数必须是数组。众所周知,FORM提交都是由name对应着value的。snoopy正是这样操作的,他无法直接把一个字符串不对应name就提交。。。

以下是curl代码:

XML/HTML代码
  1. set_time_limit( 0 );  
  2. $url = "http://ping.baidu.com/ping/RPC2";  
  3. $data = '<?xml version="1.0" encoding="UTF-8"?>  
  4. <methodCall>  
  5. <methodName>weblogUpdates.extendedPing</methodName>  
  6. <params>  
  7. <param>  
  8. <value><string>百度的空间</string></value>  
  9. </param>  
  10. <param>  
  11. <value><string>http://hi.baidu.com/baidu/</string></value>  
  12. </param>  
  13. <param>  
  14. <value><string>http://hi.baidu.com/baidu/blog/item/5e8b10d574e971cd50da4b74.html</string></value>  
  15. </param>  
  16. <param>  
  17. <value><string>http://hi.baidu.com/baidu/rss</string></value>  
  18. </param>  
  19. </params>  
  20. </methodCall>';  
  21.   
  22.   
  23.   
  24. $header[]="Content-Type: text/xml; charset=utf-8";  
  25.   
  26. $ch = curl_init();  
  27. curl_setopt($ch, CURLOPT_URL, $url);  
  28. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  
  29. curl_setopt($ch, CURLOPT_POST, 1);  
  30. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  32. curl_setopt($ch, CURLOPT_HEADER, 0);  
  33. $res = curl_exec($ch);  
  34. curl_close($ch);   
  35. echo '<pre>';  
  36. print_r( htmlspecialchars($res) );  
  37. echo '</pre>';  

Tags: snoopy, curl