Archive

Archive for the ‘软件测试’ Category

用户界面测试的颠覆性技术-Sikuli

January 27th, 2010 ricky.zhu 8 comments

Sikuli绝对是一种颠覆性的技术,至少对于GUI的测试技术来说,是质的突破,比如它彻底解决了在这之前GUI自动化测试工具上的关键点-对象识别。

技术来自于从麻省理工学院计算机和艺术智能实验室的一个用户界面设计小组的研究项目,Sikuli脚本和Sikuli开发平台基于MIT License发布,是开源的。

什么是Sikuli
========
Sikuli是一种利用图片(快照)去搜索和自动化GUI的视觉技术,Sikuli的第一个release包含Sikuli脚本,也就是为Jython编写的一种视觉脚本API,同时包含了Sikuli IDE,一个可以非常容易的用快照书写视觉脚本的集成开发环境。Sikuli脚本可以自动化你在屏幕上看到的一切,而这不需要内部API的支持。你可以编程控制一个页面,一个运行在Windows/Linux/Mac OS X上的桌面应用程序,甚至于一个运行在模拟终端的iphone的应用程序。

Sikuli的必杀技
========
自动化所有你看到的一切
利用快照进行自动化
工作在Java平台(意味着可移植)

Sikuli安装和使用
===========
下载安装了一下,在Windows上需要JDK1.6以上环境,这里有一个简单的视频介绍(看不到youtube的同学翻墙吧)。

不会翻墙的地同学请从如下视频观看:

继续阅读论文
=========
GUI Testing Using Computer Vision

Sikuli: Using GUI Screenshots for Search and Automation

MIT news介绍图像驱动计算

一个例子快照
=========
sikuli

拭目以待!

Categories: 测试工具 Tags:

测试如何同开发搞好关系

December 9th, 2009 ricky.zhu 3 comments

测试跟开发是一对死对头。
你还在用这样的观点看待测试人员和开发的关系吗?
你已经out了。

测试人员跟开发的关系一直是一个矛盾的话题,如何处理和测试跟开发的关系,保持步调一致,把过程中的矛盾和对立统一到共同为提高产品质量这个主题和最终目标上来,是一个体力活,更是一门艺术。

这篇文章总结的不错,因为比较浅显易懂,就不一一翻译了,最终作者总结了四点:

Tip #1: Don’t editorialize the bugs you find.
要理解开发人员,他们有时候也面临很大的压力,有时候犯一些低级的错误是难免的,要学会宽容。

Tip #2: Stay in sync with the development cadence
要跟开发保持同步,有时候你提交的bug得不到反馈并不是他们没看到,也不一定是问题不重要,要保持沟通,步调一致。

Tip#3: Isolate bugs effectively
提交bug之前要对bug进行初步的分析和简单的有效的定位,而不是发现问题立即就提交,最好能够问自己几个问题:

1)是否已经发现了能够重现问题的最简单的路径(Ricky注:很多时候发现一些测试人员提交bug的时候描述步骤是做了a, b, c, d, e … f, g, h 然后问题出现,其实经过追踪,发现问题出在f-g这一步,前面的一些都是无关的操作,要学会简单的定位问题,这不仅仅节省了开发人员的时间,而且节省了自己的时间)
2)是否弄错的程序的版本(Ricky注:很多时候,我们发现问题,往往是因为拿错了程序的版本或者问题在被测的版本中是已知的,这就要求在测试之前特别是提交bug之前,首先检查下版本信息和known issue)
3)是否已经排除问题是因为自己的环境配置问题导致(Ricky注:有时候一些问题往往是环境配置所致,这个时候检查一下,是否是环境问题,在别的环境或者不同配置的情况下是否可以重现)

Tip #4: Sleep on bug reports
提交bug report之前要预留一点时间,给自己一点缓冲,也跟开发人员一点余地。比如作者自己的一个办法就是写好bug之前,等一晚上再提交,第二天提交之前用自己的描述的步骤重现一次,看看是否还可以重现问题。

参考原文

Categories: 软件测试 Tags:

测试工程师是否需要懂开发

July 20th, 2009 ricky.zhu 1 comment
.!.

这是测试界的一个永恒的话题:测试工程师是否需要懂开发(或者叫会编码)

文中论述的十分充分,最后的结论是 it depends,我在很大程度上十分同意文中的观点。我的观点是“测试工程师不一定要懂开发,但是懂开发可能对你的测试职业发展有很大的帮助”

原文地址

Am I a Tester or a Programmer? Who am I?

