You are on page 1of 38

www.5etesting.

com

《每日E测》 目录
刊首语.............................................................2

第四期:2009 年 11 月 如何留住优秀的测试人员...........................3
三种我们要做或不做的自动化的场景.......12

妙用 VMware Workstation............................17

使用ruby来调用win32 接口........................22

QTP的方法重载介绍...................................23

性能测试用例设计初探................................25

GUI层 -- 面向对象的扩展设计.................28

《QTP项目应用与进阶》读后感....................33

《QTP项目应用和进阶》样章选读...........35

征稿启事........................................................37

主办单位:E测中国

出版单位:《每日E测》编辑部

主编: 朱 伟

副主编: 裴明哲,韩 柳,俞戴龙,宝驹

美工 :廖非

本期责任编辑:朱 伟

E 测网站: www.5etesting.com E 测培训: www.5etesting.net

投稿:askwebmaster@5etesting.com

《每日 E 测》第四期 1 2009 年 11 月


www.5etesting.com

刊首语

——寒冷和奋进
随着《QTP 项目应用与进阶》的热销,论坛上的答疑也开始逐步热闹起来,正如当初我

们出书的初衷那样,我们把我们对自动化测试的理解表现出来和大家分享,来帮助那些和我

们曾经一样迷茫着的人,通过这几周的答疑,大家的提高是我们最大快乐,在这寒冬,冰雪

的世界依然很欣慰,我们曾经的汗水没有白废。

我们的测试,我们的 E 测。

因为专注,所以专业

E 测中国
2009 年 11 月

《每日 E 测》第四期 2 2009 年 11 月


www.5etesting.com

如何留住优秀的测试人员

How to keep good testers in testing


positions
原作者:Vijay Kumar
译者:黄启鲁, Testone, Maurice, Wally

几天前 Teresa 问了我一个有趣的问题。


“我被你的网站深深地吸引了,因为我发现你真的对测试充满了热情和兴趣。在我的公
司里,我们发现留住优秀的测试人员非常困难。许多真正有能力的测试人员总是在寻找机会,
出于某种原因想脱离测试工作。我非常希望能听到您对于如何挽留优秀测试人员的建议。”

Teresa,首先我谈谈为何所有公司都存在员工高流失率的问题,然后再回过头来谈“怎
样留住优秀的测试人员” 。

没有员工流动在当今充满激烈竞争的世界上是一种幻想,是不切实际的。一定程度的人
员流动是正常的。然而,太高的流失率在任何公司来说都预示着一些严重的问题。

尽管不是减少人员流失方面的 HR 专家,我仍会从员工的角度给出一些常用的措施将人
员流失减少到一定的程度。这些措施适用于任何公司和员工。另外,由于我们正从事软件测
试,所以我会更多地关注如何使得优秀的测试人员坚守他们的岗位。
我会对如何降低人员流失率的解决方法进行逐一阐述。所以,坐好、放松,这将是一篇
很长的文章。

谁将从这篇文章中获得帮助呢?

这篇文章将对以下人员非常有帮助:公司管理人员,经理,开发和测试的 TL 们,当然
还有有志于成为 Leader 的出类拔萃的测试人员。

高人员流失率对公司的影响:

z 可能会失去业务-客户对高流失率不满意
z 公司承受财务负担
z 招募新员工的成本的增加
z 新员工培训的成本的增加
z 新项目磨合期的时间的开销
z 现有员工的工作量加大
z 不稳定的工作和加班造成的员工低工效

《每日 E 测》第四期 3 2009 年 11 月


www.5etesting.com

这是一些高流失率带来的严重的问题。

如何降低流失率?

首先来看一下员工离开公司的根本原因。主要原因是“努力工作却得不到赏识”。我的
意思是,如果公司不关心员工,他们为什么还要留在公司?
记住“高薪”并总不是解决方法。现在,员工更关心(注重)生活的质量和家庭的需求。

这里有一些应对高流失率的解决方法:

z 雇用合适的人员从事合适的职位
z 知道员工所需并满足他们
z 尊重他们
z 总是赏识出色的工作
z 定期地要求员工付出并采取适当的措施
z 为员工提供培训机会使其获得更高级的知识
z 要以员工为本
z 提供愉快的工作环境
z 职位晋升的机会
z 重视员工的创造力
z 工作保障
最后一条非常重要。你的员工应该对他们的工作有安全感。如果你没有提供工作保障或
者员工内心最基本的工作安全感,那么你的公司将会面临高流失率的危险。

这是一些教科书式的解决方法。让我们再看看一些实用的方法。

动机:

任何一个软件团队都应该由具有极大的动力和高超的技能的人员组成。强大的动力来自
卓越的领导。TL 和经理领导得法,可以降低流失率。我在我的职业生涯中看到很多员工就
是因为老板而离开了公司。一些不切实际的要求或者缺乏动力、领导力会促使员工仔细考虑
他们的职位和事业。
所以领导应该在员工们失去所有希望的时候,激励他们,激发他们的能量。

更多的薪水:

给他们更多的报酬和津贴。

工作中的乐趣:

我说过金钱不是万能的,工作中充满乐趣同样重要。如果你的公司没有一个轻松愉快的
文化,仅仅靠更高的薪水是不能鼓舞这个团队的。我相信“疯狂的工作,尽情的娱乐”的
文化,这样的活动有很多,所以安排一些体育活动、户外旅游、不同团队间不同的竞赛等等。

《每日 E 测》第四期 4 2009 年 11 月


www.5etesting.com
可以让员工们感到精神振奋。

帮助安排员工的生活:

这里,我的意思是帮助员工们获得稳定的生活。我知道这不是一个简单的任务,但是公
司可以为员工提供医疗保险、医疗设施等。住房是大多数员工首先考虑的事。所以帮助他们
获得良好的住宿条件。

Teresa,你问到如何将测试人员挽留住。那就让我们来看看测试人员的问题。

测试人员通常的抱怨有哪些呢?

