测试人员是…

我在软件测试论坛里发起了一个讨论题目,请人们以一种幽默的方式说一说什么是测试人员,就像下面的这张图片中的那样:

老公是...

收到了很多非常有趣的回帖,我们将其中Jeff Lucas的最有趣的帖子做成了一张可爱的图片,每次我看到这个图片都想笑。

测试人员是...

有趣吧,请分享给你的好友们!

[本文英文原文链接:A Tester Is… ]

Node.js vs Opa: Web 框架杀手

一个典型的web项目包括了服务器端的编程语言,通常还有基于这个语言的一个或者多个框架,前端用JavaScript,还有一个数据库和数据库语言,例如SQL。为了搭建这样一个项目,你需要学习很多技术,并且需要整合这些技术。这也难怪很多开发者在“Hello World”跑起来之前就已经厌烦了。

越来越多的工具开发商意识到这个问题,并且尝试通过提供完整的web解决方案来解决这个问题,例如Google Web Toolkit就做出来不少努力。随着动态语言和敏捷编程越来越受欢迎,最新的两个Web解决方案是 Node.jsOpa。他们都是基于事件驱动模型,非常适合用来创建实时(real-time)web应用。本文在多个方面对这两项技术做了对比。

Opa 和 Node.js:它们的区别是什么?
Node.js是基于Google V8 JavaScript引擎的框架。它可以让程序员使用JavaScript进行后台编程。而Opa是一门编程语言,也是语言的运行时环境。它也是基于和Node.js类似的异步模型。但是Opa是静态语言,需要编译。

本文还将在以下方面对两种语言进行对比:
1. Web Chat 应用的性能评测
2. 开发效率对比
3. UI开发对比
4. 客户端与服务器端的通信对比

详细内容请阅读原文OSChina.NET 原创编译。

源代码管理的十条戒律

源代码管理是我们工作中很重的一部分,是很多开发组的生命。但是我们往往在这方面犯错,不理解很多基本的,核心的版本控制的概念。

我在这里列出了十条建议,可以说是戒律。虽然我会用 Subversion 和 .NET 来做示例,但这些戒律和你用的编程语言还有源码管理工具无关。

1. 彻底抛弃 VSS!
VSS 已死,就让它离去吧。它曾经很有用,但是现在其他 VCS(Version Control System)已经远远超越了它。微软也决定从明年开始不再支持 VSS了。

老实说,在1995年,VSS是一个伟大的工具,但是它的光环早已被它的晚辈,Subversion,Git 和 Mercurial 夺去。

2. 没有进入版本库,它就不存在
你应该每天把这条念一遍 – “工作进展的唯一标准就是代码进了版本库”。在代码进入版本库之前,它相当于不存在。

我承认你的代码藏在你机器的某个角落,但是对于其他人来讲,这有何意义?他们不能拿到你的最新版本,他们不能和你的版本合并,你也不能部署你的代码,一旦你的硬盘坏了,一切将烟消云散。

如果你坚持的执行这一条的话,你会发现其他的好习惯会随之而来。你会自觉的把任务分成小块所以你可以经常提交代码。你会更加频繁的更新,集成代码。最重要的是,经常提交代码说明了你正在做东西。

3. 尽早提交,尽快提交,经常提交
紧接上面一点,防止“幽灵代码”(只在你本地机器上能看到的代码)的唯一的方式就是把代码尽快的提交到版本库。这么做还有以下好处:

  • 每次提交都会生成一个新的版本,给你回滚的机会。假如你把代码搞乱了,你是希望回滚到一小时前还是一个星期前?
  • 间隔的时间越长,代码合并越困难。合并代码从来不是一件好玩的事情。当你好几天都不提交代码,你会突然发现,你已经累计了50个冲突要解决,你大概会疯掉。

当你坚持经常提交代码的习惯以后,你会发现你的工作、代码提交会呈现出一定的规律。这个规律可以用来指导你的开发工作。当你发现你的团队好几天都没有代码提交的时候,你就会意识到 “something is wrong”。

4. 在提交前检查你的更改
提交代码到版本库看起来太简单了。反正在项目的根目录往下有东西更改了,提交吧!这样会导致你提交了一堆垃圾。很多人看到下面的对话框的时候,往往是选择所有,然后搞定!于是你的代码库就被污染了,例如debug文件夹之类的。