Abhijit Navindgikar: “I am having one question regarding software testing. Currently I am working as a software tester. I am having 3 years of experience in manual testing and having the basic knowledge of C/C++. Is it necessary for me to learn new technologies like C# .NET for future prospects in testing? Is it necessary for the tester to have the programming skills also? (Till know I didn’t feel that tester need to know the programming but let me know your views). Also will it be possible for a black box tester to shift his career to white box testing? If yes what steps need to follow to start the same?”

Lakshmi: “Recently I was browsing some of the testing sites and came to know that “No knowledge on programming language is a hindrance to a tester’s career”. Is that correct? Really, programming language knowledge is that much necessary for a tester? I am not able to digest this. Please help me.”

John: “My test manager feels that all testers must have decent programming skills. He is so much obsessed with his belief that I fear he may go ahead and fire testers who are not so good in programming (even though they are quite good at testing). Is there a way to change his mindset without hurting his ego?”

These are excerpts of few emails from my inbox. These are kind of questions that always have made me to think. Every time I think on these questions, some more questions start popping up in my mind. Questions like:

1. Knowledge of programming and effectiveness of a tester – is there a connection?

2. Can a good programmer make a good tester?

3. Can a bad programmer make a good tester?

4. Can a non-programmer make a good tester?

5. Can I think of contexts when knowledge of programming can enhance my testing?

6. Can I think of contexts when knowledge of programming can hamper my testing?


7. Can I think of contexts when ignorance of programming can enhance my testing?

8. Can I think of contexts when ignorance of programming can hamper my testing?

9. The list of questions continues…

I have seen quite a lot of such “Do testers need programming knowledge” kind of debates, especially since Microsoft started distinguishing its testers as Software Test Engineers (STE) and Software Design Engineers in Test (SDET)! And this debate gathered momentum as Microsoft started shifting weightage from STEs to SDETs while hiring (and firing) test engineers! However, I am not going to extend the STE Vs. SDET debate in this particular post of mine. Rather I will try to focus on the need of programming knowledge for a tester.

To me the single sentence answer for the question “Do I need programming skills to excel as a tester” can be – “It depends”. It depends on your particular context, the type and complexity of the AUT [Application Under Test] and more importantly your testing mission. Blindly hiring testers who can code may prove to be a bad idea, especially if you are neglecting your testing mission while taking such a biased decision!

Having said that, there can be contexts where a tester who can code, can be an asset for the test project. Think of scenarios where testers need to automate GUI tests. Even if the tester might be using some so-called record-and-playback kind of tool (WinRunner, QTP, IBM Rational Robot blah blah…), knowledge of programming, can be an added advantage. That can allow a tester to tweak his tests at script level to make them more powerful and flexible! e.g. The tester need not re-record his tests each time a object name for a recorded test object is changed (may be due to recent code refactoring). He can simply go and change that particular object name from the script. As Danny Faught talks in this interview, “Test automation requires programming skills. Plain and simple, no way around it. No tool can get around that.”

In cases where the organization (or the client) can not afford acquiring license for costly automation tools, the programming skill (in most cases knowledge in some scripting languages like Perl, Python, Ruby, JavaScript and markup languages like XML, XSLT) can help the tester in setting up a home-grown test driver framework to cut down the license cost of Commercial tools and at the same time can result in a customized tool that fits better for your testing requirement. Forget about test automation, testers with programming skills may detect defects earlier in development cycle and may also be able to pin point the cause for the defect (provided that the tester is aware of the underlying code and the system architecture). This may also help the tester in finding other areas in code where there can be similar errors. A tester who has a development background can also participate in code reviews, can debug problems, perform unit testing and identify patterns in the code that are error prone. If you are a tester, knowledge in programming can sometimes earn you greater credibility among the programmers.

But does this mean a tester without coding skills is useless? Of course not! To say Manual Testing (Sapient Testing, the James Bach way) is losing its value, in my opinion, is too early to jump into any conclusion. With user’s expectations increasingly higher, it would be foolish to lower its value. How many testers do unit testing in this agile era of software development (where the programmer has to write unit tests for his own code snippet)? A good tester is a good tester for his ability to test, not for his ability to code! After all, a tester gets paid to test, not to code. Although coding background can help in certain contexts to test better, that should not be over-generalized! Test automation can never replace manual testing. I think, the same can be safely said about programming skills of a tester. A tester with coding skills can not replace a tester without coding skills. If asked to test an application, both of them will find different sets of defects. Think of user experience/interface related defects for example. Or for that matter, think of scenarios where you don’t have enough time to test. Would you sit down to do code review and perform a cause and effect analysis using your programming skills or would you rather exploratory test it right away?