“有时候开发人员自我标榜比测试人员强。”
“测试人员对每个错误都要负责。”
“由于测试人员计划脱轨。”将项目进度的落后归咎于测试人员
“测试人员不受尊重。”
“管理层不将他们和开发人员同等看待。”
这些都是测试人员通常存在的牢骚,这使得他们对工作没有安全感,影响了他们的日常
工作并可能导致高流失率。
管理层需要早在测试人员离开公司之前妥善处理好这些怨词。解决方法是——有效地组
织你的团队,促进(加强)开发人员、测试人员、管理层之间的交流。这会更好地理解和定
位测试人员的需要。

下面是留住优秀的有天分的测试人员的详细步骤:

给他们提供培训:

培训你所有的测试人员。为他们提供免费的培训,不可行的话可收取少量的费用。提供
一些远程课程、研讨会和书籍等供他们学习。倡议和帮助他们获得软件测试证书。

赏识出色的工作:

不要盲目追求 bug 的数量。要看到 bug 的质量和欣赏测试人员为发现 bug 而付出的努


力。定期表扬团队中出色的工作。
奖励那些发现高质量 bug 的测试人员。开展每周的或每月的类似“本周 bug”的竞赛来
奖励测试人员。这有助于组建一个成功的 QA 团队。

为所有的事情制定界限:

你的目标应该有明确的界限和完成标准。没有明确结果的目标会是一个乏味的任务。不
要让你团队感到测试任务遥遥无期,没有一个明确的目标。

把每一个 bug 看成一个学习的机会:

《每日 E 测》第四期 5 2009 年 11 月


www.5etesting.com
不要拿遗漏的 bug 抱怨测试人员。把这些 bug 当做一次学习的机会。让他们知道为什
么他们没有发现那个 bug。他们会从中吸取经验教训,以便于在今后的工作中不再犯同样的
错误。

不要把测试安排成重复性的工作:

有些时候我们一次又一次地重复做同一件事情就会感到厌烦。测试人员的工作涉及到重
复性任务。所以需要特意安排你的工作,不要让任何测试人员在任何项目上反复地执行同一
个测试用例。随机安排测试任务,这样一来每个成员都会了解整个项目的情况,有助于他们
发现更多的 bug。
一个避免重复工作的有效解决办法是让有经验的员工轮流参与不同的项目。

测试人员和开发人员之间建立良好的关系:
测试人员需要鼓励和支持来发现更多的 bug,使得最终发布的产品没有 bug。建立一个
测试人员和开发人员组成的优秀团队。平等的对待每一个人。

别忘了庆贺:

庆祝每一个胜利的时刻。这有助于培养良好的团队精神。举办产品发布宴会见证团队的
成就。

结论:

对工作努力的员工表示赞赏。这是企业成功的法宝之一。在你的员工面前表现出你正致
力于满足他们的各种需求。
最后:
这是我对如何留住优秀员工(测试人员)的个人的一些想法。我不是一个 HR 专家,我
在这里提到的一切都是从一个员工的角度考虑的。
我想知道你对“什么使你坚守在岗位上”的看法。你可以分享你个人的想法、你作为一
个员工的经历或者这方面的个人的任何经历。

《每日 E 测》第四期 6 2009 年 11 月


www.5etesting.com
Few days back ‘Teresa’ asked me an interesting question.

“I was intrigued by your website because it seems you are truly passionate and
interested in testing. In my organization, we’ve found that it’s really hard to keep the
GOOD testers in testing. Many of the really skilled testers are always looking for
change and want to get out of testing for some reason. I would love to hear if you have
any ideas on how to keep the good testers in testing?”

Teresa, first I will address this high attrition rate problem for all employees and then I
will come back to addressing “How to keep good testers in testing positions?”

0% employee turnover is just a imagination and unrealistic in current competitive world.


Employee turnover to certain extent is ok. However increased turnover in any company
indicates some serious problems.

Though I am not a HR expert to reduce the attrition rate, I will suggest some common
measures from employee perspective, which can minimize this turnover to certain
extent. These measures will be applicable for every company and employee. Also we are
in context of software testing so I will concentrate more on how to retain good testers in
their positions.

I will address each and every solution we can try to keep low attrition rate. So sit back,
get relaxed as this is going to be a long article.

Who will get help from this article?

This article will helpful to Company management, Managers, Team leads in development
and testing and of course to the emerging testers who are tomorrow’s leads.

What are the effects of high attrition rate on company?

• May lose projects in hand - as clients are not happy with high attrition rate
• Financial burden on company
• Cost to recruit new employees
• Cost of new employee training
• Time for ramp-up in new projects
• Workload on existing employees
• Low employee productivity due to unstable work and overtime

These are few important drawbacks of high attrition rate.

《每日 E 测》第四期 7 2009 年 11 月


www.5etesting.com
How to reduce attrition rate?

First let’s go to root cause of “why employee leave the company?”


The main reason is “lack of appreciation for their hard work”. I mean if company is not
caring about employees then why would they stay in such company?

Keep in mind ‘more money’ is not always the solution! Nowadays employees are more
concerned about quality of life and their family needs.

Here are some solutions on high attrition rate:

• Hire the right people in right positions


• Understand the employee needs and provide it to them
• Respect them
• Always appreciate good work
• Regularly ask for employee input and take appropriate action
• Offer training opportunities to gain advanced knowledge
• Better to become employee oriented
• Pleasant working atmosphere
• Career growth opportunities
• Value employee creativity
• Job security

Last one is very important. Your employees should feel secure about their jobs. If you
can’t provide job security or at least feeling of job security in employees mind then your
company deserve for high attrition rate.

These are some one liner solution. Let’s take some practical solutions.

Motivation:
Any software team should consist of highly motivated and skilled people. Good
motivation comes from good leadership. Good leadership provided by team leaders and
managers can bring down the attrition rate. In my career I observe employees leave the
company just because of their boss. Some unrealistic demands or lack of motivation and
leadership can make employees think over their position and career.

So leaders should motivate and energize colleagues when they lost all hopes.

More Money:
Give them a good compensation and benefit package.

《每日 E 测》第四期 8 2009 年 11 月