还有一些情况是人们提交代码前不检查自己到底更改了什么。例如一个项目配置文件,你会记得你改了什么吗?也许这次修改就不应该提交呢?如下图所示,这个Web.config文件为什么被修改了?你可以通过SVN工具对比来查看更改。对于一些可能被更改但是不需要进入版本库的文件,例如 Thumbs.db,你可以用 SVN 的“ignore”功能来排除它。

5. 认真填写“commit messages”
填写 commit message(提交注释)是有一点枯燥,但是想象一下别人看你的提交注释的时候是拿着一把斧子,你把他逼疯了他就来砍你!所以不要写“更新了一段代码”这种提交注释,你会把别人逼疯掉。

“commit message”的目的解释你提交代码到底修改了什么。你也许不记得你一年前提交的一段代码是为什么,但是 SVN 的注释会让你想起来。

所以,请不要写以下这些注释:

  • 修复了一个bug
  • 有一个拼写错误
  • 更新1024
  • 这就是一坨屎
  • 提交了

你还有见过比这个更烂的注释吗?还有,任何一个人的注释应该是不一样的,而且从逻辑上来讲永远不可能一样,因为你每次提交代码的基础一定是不一样的,所以你做的事情不可能一样。

6. 你必须自己提交代码,而不是让别人代劳
这个听起来有些奇怪。但这种事情确实存在,而且我还遇到过不止一次。有一些团队为了保证代码库的干净,让一个人专门负责审核和提交代码。这并不是一个好习惯。

首先,源代码管理并不是为了保持代码的纯净,起码在开发过程中不是这样。它的目的是让团队更频繁的集成各自的工作,当有问题的时候可以回退。在这个过程中,并不需要每一步都很完美。只有在版本发布的时候,我们才需要,或者尝试去达到“干净的代码”。

还有,从开发者的角度来看,这么做等于没有源代码管理。因为它意味着没有代码集成,没有回退,没有blame log,什么都没有。你只是坐在那里写代码,然后在你也无法确定的时间把代码交给你的老板。

7. 数据库的版本控制是必须的
这是有很多人想做,但是觉得很困难而做不到的一点。这里的问题是,很多应用没有数据库根本无法运行。所以如果你不把数据库加入版本控制的话,你的应用是不完整的。

大部分的版本控制系统只针对文件系统工作,例如 HTML,CSS,图片,配置文件等等任何保存在文件系统中的东西。但是对于数据库中的数据却无能为力。

不过现在也有一些数据库版本控制工具,例如 Red Gate 出品的 SQL Source Control。关于这个工具我曾经写过很详细的文章 Rocking your SQL Sourc Control world with Red Gate,我在这里就不赘述了。总之,数据库的版本控制也很容易了!

8. 编译出来的文件不应该加入版本控制
简单的说,就是任何自动生成的东西都不应该放在版本库里面。以 .NET 为例,所有“bin”,“obj”文件夹下面的东西(.dll,.pdb等等)都不应该加入版本库。

为什么?因为如果这么做了,你团队的其他人会恨死你的。每次他们更新代码都会用你的编译输出来替代他们的编译输出,会导致他们本地的很多东西不能用。另外一个原因是,你完全没有必要把这些编译输出放在版本控制里面,它们只是在浪费服务器的硬盘和带宽。

9. 别人不在乎你的个人配置
很多时候,人们没有意识到它们正在提交它们自己的个人配置到版本库。开发工具往往会生成一些配置文件,记录你的文件路径,字体设置,快捷键设置等等,这些东西只对你有用。以 .NET 项目为例:

10. 依赖项也需要添加到版本库
虽然这是最后一条,但也是很重要的。如果你的代码需要依赖第三方的类库或者文件,你需要把这些文件也添加到版本库。你不能认为程序在你的机器可以跑,就在别人的机器上也能跑。你团队的其他成员也许没有这些依赖的文件,他们更新了你的代码以后,会导致项目无法编译或者程序无法运行。

我今天还遇到一个这样的问题。我拉下了很久以前的一个项目,然后出现下面的编译错误:

这个项目也是我开发的,以前的工作环境总是有 NUnit 的,但是现在没有了,所以出现了这些错误。

总结
这十条的每一条都很简单,老实说都是很基础的东西:及时,尽早的提交代码,充分了解你提交的东西,并确认它们确实需要被提交到代码库,解释你的提交,自己提交自己的代码,不要忘记数据库版本控制,不要忘记依赖项。但请你忘记 VSS :)

 

原文链接OSChina.NET 原创编译