If I were a test manager, I would rather hire testers both with and without coding skills. Testing is all about flexibility! Each and every member of the testing team can’t be expected to have equal skill sets and equal areas of expertise. Testing as a craft is evolving into different specializations and it must be understood that each kind has its own importance. So it always helps to have a testing team comprising of a variety of skill sets. Testers with different specializations (with or without coding knowledge) are not mutually exclusive rather they should compliment each other. What do you think?

Happy Testing…

Categories: 软件测试 Tags:

开源数据库性能测试工具HammerOra介绍

July 19th, 2009 ricky.zhu No comments
.!.

前段时间发现了这个工具,并粗略研究了一下,工具是基于TCL(Tool Command Language)语言的(我之前用Tcl工作过好几年,之前自动化框架就是基于Tcl来开发的,Tcl是非常优秀的自动化脚本语言)

首先HammerOra 是一款负载测试工具

其次HammerOra目前支持Oracle, MySQL和HTTP应用(web应用)

然后HammerOra是开源的,框架有点类似于商业工具LoadRunner

因为HammerOra是基于Tcl语言的,所以天生就是可移植的,可以运行于Windows平台和Linux平台。

HammerOra内嵌了两套标准测试脚本 tpc-c and tpc-h,当然你也可以自己开发和扩充测试脚本,开发语言是Tcl

HammerOra包含三个部分(这点有点类似于LoadRunner)创建测试脚本(打开build-in的tpc-c or tpc-h)然后可以进行调试;配置并创建虚拟用户,并设置虚拟用户的策略,比如持续时间,用户迭代,rumpup原则等,然后控制场景运行;最后是监控事物计数器。对应于LoadRunner分别是VUGen, Controller and Analysis

HammerOra的工作原理就是捕捉Oracle的trace文件,并生成相应的SQL脚本进行回放,所以对用户的场景模拟程度是非常高的。HammerOra跟Oracle的接口是也是利用一个Tcl的package OraTcl来完成的。(之前我们在开发测试平台时,后台驱动Oracle数据库操作也是通过这个package来完成的;记得我面试oracle第一个职位的时候,美国的同事还问到关于这个Package的几个问题)

HammerOra的安装非常简单,一种是源码安装,还是就是安装包安装,就不多做介绍了,可以参考官方文档。

如果你要对数据库进行性能测试,预算有限的话,可以考虑这款优秀的开源工具。

脚本界面:
vugen

场景界面:
scenario

结果界面:
hammerora-result

庆祝51Testing软件测试网成立五周年

April 30th, 2009 ricky.zhu No comments

真快啊,不知不觉,都已经五年了。
首先祝福51testing生日快乐。

虽不是51最早的一批注册会员,但是从事测试这个行业也超过5年了,而且也算国内比较早专职作自动化测试的团队和成员了,关于这段光荣史,有空还要好好续一下。

这5年可以说是国内测试行业迅速发展的5年,依靠这5年的努力,51testing早已经是国内测试行业的一块金子招牌了。

frida dvdrip

祝贺老李和老周,也期待51接下去有更大的发展,成为真正的中国测试行业的黄埔军校。


不知道看我blog的朋友有没有不知道51testing的,如果不知道的话,网址在下面。

51Testing软件测试网 :http://www.51testing.com

Read more…

Categories: 软件测试 Tags:

Automate your Web Application with Oracle ATS

April 29th, 2009 ricky.zhu No comments

Oracle Application Test Suite (Oracle ATS)是基于Oracle收购的e-Test Suite技术而构建的企业自动化测试解决方案,也是Oracle Enterprise Manager的一部分,

随着更多的工具被集成到Oracle EM中来,这个Oralce的策略性产品也在变的越来越强大,最新的EM版本已经是10.2.0.5了,免费下载地址如下:下载地址

今天重点介绍一下Oracle EM中的ATS,以后Ricky会陆续关注EM中的其他组件。


Web application quality and performance issues can have major impact on your bottom line – impacting revenue, customer loyalty and satisfaction and your company’s reputation. However, even today, industry studies suggest that 75% of applications are still deployed without adequate testing. The majority of functional testing that is performed is still done manually and load testing prior to deployment to assess and tune application performance is not a common practice.

Join us for this live 1-hour presentation where we will introduce Oracle Application Testing Suite, a new offering from Oracle Enterprise Manager, and show how it can help you automate your functional and regression testing, automate your load and performance testing and manage your overall test process.

During this presentation you will see a live demo of the following Application Testing Suite solutions:

* Oracle Functional Testing for Web Applications
* Oracle Load Testing for Web Applications
* Oracle Test Manager for Web Applications

视频地址

jackal the divx
其他系列的关于EM的视频讲座,参考链接地址