www.5etesting.com
Fun at work:
As I said money is not always the solution, fun at work is also important. Only more
money can’t motivate the team if you don’t have fun culture in your company. I believe
in “Work hard, Play hard” culture, so plan some sporting activities, outdoor trips,
different competitions between different teams etc etc… There can be so many such
activities, which can act as refreshment for employees.

Help to settle employee life:


What I mean from this is to help employees providing stability in their life. I know this is
not going to be a simple task but company can help employees by providing medical
insurance, medical facilities to employees. Housing is the first priority of most of the
employees. So help them getting good accommodation.

‘Teresa’, you asked about retaining testers in good positions. So let’s come to testers
problem.

What are the common complaints from testers?

“Sometimes developers ego as they are better than testers”


“Tester is responsible for every fault”
“Schedule slips due to testers”
“Testers are not getting the respect”
“Management don’t consider them equally with developers”

These are some common complaints from testers and this makes them feel insecure in
their job, affecting their daily work and may result in high attrition rate.

Management needs to address these complaints early before testers leave the company.
The solution is - organize your teams effectively, improve communication between
developers, testers and management. This will lead to better understanding and
addressing of testers needs.

Below are the baby steps, which can retain good talented testers in their positions:

Provide them training:


Train all your testers. Provide them training for free, if not possible then with cheap cost.
Make available some remote courses, seminars and books to study. Sponsor and help
them to get the software testing certifications.

Appreciate the good work:

《每日 E 测》第四期 9 2009 年 11 月


www.5etesting.com
Don’t go behind the quantity of bugs. See the quality of bugs and appreciate those
testers working hard to find it. Regularly comment positively on good work from the
team.
Reward testers for finding good quality bugs. Keep some weekly or monthly competitions
such as “Bug of the week” to reward the testers. This will help to build a successful QA
team.

Set finite boundaries to everything:


Your goals should have clear boundaries and completion criteria. Setting goals, those not
having end can become a boring task. Don’t let feel the team that this testing work is
going forever without any insight goal.

Take every bug as a learning opportunity:


Don’t bother testers about the bugs that slip through. Make these bugs as a learning
opportunity. Let them know why they overlooked that bug. This way they will learn from
their mistakes and will not make the same mistake again at lest for the same bug.

Don’t make testing a repetitive task:


Some times we get bored doing same thing again and again. Testers job involve with
repetitive task. So take care to distribute your work so that no tester will execute same
test case repetitively on any project. Randomize the testing work in team, this way team
will get knowledge of whole product, helping to find more bugs.
Good solution to avoid repetitive work is to rotate the experienced employees internally
in different projects.

Create good relation between testers and developers:


Testers need encouragement and support to find more and more bugs so that the final
release is bug free. Build a good team of testers and developers. Treat everyone
similarly.

Don’t forget to celebrate:


Celebrate each and every success moment. This will help to build good team spirit. Host
product release parties to recognize accomplishment.

Conclusion:
Show your appreciation to those employees who work hard. This is a key to successful
business. Show your employees that you are committed to fulfill their needs.

《每日 E 测》第四期 10 2009 年 11 月


www.5etesting.com
Over to you:
These are my personal thoughts to keep good employees (testers) in their positions. I am
not a HR expert but I have mentioned here everything what I feels from employee
perspective to stay on the job.

I want your views “What keeps you on the job?” You can share your personal thoughts,
your expectations from employers or any personal experience in this matter.

If you are not yet the regular reader of this site, I recommend you to subscribe with us
so that you won’t miss any single article on software testing. Click here to get new
articles in your inbox!

《每日 E 测》第四期 11 2009 年 11 月


www.5etesting.com

三种我们要做或不做的自动化的场景

3 scenarios when we should automate (or not)


原作者: Shuchi
译者:Maurice, Testone, Jenvee, Wally

这是一个由访客 Shuchi 写的文章。

Shuchi 是一位多国集团的首席顾问,并且在 IT 行业有着 10 年的开发/测试经验。她的工作


与自动化测试工具有着密切的联系,同时还涉及参与测试策略相关的决策。

为什么要自动化?

在 IT 界一个普遍的观念是,在默认的情况下,自动化测试将提高测试的质量。

这个观念的真实性如何?

正像世人皆知的习语所述,“说话看场合,做事看时机”,自动化测试也是要看时机和场合
的。

在以下情况下,自动化通常是一个不错的选择:

1. 重复性测试
一个需要定期执行重复测试的系统,就是一个很好的自
动化的对象。例如,为了支持项目必须对每一个项目需
求或用户需求执行回归测试 。在这种情况下,手动测试
的投入往往是巨大的,而且容易出错;而自动化确被证
明是非常有效的。

选择一款带有版本控制库的测试工具来管理测试脚本,
这样做是明智的。

自动化的成本和脚本创建初期的投入通常都高于手工测试,必须加以分析这项投资的回收期
有多长。以下一些忠告有助于做出自动化的决策:

z 预计重复测试多少次,持续多久?脚本的“生命”越长,则暗示越有利于自动化的
程度。
z 自动化测试工具的成本多高?
z 需要多少时间/精力才能创建出脚本?自动化不是简单的录制和回放,为了达到预
期的结果,可能需要大量的设计和编码。
z 预计需要增加测试脚本的变更吗?

《每日 E 测》第四期 12 2009 年 11 月


www.5etesting.com
z 团队的测试成员需要工具的培训吗?

“重复测试=>自动化”是一条经验法则,但这并不是一成不变的。一方面是昂贵的自动化的
部署设置(工具);另一方面则是,快速投放构建之后进行匆忙的手动测试,而且你可能会
发现,即使你期望的一定数量的重复性测试也无法用自动化实现。

2. 手动不可行的测试

在某个应用部署到生产环境之前,它(自动化测试)
可能是至关重要的,以确定在庞大的用户负载下如何
运转,或当处理数以百万的记录时又是如何运转。

这类测试场景通常是最易被自动化所模拟。在高风险
的条件下,任何一个遗漏的测试代价都是灾难性的,
即使是一个不可复用的自动化测试,也可能是一个值得的决定。