不再软肋,Lumia 800 12070固件电池能力实测

自从Nokia发布Lumia800以来,电池一直是困扰用户的一个大问题,虽然官方11501固件宣称已经修补了早前980毫安显示的bug,但是不少用户仍然发现自己的手机无法正常工作超过1天时间。所以诺基亚自然不敢怠慢,在11501固件推送不久之后,就传出了12070固件的消息,笔者日前就在Nokia资深的固件下载器Navifirm上找到了12070的固件,并在第一时间进行了测试。


1.正常使用频率使用
这个测试主要是测试手机在正常使用情况下的使用时间,譬如你在上下班路上使用网络浏览,夜晚使用飞行模式,多数时间关闭网络只接听电话和收发短信。

在这个使用频率下,Lumia800使用了1天零11个小时,减去夜晚待机时间,Lumia800整整让我使用了2天的时间。在这2天中,大概重度使用网 络应用3小时多,主要是收发qq,邮件,微博,网页浏览。夜晚1点到第二天的9点使用飞行模式待机。第二天的时候有意放缓使用频率,最终在晚上11点左右 完全没电。

值得注意的是:11501固件时,lumia800的待机电流基本在150-180毫安之间,而到了12070固件,lumia800的待机电流缩减到了 50-80毫安之间,几乎少了一半。正常待机情况下,Lumia800每2小时耗电3%,节电模式开启后,每小时耗费不到1%,飞行模式下大约待机了8小 时,耗费电池仅有2%。

2.高强度使用
这个测试主要是测试手机在不停折腾的情况下的使用时间。笔者使用的联通WCDMA的3G网络,多数用户应该都清楚,3G网络是耗电大户。在这个网络 下,Lumia800的耗电在可接受范围,连续音乐播放+网络浏览,不停的微博和QQ,电话短信的轰炸下,Lumia800基本可使用5小时左右(每小时 耗电20%)。


可见,12070固件对于Lumia800的电池优化是显而易见的,待机时间相比较之前的11501固件大大的进步了。如果您不是玩家,基本上 Lumia800的电池足够使用2天,在高强度使用下,Lumia800也得到了不错的成绩。这个测试毕竟是极端的实验,笔者当然也按照笔者的使用习惯进 行了测试,今天也得到了近10小时的使用时间(一直打开网络连接,想上就直接上,总共网络浏览大约4小时多)。

文/WPDANG

苹果或周四凌晨发布iPad 3

新浪科技讯 3月7日凌晨消息,苹果公司将在北京时间3月8日凌晨2:00在美国旧金山召开重要产品发布会,预计该公司将宣布推出新一代iPad。新浪科技将全程图文直播此次发布会。

苹果公司2月29日向业界人士发出会议邀请函,但并未明确透露即将发布的产品。由于邀请函显示的是iPad一角的画面,并写着一段颇为含蓄的文案“我们这里有些东西,你们必须来看一看、摸一摸”。业内普遍预期,苹果将发布新一代iPad。

此次发布会将于美国旧金山芳草地艺术中心进行,这是苹果经常发布重要新产品的场所之一。

过去几周,有关苹果新一代iPad的传闻已经铺天盖地。根据公开的媒体报道,新一代的iPad大体轮廓如下:外形与iPad 2基本一致,但要略厚一点点;屏幕将采用Retina技术,分辨率大大提高;配置四核A5X处理器;取消HOME键、搭载Siri语音控制功能等。

由于采用高清屏幕,有报道称,新一代iPad的售价上涨数十美元或者更名为iPad HD。不过,也有消息称新款iPad售价与iPad 2售价一致,不会发生变化。目前iPad 2分为16GB、32GB和64GB三个版本,Wi-Fi版售价分别为499、599、699美元;Wi-Fi+3G版售价分别为629、729、829 美元。

目前,包括美国Meijer公司、百思买在内的国外数家经销商已经开始降价处理iPad 2。这通常是苹果新产品即将上市的重要前兆。

在发售时间方面,有内部消息称,苹果新一代iPad平板电脑可能将在3月16日开始销售。苹果此种做法有据可循。iPad 2去年在3月2日发布,然后在3月11日上市,间隔9天。而新款iPad将在3月7日发布,3月16日上市,间隔时间也是9天。

苹果公司目前未就一切传闻置评,但受新一代iPad即将发布的消息刺激,苹果市值日前一举突破5000亿美元,甚至比波兰、比利时、瑞典、沙特或中国台湾的GDP还要高。