Categories: 测试工具 Tags:

Three Key Tools for Test Automation

April 28th, 2009 ricky.zhu 3 comments

很久没有静下心来写写测试方面的总结了,打算忙完了这个重要的Release,就沉下心去,好好总结几篇,这两年在Oracle从事质量工作的一点体会,也不辜负长期以来一直关注和支持我的朋友。

前几天看到一篇非常不错的关于自动化测试架构的文章,分享一下。原文链接

文章讲的是自动化测试的三个关键:开发语言,平台和工具。这是自动化测试非常核心的三个关键点,但往往也不是那么容易把握或者考虑全面的。参考原文先:

Three Key Tools for Automated Testing: Language, Driver, Harness

When I started working on Watir, I was pushing a vision for automated testing. This vision still motivates my work with Watir. A couple of years ago, Brian Marick told me open-source developers should share their vision and let the community know why they built the tool. Here’s the vision.

There are three essential elements of an automated testing system: language, driver and harness. Your tests need to be written in a language and you need a language to extend your testing system. I’ve long believed in scripting languages, such as Perl, Python and Ruby. I find that testers are more productive with them and find them easier to understand and use. I have reasons why I prefer Ruby, but there are other good automated testing systems written using other scripting languages. In fact over the years, I have built testing frameworks in Perl, Python and VB, usually building on languages that were already in use at the client. My emphasis on full-featured programming languages was a contrast to the proprietary languages

that had been commonly used in commercial testing tool suites. I had no patience for them.

Read more…

Categories: 测试自动化 Tags:

Oracle RAC Team Hiring-Urgent

March 7th, 2009 ricky.zhu 4 comments
.!.

This is a bit Urgent. Oracle RAC Development team is Hiring. Prefer base is Shenzhen and Beijing


Special Requirements:

  • * must be new graduate this year with master degree in Computer or Science related field.
  • * must graduate at top 10 university.

Below please find the job description, this is the golden opportunity to learn the Oracle core technologies in the Sever Technologies division. If you think the work is a good fit with your interests. Please send your CV based on the contact information of the job description.
The following URLs can provide more information about RAC

http://www.oracle.com/technology/products/database/clustering/index.html

http://www.oracle.com/database/rac_home.html

Oracle RAC is the crown jewel in the company. We own the most fast growing core product with advanced technologies.

Detailed as below:

POSITION DESCRIPTION

  • Job title: Associate Member of Technical Staff, Server Technologies
  • Department: Real Application Cluster (RAC) Development.
  • Category: Oracle Clusterware , RAC Clustering and RDBMS testing
  • Contact: Winston.Huang@oracle.com or Rung-Huang.Tsai@oracle.com

Brief Description:

Responsible for RAC-DB stability, performance testing and Clusterware destructive testing on varies platforms; responsible for understanding RAC functionality, Oracle rdbms and asm new features and Oracle clusterware on varies releases and responsible for implementing, maintaining, and enhancing test infrastructure/tools and verifying testing results.

This is the golden opportunity to learn Oracle within Oracle, the challenging position provides training to lay the foundation of RAC and database stability, High Availability. Engineer will expose to latest Oracle technologies on varies platforms. Those experiences are extremely valuable toward the building solid foundations of RAC and High availability systems for future system architecture integration and consulting work.

Detailed Description:

  • · Logs and tracks product defects as encountered.
  • · Specific Projects include: RAC stability testing and Oracle Clusterware testing:
  • o Understand the vulnerabilities for each release.
  • o Ensure quality of post-release bundle deliverables by understanding new feature/enhancement and verifying various fixes.
  • o Enhance the test tools/infrastructure, aim to an automated testing framework with flexibility and simplicity.
  • o Understand RDBMS functions, especially in RAC environment, for detecting failure in functionality and usability.
  • · Various Workload understanding, placement, maintenance and enhancement.
  • In addition to tasks described above, the incumbent will also participate in additional tasks with other senior team members, e.g.:

    • · Product testing (beta and pre-release stress/destructive tests)
    • · Product training and user documentation review

    Technical Background:

    • · Good understanding of database concept, architecture and terminology.
    • · Proficiency in Perl and other scripting languages; and plsql
    • · Good grasp in programming language and operating system level knowledge.
    • · Knowledge in software engineering and system software testing is a plus.
    • · Knowledge in Oracle database or Plsql is preferred.

    Personal Profile / Skills:

    • · Quick and willing to learn, self-motivator, attention to details and team player
    • · Good verbal and written communication skills in English
    • · Ability to multitask and deliver under pressure
    • · Good academic records for entry-level position, new graduate welcome
    Categories: 测试人生 Tags: ,