3.低安全性/“人为的”缺陷

自动化在某些工作方面的表现远远超过人们的预期。给自动化测试工具和测试人员各 2 个
10000 行数据的 EXCLE 表格并核对这两个表格的数据。不用猜就知道谁会做的更快而且准确
无误。

但手工测试在其他类型的测试中更胜一筹。测试人员可以注意到测试记录之外的异常。界面
是否过于杂乱?当鼠标移过按钮时是否有奇怪的闪烁?强制回应窗口背后的屏幕是否只是
闪烁?

自动化仅限于测试那些程序所能执行的功能。人们(手工测试)能够观察/分析的所有事务
并不都能被程序化,因此,在查找缺陷时,自动化测试将会有所遗漏。问题来了:那些遗漏
的缺陷是否很重要?一个不稳定的系统可能不具备自动化的条件,因为严重的“手工”缺陷
也可能被忽略。

自动化更适用于“手工”测试发现缺陷较少且严重等级较低的系统。

结束语

值得牢记的一点是,自动化测试与手工测试也不是一个进退两难的选择。二者结合也能奏效。
在一个多步骤的工作流中,测试中的某些步骤也许适合做自动化,而不是整个流程。那么仅
仅自动化那些可以得益于自动化的步骤吧。

《每日 E 测》第四期 13 2009 年 11 月


www.5etesting.com
This is a guest article by Shuchi.

Shuchi is a principal consultant in a multi national corporation and has


ten years of development/testing experience in the IT industry. She has
worked closely with test automation tools and has been involved in test
strategy-related decisions.

In her off-work hours she writes about cryptic crosswords. Check out her
cryptic crossword guide on the blog, Crossword Unclued.

Why Automate?

A prevalent belief among IT folk is that automation, by default, will


enhance the quality of testing.

How true is that belief?

“There is a time and place for everything”, as the popular idiom goes,
and that holds true for test automation too.

Certain scenarios in which automation is generally a good option:

1. Repetitive Tests

A system that needs the same tests executed


periodically is a good candidate for
automation. Take for example, support projects
that must perform regression tests for every
PR/CR. Manual effort in such cases tends to be
huge and error-prone. Automation can prove
very efficient in such cases.

It makes sense to opt for a testing tool with


a version controlled repository to manage the test scripts.

The cost of automation and the initial effort investment for script
creation is usually greater than for manual testing, and it must be
analyzed how far this investment will pay off in the end. A few pointers
to help make that decision:

• How many repetitions of tests are expected, for how long? A longer “life” of the
test scripts tips the scale in favor of automation.
• How expensive is the tool?

《每日 E 测》第四期 14 2009 年 11 月


www.5etesting.com
• How much time/effort will it take to create the test scripts? Automation may not
simply be record-and-play, a lot of design and coding may have to go in to
achieve the desired result.
• Are incremental changes expected to the scripts?
• Do testers on the team require training on the tool?

“Repetitive tests => automation” is a fair thumb rule but not an


inviolable one. A costly automation setup on one hand and quick-to-build
on-the-fly manual tests on the other, and you might just find that
automation will not be useful even if you expect a certain number of
repetitions.

2. Manually Infeasible Tests

Before an application is deployed in the


production environment, it might be
critical to determine how the application
will behave under huge user load or when
dealing with millions of records.

Such test scenarios are usually best simulated with automation. In high
risk conditions, where the cost of missing a test might be disastrous,
even a single-time use of automation might be a worthwhile decision.

3. Low Severity/Probability Of “Human” Bugs

Automation can perform some jobs far better


than a human can hope to do. Give the tool and
the human tester two excel sheets with 10,000
rows of data each to reconcile with each other.
No prizes for guessing who can do it faster,
without errors.

But then, humans are far better at another


sort of testing. Humans can notice oddities
beyond documented tests. Does the UI look too
cluttered? Does the mouse flicker strangely when moved over the button?
Did the screen behind the modal window just blink?

Automation is limited to testing what it is programmed to do. Not


everything that the human mind can observe/analyze can be programmed, and
so, automation will miss out on capturing some bugs. The question to ask

《每日 E 测》第四期 15 2009 年 11 月


www.5etesting.com
is: how important are those missed-out bugs? An unstable system might not
be ready for automation, as severe “manual” bugs may get ignored.
Automation is better suited to systems in which the “human” bugs are
expected to be fewer and are of low severity.

In Closing

A point worth remembering is that automation vs. manual does not have to
be an either-or decision. A mix can work. Take a multi-step workflow –
a couple of steps might be fit for automation, not the entire flow.
Automate only those steps that will benefit from automation.

《每日 E 测》第四期 16 2009 年 11 月


www.5etesting.com

妙用 VMware Workstation

使商业软件试用时间无限期
作者:韩柳
工作和学习的过程中,会依赖到琳琅满目的商业工具软件。大多商业工具软

件的价格异常昂贵,动则几十万上百万。对于我们个人用户或者小公司的从业者

来说,使用它们是可望而不可及的遥远。笔者是做软件测试工作的,常用的相关

工具自然是让我饱受其苦、欲“弃”还留。

然而,经典影片“侏罗纪公园”中有一句话:“生命,自会找出路”!

笔者可没有像电影中那些不修边幅、手指飞快的计算机鬼才们破解密码的手

段。也不愿意担着入狱的风险用最快的计算机花个几年时间来暴力猜测那些诡异

的 0、1。

通常,任何用于商业的工具软件都会有一个试用期,也许是 14 天,也许是

30 天。他们会结合一定的算法和机制来实现时间不可逆转。它们通常有这样的

特点:

1. 当试用完成,再向前更改操作系统时间,也是无济于事。

2. 安装好了,即使不用,试用时间也会逐渐减少直到试用结束。

3. 过期了,再卸载安装,还是过期不可用。

因此笔者结合虚拟机软件 VMware Workstation 的开源功能,来实现延长某

些商业工具软件的试用时间及快速的环境搭建。

一、 在虚拟机中进行环境部署。

《每日 E 测》第四期 17 2009 年 11 月


www.5etesting.com
介于篇幅就不多说了。不了解的同学可以熟悉一下著名虚拟机软件

VMware Workstation 的使用。

二、 实现每次虚拟机启动时,都从固定的时间开始运行。

这可以解决上面第 1、2 个特点的问题。也就是在操作系统启动之

前就向前修改了时间,并且只要虚拟机不是运行状态试用的时间就不会

减少。

比如说下班时间关掉了虚拟机,那么商业工具软件的试用时间就不

会随着操作系统的时间而减少。这会大大延长试用的时间。

但是这个固定时间的选择需要注意,必须是商业工具软件安装后的

最近的时间。因为如果是向前了,商业工具软件的试用通常会立即结束;

如果是向后了,又会减少我们试用的时间。

步骤如下:

1. 在虚拟机的目录中找到 .vmx 的文件。

2. 记事本方式打开。在末尾添入如下代码:

tools.syncTime = "FALSE"

rtc.startTime = 1256788888

time.synchronize.shrink = "FALSE"

time.synchronize.restore = "FALSE"

time.synchronize.continue = "FALSE"

time.synchronize.resume.disk = "FALSE"

3. 其中 1256788888 是“时间戳”,相当于 2009-10-29 12:01:50

这个时间。

此时间即为每次虚拟机启动的时间。

《每日 E 测》第四期 18 2009 年 11 月


www.5etesting.com
4. 求得具体需要的“时间戳”。方式如下:

· 如图利用 EXCEL 的公式,在获得的时间戳的单元格写入公

式“ =(B2-19-70*365)*86400-8*3600 ”

· 公式中 B2 为希望得到的时间的单元格坐标。

· 根据试用商业工具软件安装完成的时间,写入到“输入希

望得到的时间”单元格中。即可在“获得的时间戳”中得到

时间戳。

三、 将已经部署好的虚拟机文件进行备份。

当试用期结束时,抛弃过期环境的虚拟机文件,用备份的虚拟机,你又

快速的得到一套崭新的可试用环境。别忘记再次备份哦,否则下次就没

得用了。

在此,笔者需要提醒,在旧虚拟机中产生的数据及文件也会随着虚拟机

的删除而消失。因此笔者通常使用网络共享方式的提交及下载,也就是

在虚拟机上不保存重要的数据及文件,当需要时向共享网络服务器中提

交及调取。

四、 嗨,你真的想无限期的使用么!

第“四”讲应该是第“三”讲的分支。

《每日 E 测》第四期 19 2009 年 11 月


www.5etesting.com
回顾一下第“二”讲,它使得商业工具软件在关机状态下试用时间

不会减少。那么此方法会保证商业工

具软件在开机的状态下试用时间不会减少。

何以做到呢?通常商业工具软件会根据操作系统的时间运行,定期

的获取一个时间点来作为试用时间的

删减。删减的触发条件大都是整时、或者是整分。那么我们只要让

操作系统的时间不能达到整时或者整

分就可以了。

方式如下:

1. 编制 VBS。

'说明:每当达到 55 秒时自动改变系统时间为 00:00:00

amend()

i=1

while i > 0

wscript.sleep 55000

amend()

wend

sub amend() '改变系统时间为 0:00:00

dim objShell

set objShell = CreateObject("Wscript.Shell")

objShell.Run("%comspec% /c time

00:00:00"), 1, TRUE

set objShell = nothing

end sub

《每日 E 测》第四期 20 2009 年 11 月


www.5etesting.com

2.将此 vbs 文件保存并放入系统的启动中,使其开机即启动。

至此,你的商业工具软件试用时间,无论在关机状态还是在运行状态,都不

会随着真实时间的减少而减少。

《每日 E 测》第四期 21 2009 年 11 月


www.5etesting.com

使用 ruby 来调用 win32 接口


作者:watir

require 'Win32API'
def user32(name,param_types,return_value)
Win32API.new 'user32',name,param_types,return_value
end
find_window = user32 'FindWindow',['P','P'],'L'
system 'start "" "d:\LockNote"'
sleep 2
handle = find_window.call nil,"LockNote - Steganos LockNote"
puts "the window handle is: #{handle}"
keybd_event = user32 'keybd_event',['I','I','L','L'],'V'
KEYEVENTF_KEYDOWN = 0
KEYEVENTF_KEYUP = 2
"This is some text".upcase.each_byte do |b|
keybd_event.call b,0,KEYEVENTF_KEYDOWN,0
sleep 0.05
keybd_event.call b,0,KEYEVENTF_KEYUP,0
sleep 0.05
end
#关闭程序
post_message = user32 'PostMessage',['L','L','L','L'],'L'
WM_SYSCOMMAND = 0x0112
SC_CLOSE = 0xF060
post_message.call handle,WM_SYSCOMMAND,SC_CLOSE,0

使用 ruby 能调用 win32 的功能,使 ruby 的自动化不但针对 web 页面,也可以对

windows 应用程序进行自动化了。

《每日 E 测》第四期 22 2009 年 11 月


www.5etesting.com

QTP 的方法重载介绍
作者:风过无息

目有过开发经验的人员都有会经常使用继承和重载,而 QTP 的重载相信知道的人不多,

使用的更少了,本来就是介绍 QTP 内置的 RegisterUserFunc 方法,来实现 QTP 方法的重载,

这样可以针对这些常见的方法进行拓展。

函数

'传入对象
'obj 传入对象
'x 对象的输入值
Function MySet (obj, x)
dim y
y = obj.GetROProperty("value")
Reporter.ReportEvent micDone, "previous value", y
MySet=obj.Set(x)
End Function

脚本

'使用重载的方法
RegisterUserFunc "WebEdit", "Set", "MySet"

Browser("E 测中国-论坛 软件测试论坛|e 测工作室|自动化测试|QTP").Page("E 测知道 -


全球唯一软件测试知识问答互动平台").WebEdit("_txtSearch").Set "5Etesting"
'还原重载的方法
UnRegisterUserFunc "WebEdit", "Set"

《每日 E 测》第四期 23 2009 年 11 月


www.5etesting.com
大家可以看到MySet的方法其实是重载了QTP的set的方法,它实现的功能就是除了正常的set

值以外,还把value的值输出到result中,大家可以看到结果的(见上图).

这个例子可以告诉我们,QTP提供了这样的重载方法,我们可以利用这个方法重写一些QTP

自带的方法,特别是我们需要对于QTP自带的方法进行大批量的修改的时候。

《每日 E 测》第四期 24 2009 年 11 月


www.5etesting.com

影响性能的主要因素 ——性能测试用例设计初探

作者: shanghai_jeff

现如今软件产品的性能问题来越受到人们重视,性能测试也逐渐成为测试工作的重点之

一。性能是一个复杂的系统问题,它受诸多因素的影响。对性能测试用例的设计尤为重要,

好的用例能起到事半功倍的作用,而不恰当的用例则会使测试工作徒劳而一无所获。本文列

举了影响软件性能的主要因素。通过一些案例,分析这些因素的作用。以此探索性能测试用

例的设计方法。

一、数据量

案例一

某系统临上线前,现场工程人员反馈,无法下发商品资料到收银机。在执行下发动作以

后,资料迟迟未生成,等待 30 分钟以后,系统报超时。该用户给每个门店指定了一份零售

目录,系统中零售目录表数据量很大(该用户约 2 万种商品,100 多家门店。表中数据量为

2WX100,约 200 多万。


)。由于索引不正确,故而产生性能问题。

案例二

某单据在明细数少(10 条左右)情况下,性能很好。平均查看单据在 2 秒以内。但测

试时发现,查看 200 行记录的单据是性能不佳。检查代码排除了数据库索引问题,最后定

位出原因:系统在查看单据时,每行明细都会执行一次数据库查询,而每次查询都要连接一

次数据库,性能自然会受到影响。

二、并发用户数量

案例三

某系统在使用一段时间后发生性能问题,用户进行门店叫货操作,系统响应非常慢。起

初在公司里无法重现这一现象。经过分析,逐渐摸出规律:用户往往是在早上 8、9 点刚上

班的时候进行叫货,这时候的并发用户可能比较多。通过多用户并发测试,重现了这一现象。

《每日 E 测》第四期 25 2009 年 11 月


www.5etesting.com

数据量及并发用户数量对系统性能有重要的影响。在进行性能测试时,一定要保证系统

具有一定的数据量。同时也要留意,哪些业务会出现并发。在进行性能测试需求分析时,也

要结合这两者制定指标,见下表:

测试点 数据量 并发数 性能指标 测试结果 结论


用户登录 - 10 登录时间<30 秒
查询商品信息 2 万条商品 3 响应时间<2 秒
生成配货单 6000 张配货单 1 3 小时内生成配
每张单据 200 个商品 货单
账单出账 600 个供应商 1 小时内完成出
每个供应商 200 张货单 账作业
……

性能测试指标

数据量及并发用户量的估算

性能测试数据量和并发量,要结合产品设计目标以及用户的实际业务运营,切实合理地

进行估算。受制于软件技术及硬件水平,产品性能不可能无限制提升。数据量的标准也不能

一味求高,如果指定的指标超过了系统最大标准,进行这样的测试是一种徒劳。

三、系统运行时间

案例四

某系统在测试过程中发现,系统性能不佳。平均每隔半天就要重新启动一次服务器。对

该系统运行情况进行跟踪发现,随着系统的运行,性能逐渐下降。检查代码后发现,存在内

存泄漏。

如果程序代码存在问题,存在内存泄漏或类似问题,系统的性能就会逐步下降。这就要

求在做性能测试时要对系统进行较长时间的疲劳测试,验证系统在长时间运行下是否会崩

溃。

《每日 E 测》第四期 26 2009 年 11 月


www.5etesting.com
四、后端进程

案例五

某系统在一次程序升级后,发现性能有所下降。之后查明原因,是由于升级后的后端交

易处理过程写法存在问题,占用了过多系统资源,导致系统性能下降

案例六

某客户系统一段时间内日结频繁失败。排除了诸多因素后,但问题仍未解决。最后定位

发现是由于客户服务器在每天半夜会有数据备份的工作,当调整备份作业的时间之后,问题

解决

后端进程也是影响系统性能的重要因素。系统要尽可能运行“干净”的机器上,以免其

他软件对其产生影响。同时也需要重点关注系统内部重要的后端进程。这部分程序的性能往

往会对整个系统的运行产生影响,需要重点测试。

五、其他

下列因素也会对系统的性能造成影响,在设计测试用例时需要重点关注:

n 软硬件配置

要记录下测试时所用的软硬件配置,测试时保持配置的稳定。尤其是软件配置,操作系统和

数据库不同的配置,都会对系统产生很大影响。

n 网络环境

尽可能模拟真实的网络环境,包括路由、网络带宽……

n 所采用的技术

由于技术原因产生的性能问题也很多,在测试前务必了解产品所采用的技术。对一些新技术,

要重点关注。

《每日 E 测》第四期 27 2009 年 11 月


www.5etesting.com

GUI 层 -- 面向对象的扩展设计

作者:zzxxbb112

摘要
本文主要介绍的是 QTP 的一种较为先进的技术,本技术是由 AdvancedQTP SOLMAR 自动

化测试专家组所采纳的一种面向对象的设计模式,由 Meir Bar-Tal 于 2008 年 12 月 20 日发

表,笔者将会详细介绍此设计模式的每个类以及方法,设计模式的使用,设计模式的优缺点。

此模式主要是把 QTP 描述性编程以及装载 GUI 对象的 DICTIONARY 对象通过业务驱动的方式

来得到体现,最有价值的地方在于其对象识别的先发机制,可以有效的防止 QTP 在运行时识

别对象出现卡住的现象,当对象出现不匹配时,能使测试顺利退出,并在报告中定位细节。

有效的降低了测试的维护量并节省了自动化测试的时间。

介绍
自动化测试的核心问题就是如何减少维护量,例如:我们应该使用对象库还是描述性编

程?如果选择 OR 那么我们可以在每个 ACTION 中使用共享对象库或者本地对象库,那如果选

择 DP,可以有什么方式来实现吗?

成本效益和可维护性是我们在做自动化测试中最为关注的,在此引出一个概念-GUI 层

扩展。这一概念经过的 SOLMAR 自动化专家组的分析和观察已被采纳,使用它就可以尽可能

地提高代码重用性(通过使用面向对象的方法来提高效率,并分解出若干个抽象层且可维护

性较高的自动化项目)。

层的概念
我们前面已经提到了 GUI 层,那层的作用是什么呢?这里先简单解释一下,层可以使重

用化发挥到最大极限,定义一个类(封装一个图形用户界面层)通过相应的接口来控制应用

程序 GUI 界面中的测试对象,从而把这个类称之为 GUI 层。

封装测试对象类

《每日 E 测》第四期 28 2009 年 11 月


www.5etesting.com
为了能够使大家更加容易理解此设计模式,我在这里重新修改了原文中层的方法和对

象,这里就通过把百度搜索页封装成 GUI 层作为一个最简单的例子来讲解,代码如下:

首先看最外层的 BaiduSearch 类它代表着一个百度的 GUI 层,我们在类中定义了一个

Scripting.Dictionary 对象并且为其设置 GET/LET 方法,接着是一个初始化的函数 Init 这

个函数主要的作用是把页面上下的所有对象全部封装在一个 Scripting.Dictionary 容器对

象中,并通过描述性编程结合迭代式的对象封装有效的提高了代码的重用性,最后还有两个

业务行为函数,一个是在文本框中输入搜索内容的行为,另一个是点击搜索按钮行为,这两

个函数都是可以直接在字典对象中进行搜索关键字来定位对象的,并针对对象进行操作来达

成关键字字典对象驱动。
。这样一个百度的 GUI 层就已经封装好了,并且这个类还具备了两

种业务行为的接口。

接下来来看另一个重要的函数,大家应该知道当 QTP 在运行时,测试对象一旦发生变化,

与对象库中的对象无法匹配时 QTP 就会卡住直到超时,然后弹出错误框,在 QC 里执行也是

《每日 E 测》第四期 29 2009 年 11 月


www.5etesting.com
一样,只是没有了错误框,这样的情况会导致在自动化测试中浪费很多无谓的时间,因此我

们在 GUI 层中的 INIT 函数的最后加入了 IsContextLoaded 函数,此函数的作用就是在检查

GUI 层中所有对象的是否已经存在并且把结果进行返回。

由于 QTP 是不提供从外部文件中读取类的方法,因此我们在这里添加一个创建类的函数,接

着我们的外部文件就已经封装好了,直接保存为*.vbs 后就可以为 QTP 服务了。

《每日 E 测》第四期 30 2009 年 11 月


www.5etesting.com
调用业务行为
在 QTP 中加载之前保存的 VBS 文件后,在专家视图中输入以下脚本,就可以完成业务行

为的调用了。

当脚本执行完毕后,会在结果报告中显示对象的存在与否,如果在运行时出现某个对象不能

识别,或者说出现属性不匹配的情况,QTP 就会立刻退出,并在结果报告中显示不匹配的那

个对象来方便我们的定位,这其实也是本设计模式的一个比较明显的优势。

对象识别全部通过的结果图

个别对象识别未通过的结果图

通过上图我们可以看到当对象出现不匹配时,我们可以很容易的在结果报告中进行定位。

《每日 E 测》第四期 31 2009 年 11 月


www.5etesting.com
总结
优点:

9 高效的重用化有效的减少了代码的维护量

9 关键字字典驱动有效的提高了编码的效率

9 GUI 层提供的行为函数接口使脚本与业务能够更好的关联起来

9 对象检查的先发机制可以有效的防止 QTP 卡住的现象

9 对不匹配的对象能够在结果报告中自动定位

缺点:

z 由于 QTP 缺少类这一功能的提示,因此脚本编写没有了代码提示功能

z 前期工作量较多,比较适合大型的自动化测试项目

z 需要有一定的编码能力

(QuickTest 专栏:http://blog.csdn.net/zzxxbb112)

参考文献:

《Implementing a GUI Layer with Classes》 December 20th, 2008 by Meir Bar-Tal

《每日 E 测》第四期 32 2009 年 11 月


www.5etesting.com

《QTP 项目应用与进阶》读后感

作者: testbaby(小强)

编者语:小强在 5etesting 的论坛里记录下了他学习的体会,在此刊登和大家分享。

第一章
个人感觉不错,写的简单明了,点出了重点但又不冗余。比起枯燥的教科书来说更显得
实用一些。,
顺便把自己觉得好的想法摘录出来,大家一起分享一下:
1、CMMI 和敏捷的结合可以很好的综合两者的不足和结合两者的优点。1
2、CMMI 是给我们提供了一个参考的模型和指导思想,并不一定要过 CMMI。我们可以通过研
究和学习 CMMI 分析它的 KPA 来指导我们做正确的事情(学习那些好的思想比过证更重要)# ~
3、自动化测试是为软件测试服务的,软件测试是为软件产品服务的,而软件产品是为了体
现产品价值自动化测试的引入成功与否,体现了是否合理的诠释了最后软件产品的价值,也
就是投入和产出是否能够到达最大的收益比率。(说的非常漂亮,呵呵,可以说是准确表达
了软件测试在软件行业中的一个彼此关系)

第二章
第二章可是看了老半天了,总体感觉不错,能和实例结合起来,也都把知识点说到了,
尤其是对 DataTable 和调试的讲解很不错。国内很少有书能对这两个知识点讲的全的。
但个人有个感觉,就是例子太杂,第二章如果能用一个完整的小项目把这些知识点结合
起来讲解我想应该是非常棒的,知识能连贯起来,实例也能连贯起来,给人环环相扣的感觉。
1
+ ?- B* E6 o(
第三章
终于看完第三张,收获不少,虽然有些知识自己以前是知道的,但是比较杂,需要通过
项目来把知识整合起来。我一直觉得如果不做项目自己的水平会下滑很快,但是如果不总结
那么水平也不会提高的很快,第三章从一个比较完整的项目讲述了 qtp 的应用,对于有 qtp
基础的同学学起来比较顺,但是没有 qtp 基础的可能需要补一下先。呵呵

总体感觉不错,每个点都在项目中讲到了,但是个人感觉顺序上有点乱,但也说不出所
以然来,就是看的时候感觉有点不舒服。 ! p6 I0 C/ B) I/ T3 r' I; F

《每日 E 测》第四期 33 2009 年 11 月


www.5etesting.com

另外对里面的一句话非常赞同:先确定测试对象,在确定测试内容,在想测试方法,的
确,思想和前期的准备是很重要的,如果没有一个前期明确的思想对于一个项目来说是个灾
难。一旦你有了思想,也就是有了一个框架,那么剩下的就是用什么方法来实现了,无法就
是编程语言,不会了学,不知道了查,总能完成,但前期的思想不是每个人都能想的很完善
的。
! c9 K( W2 _9 u- }# R

呵呵,期待第四章,继续品尝 ing~~u9 ?& V+ v: [( y


"

《每日 E 测》第四期 34 2009 年 11 月


www.5etesting.com
《QTP 项目应用和进阶》样章选读

4.9 Class 类在 QTP 中的实践 

对于 QTP 编程有一些了解的朋友都会知道 VB 这门语言,VB 作为面向对象的编程语言


也具备 Class(类)的概念,它比我们经常说的 Java 里的类逊色多了(因为它不能继承,不支
持方法的重载)。虽然这里的 Class(类)不是对象,但是它同样定义其特性 (attribute) 的
属性 (property) 和定义其行为事件,这些特性假如应用在我们平时做自动化测试中可以产
生神奇的效果,而网络上这样基础的教材也很贫乏,虽然这些简单的应用对于开发出身的测
试人员或许是小菜一碟,但是对于一些开发技术很弱的新人们来说是非常困难的,于是本文
想从基础开始讲解怎么构造自己的第一个 Class。

4.9.1 声明类

这里介绍的是类的基本声明,声明的方法和 function,sub 声明类似,请参照下面说明。


类的声明简单的可以理解开发商建了很多房子,各种各样的。
具体声明如下:
Class name
statements
End Class
参数说明:name :必填且唯一,类的名字;
statements:必填。类里的声明,比如变量、方法等。
其中类的声明可以是 Private 或者 Public。默认是 Public 的,具体说明这里就不再綴
余。

4.9.2 实例化类以及示例

本小节中我们将实例化一个类,在这个类中定义了函数和过程。

(1)实例化类
实例化一个类的具体用法如下:
Set objectvar =| New classname

举例说明:
Set sl=new mytest

(2)Function 和 sub 在 Class 中的声明


首先我们来简单的介绍一下 Sub 和 Function 的声明和用法。Sub 的声明注意事项如下:
◆ VBScript 的 Sub 以 Sub 开始,以 End Sub 结束,中间是 VBScript 语句,需要符合
基本语法;

《每日 E 测》第四期 35 2009 年 11 月


www.5etesting.com
◆ Sub 完成一系列的动作,它和 function 的最大差别是 sub 是不产生返回值;
◆ Sub 可以有输入参数(如常量、变量、或表达式);
◆ 假如 Sub 没有参数,但是 Sub 语句在开始也必须带有一对空括号。

那我们现在就开始迫不及待的开始建立我们的 Sub。首先我们创建一个最简单的,在这
里我们使用一个内建 VBScript 函数 MsgBox 用以显示计算结果。

代码如下:
‘这是申明这个 Sub
Sub mysub(Input_value)
MsgBox "The input string is "& Input_value
End Sub
‘调用过程
Call mysub("myinput")
执行结果如图 4.9.1 所示

图 4.9.1 过程执行结果
。。
。。。。
。。。。
。。。
。。。。

《每日 E 测》第四期 36 2009 年 11 月


www.5etesting.com

征稿启事
《每日 E 测》是一本涵盖软件测试各方面实践经验知识,国内首刊以自动化测试为特色的 E
测中国旗下的非营利的综合性电子杂志。本刊以“知识分享,共同成长,提高国内软件质量”
为办刊宗旨,服务于所有软件测试行业尤其是自动化测试行业的工程师。为了汇集更多广大
软件测试从业人员的研究成果、促进学术交流互补、丰富软件测试理论创新宝库,我们特向
全球征集优秀中文稿件。

【征稿对象】
所有软件行业从业人员,对测试有热情的愿意分享工作中软件测试的心得体会的所有海内外
人士

【来稿须知】
1.文字精练、语句通顺、层次清楚。文章内容应具有先进性和实用性。引用资料要注明文献
依据,参考文献需为作者亲自查阅的近 5 年的主要文献
2.投稿方式:电子邮件形式,请发送至AskWebMaster@5etesting.com。来稿请使用word排版,
并请注明作者姓名、单位、通讯地址、邮编、电子信箱、联系电话等,本刊暂只接受邮件投
稿
3.论文的基本要素齐全,文章标题、作者单位、作者姓名、关键词、摘要、结语、参考文献
等。
4..文责自负,文稿一律不退,请作者自留底稿,请勿一稿多投!
5.本刊有权对采用的稿件作必要的修改
6.来稿必复,如在 15 日内不见回复,请再次发送邮件,以免影响正常发表
7.其他未尽事宜及本刊相关情况,将在文稿采用通知中详告作者

【其他事项】
1.网站收录:我们会将《每日 E 测》发表在 E 测中国首页及“E 测下载”的显著位置,供软
件测试界的同行下载学习与探讨
2.优秀作者将成为我们的特约撰稿人,并赠送《QTP 项目应用与进阶》
3.本征稿启事长期有效
4.E 测中国保留对《每日 E 测》的所有解释权

E测中国 - www.5etesting.com

《每日 E 测》第四期 37 2009 年 11 月

You might also like