51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 12211|回复: 20
打印 上一主题 下一主题

[翻译] Introduction to Software Testing

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-4-29 23:14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
链接请参见:
http://www.logigear.com/newslett ... oftware_testing.asp

Introduction to Software Testing
Rob Pirozzi, LogiGear Corporation
This article will provide a brief introduction and overview of software testing, discuss both manual and automated testing, and introduce the concept of blended testing. It is intended as a brief primer on the software testing process.

Software testing is both a discipline and a process. Though software testing is part of the software development process, it should not be considered part of software development. It is a separate discipline from software development. Software development is the process of coding functionality to meet defined end-user needs. Software testing is an iterative process of both validating functionality, and, even more important, attempting to break the software. The iterative process of software testing consists of:

1、Designing tests
2、Executing tests
3、Identifying problems
4、Getting problems fixed
The objective of software testing is to find problems and fix them to improve quality. Software testing typically represents 40% of a software development budget.

While Software testing tends to be considered a part of development, it is really its own discipline and should be tracked as its own project. Software testing, while working very closely with development, should be independent enough to be able to hold-up or slow product delivery if quality objectives are not met.

Types of Software Testing

Software testing consists of several subcategories, each of which is done for different purposes, and often using different techniques. Software testing categories include:

1、Functionality testing to verify the proper functionality of the software, including validation of system and business requirements, validation of formulas and calculations, as well as testing of user interface functionality.
2、Forced error testing, or attempting to break and fix the software during testing so that customers do not break it in production.
3、Compatibility testing to ensure that software is compatible with various hardware platforms, operating systems, other software packages, and even previous releases of the same software.
4、Performance testing to see how well software performs in terms of the speed of computations and responsiveness to the end-user.
5、Scalability testing to ensure that the software will function well as the number of users and size of databases increase.
6、Stress testing to see how the system performs under extreme conditions, such as a very large number of simultaneous users.
7、Usability testing to ensure that the software is easy and intuitive to use.
8、Application security testing to make sure that valuable and sensitive data cannot be accessed inappropriately or compromised under concerted attack.
In some cases, there may even have to be other types of testing such as regulatory-compliance testing, depending on the type of software and intended industry.

Methods of Software Testing

There are two basic methods of performing software testing:
1、Manual testing
2、Automated testing

Manual Software Testing

As the name would imply, manual software testing is the process of an individual or individuals manually testing software. This can take the form of navigating user interfaces, submitting information, or even trying to hack the software or underlying database. As one might presume, manual software testing is labor-intensive and slow. There are some things for which manual software testing is appropriate, including:

1、User interface or usability testing
2、Exploratory/ad hoc testing (where testers do not follow a ‘script’, but rather testers ‘explore’ the application and use their instincts to find bugs)
3、Testing areas of the application which experience a lot of change.
4、User acceptance testing (often, this can also be automated)
The time commitment involved with manual software testing is one of its most significant drawbacks. The time needed to fully test the system will typically range from weeks to months. Variability of results depending on who is performing the tests can also be a problem. For these reasons, many companies look to automation as a means of accelerating the software testing process while minimizing the variability of results.

Automated Software Testing

Automated software testing is the process of creating test scripts that can then be run automatically, repetitively, and through many iterations. Done properly, automated software testing can help to minimize the variability of results, speed up the testing process, increase test coverage (the number of different things tested), and ultimately provide greater confidence in the quality of the software being tested.

There are, however, some things for which automated software testing is not appropriate. These include:

1、End user usability testing is not typically a good candidate for automated testing.
2、Tests which will not be run more than a couple of times are typically not a good candidate for automated tasting, since the payoff of in test automation comes after many test executions.
3、Tests for areas of the application which experience a lot of change are also not a good candidate for automation since this can lead to substantial maintenance of test automation scripts. Such areas of the application may be more effectively tested manually.
It is important to note that test automation is software, and just like the software you are building for internal or external customers, it must be well-architected. A good test automation architecture, such as a keyword-driven testing framework, will reduce the overall cost of ownership of your test automation by minimizing maintenance expense and increasing the number of automated tests, allowing your organization to run more tests (and achieve higher quality) for the same investment of time and money.

Achieving the Right Blend of Software Testing

An effective software testing process is typically a mix of test types, executed through a combination of manual and automated testing. The mix and number of tests is determined by the quality requirements of the application (i.e. Is it mission critical? Is time-to-market the most important factor?). Each method (automated or manual) is used for what is appropriate.

Manual testing is best leveraged for those tests which require spontaneity and creativity, as well a good deal of subjectivity:

1、User interface or usability testing
2、Exploratory/ad hoc testing
While automated testing is best used for tests which are explicit and repetitive:

1、General QA and functionality tests (i.e. does each module do what the requirements say it should? How does the application respond to incorrect inputs?)
2、‘End to end’ scenario tests (simulating a ‘real world’ use of the software in a production environment)
3、Performance, load, and stress testing
In practice, 80 to 95% of tests should be able to be automated. It is typically not the tests which limit the amount of automation, but rather a limit in the number or ability of testing staff, or technical limitations in the test automation tool to interact with the application. The right combination of tests, technology, and people can lead to a very high level of test automation and all the inherent benefits.

Conclusion

As one can see, software testing is a very large undertaking. It is very important to have an effective process in place prior to embarking on any major software development effort. This is essential to the success of the overall effort, and delivering quality software to end-users.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-4-30 13:45:57 | 只看该作者

我读了此篇文章,把重点翻译了一下, 请各位纠正。

软件测试是一门科学,他是软件开发过程中是不可被忽略的重要阶段。软件测试的过程是重复并确认软件提供的应用功能的方式。
软件测试过程包括:

1,设计测试案例
2,运行测试case
3,找出bug并确认过程
4,督促程序员修改bug

软件测试为软件目标提供质量保证,会发现软件中将近40%的bug数量。
软件测试方式:功能测试; 纠错测试, 兼容性测试, 性能测试,压力测试, 易用性测试,安全测试等
软件测试方法有:手动测试和自动化测试

手动测试是最常用的测试手段,通过用户界面提交的数据信息,或是数据库提供的信息,进行推测。 一些适当的手动测试包括:
1,用户界面以及可用行测试
2,探索测试
3,测试修改过的应用程序(需要测试员的技术经验)。

自动化测试是通过将测试过程录制成程序脚本,达到快速而省时省力的测试目的。测试质量也得到提高, 但是存在一些特例情况,不适合作自动化测试。具体包括:
1,模拟最终用户的使用情况的测试。
2,长时间运行功能会出错的功能测试。
3,测试修改过的bug的情况不可以用。

总之, 软件测试是一们艺术, 有效保证了软件开发的质量。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-5-8 11:09:00 | 只看该作者

译文初稿,其中一些地方借鉴了yqli的摘要

Introduction to Software Testing
软件测试引论

Rob Pirozzi, LogiGear Corporation


This article will provide a brief introduction and overview of software testing, discuss both manual and automated testing, and introduce the concept of blended testing. It is intended as a brief primer on the software testing process.
本文简介并概览软件测试,然后讨论手工测试与自动化测试,并引入混和测试的概念。本文意在成为讲解软件测试过程的简明的入门读本。

Software testing is both a discipline and a process. Though software testing is part of the software development process, it should not be considered part of software development. It is a separate discipline from software development. Software development is the process of coding functionality to meet defined end-user needs. Software testing is an iterative process of both validating functionality, and, even more important, attempting to break the software. The iterative process of software testing consists of:
软件测试既是一门学问也是一个过程。尽管软件测试是软件开发过程的一部分,但不应视其为软件开发的一部分。软件测试是与软件开发不同的学问。软件开发是编程实现已定的最终用户的需求功能的过程。软件测试则是一个反复的过程,它要对软件的功能进行验证,同时更重要是试图对软件进行破坏性操作。这种不断重复的软件测试过程包括:


1、Designing tests
2、Executing tests
3、Identifying problems
4、Getting problems fixed

1.设计测试
2.执行测试
3.找到软件问题
4.修复软件问题


The objective of software testing is to find problems and fix them to improve quality. Software testing typically represents 40% of a software development budget.
对软件进行测试的目的是找到软件时存在的问题并且修复这些问题以此提高软件的质量。软件测试一般要占用软件开发经费预算的40%。

While Software testing tends to be considered a part of development, it is really its own discipline and should be tracked as its own project. Software testing, while working very closely with development, should be independent enough to be able to hold-up or slow product delivery if quality objectives are not met.
尽管人们倾向于把软件测试视为开发的一部分,但测试有它自己的一套方法,而且应该把它当作独立的项目去看待。虽然与开发联系得非常紧密,但测试应该有一定程度的独立性,以便在软件质量不能得以满足的情况下能够阻止或延缓产品的发布。

Types of Software Testing
软件测试的类型


Software testing consists of several subcategories, each of which is done for different purposes, and often using different techniques. Software testing categories include:
软件测试包括几个小类,每一个小类的测试的目的不同,使用的方法也往往不同。软件测试的类型有:

1、Functionality testing to verify the proper functionality of the software, including validation of system and business requirements, validation of formulas and calculations, as well as testing of user interface functionality.
1.功能性测试,目的是验证软件可正确地实现功能。包括系统与商业需求的验证,公式与运算的验证,还有对用户界面功能性的测试。

2、Forced error testing, or attempting to break and fix the software during testing so that customers do not break it in production.
2.纠错测试,或试图在测试时破坏并修复软件,目的是使最终产品不会受到用户的破坏。

3、Compatibility testing to ensure that software is compatible with various hardware platforms, operating systems, other software packages, and even previous releases of the same software.
3.兼容性测试,旨在确保软件可兼容不同的硬件平台,操作系统,其他软件包,甚或与同一软件以前版本兼容。

4、Performance testing to see how well software performs in terms of the speed of computations and responsiveness to the end-user.
4.性能测试,目的是检查软件在计算速度方面和对用户操作的响应方面的表现。

5、Scalability testing to ensure that the software will function well as the number of users and size of databases increase.
5.可增容性测试,目的是确保软件在用户数量与数据库容量增大的情况下仍能运行良好。

6、Stress testing to see how the system performs under extreme conditions, such as a very large number of simultaneous users.
6.压力测试,目的是观察软件系统如何运行于极端的条件下,如数量极大的并发用户。

7、Usability testing to ensure that the software is easy and intuitive to use.
7.易用性测试,目的是确保软件用起来很容易很方便。

8、Application security testing to make sure that valuable and sensitive data cannot be accessed inappropriately or compromised under concerted attack.
8.应用安全性测试,目的是保证有价值的或敏感的数据不会被错误地访问或是受到有预谋的攻击的破坏。

In some cases, there may even have to be other types of testing such as regulatory-compliance testing, depending on the type of software and intended industry.
有些时候,软件测试可能还要包括其他类型,比如依从调整设计,决定于软件的各类与所应用的行业。

Methods of Software Testing
软件测试方法


There are two basic methods of performing software testing:
1、Manual testing
2、Automated testing
软件测试有两种基本方法:
1.手工测试
2.自动化测试



Manual Software Testing
手工测试


As the name would imply, manual software testing is the process of an individual or individuals manually testing software. This can take the form of navigating user interfaces, submitting information, or even trying to hack the software or underlying database. As one might presume, manual software testing is labor-intensive and slow. There are some things for which manual software testing is appropriate, including:
顾名思义,手工测试就是一个人或几个人手动地执行测试的过程。手工测试可以采取的形式有:游览用户界面,提交信息,或试图对软件或其数据库进行破坏。正如所想,手工测试需要耗费大量人力,测试速度慢。手工测试适合于下面几个方面:

1、User interface or usability testing
2、Exploratory/ad hoc testing (where testers do not follow a ‘script’, but rather testers ‘explore’ the application and use their instincts to find bugs)
3、Testing areas of the application which experience a lot of change.
4、User acceptance testing (often, this can also be automated)
1.用户界面测试或可用性测试
2.探索性测试,或称 ad hoc 测试(测试人员不依照用例进行测试,而是对应用程序进行“探索”,利用直觉来发现 bug。)
3.对应用程序中经常发生变化的部分进行测试
4.用户验收测试(此方法经常也可进行自动化测试)


The time commitment involved with manual software testing is one of its most significant drawbacks. The time needed to fully test the system will typically range from weeks to months. Variability of results depending on who is performing the tests can also be a problem. For these reasons, many companies look to automation as a means of accelerating the software testing process while minimizing the variability of results.
手工测试最大的缺点就是要消耗大量的时间。完全测试一个软件系统所需的时间一般要几周到几个月。由于测试者不同而造成测试结果的不一致也是一个问题。因此,很多公司都趋向于自动化测试,以便加快软件测试进度,同时降低测试结果的不一致性。

Automated Software Testing
自动化测试


Automated software testing is the process of creating test scripts that can then be run automatically, repetitively, and through many iterations. Done properly, automated software testing can help to minimize the variability of results, speed up the testing process, increase test coverage (the number of different things tested), and ultimately provide greater confidence in the quality of the software being tested.
软件的自动化测试就是撰写测试脚本的过程,这些脚本可以由系统自动地,重复地运行,可经历许多次的重复。如果工作正常,软件自动化测试有助于降低测试结果的不一致性,加快软件测试的进度,提高测试的覆盖度(所涉及的不同测试对象的数量),并最终使客户对正在测试的软件的质量抱有更大的信心。

There are, however, some things for which automated software testing is not appropriate. These include:
尽管如此,仍有一些方面不适合使用自动化测试,包括:

1、End user usability testing is not typically a good candidate for automated testing.
2、Tests which will not be run more than a couple of times are typically not a good candidate for automated tasting, since the payoff of in test automation comes after many test executions.
3、Tests for areas of the application which experience a lot of change are also not a good candidate for automation since this can lead to substantial maintenance of test automation scripts. Such areas of the application may be more effectively tested manually.
1.最终用户可用性测试就是典型的不适于自动化测试的方面。
2.不适宜多次执行的测试通常也不适用于自动化测试,因为这些的测试执行很多次后,自动化测试的可观的费用就随之而来了。



It is important to note that test automation is software, and just like the software you are building for internal or external customers, it must be well-architected. A good test automation architecture, such as a keyword-driven testing framework, will reduce the overall cost of ownership of your test automation by minimizing maintenance expense and increasing the number of automated tests, allowing your organization to run more tests (and achieve higher quality) for the same investment of time and money.
值得注意的一点是测试自动化也是一种软件,就像你正在为内部或外部客户所编写的软件一样,你必须很好的搭建这个软件。比如一个关键字驱动的测试框架这样一个好的测试自动化构架可以减少维护费用,增加自动化测试的数量,允许公司用同样的时间和金钱的投入运行更多的测试用例(以达到更高的质量),这样就降低了测试自动化的总体费用。



(未完待续)
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-5-8 11:11:18 | 只看该作者

(接上文)

Achieving the Right Blend of Software Testing
恰当地组合两种类型的测试


An effective software testing process is typically a mix of test types, executed through a combination of manual and automated testing. The mix and number of tests is determined by the quality requirements of the application (i.e. Is it mission critical? Is time-to-market the most important factor?). Each method (automated or manual) is used for what is appropriate.
好的软件测试过程通常混合了上面两种测试方式,都是将手工测试与自动化测试组合起来执行。不同测试类型的混合程度取决于应用软件的质量要求(如,该软件是否以任务为中心?推向市场的时间是否是最重要的因素?)。每一种测试方法(自动化或手工)的使用都是因地制宜的。

Manual testing is best leveraged for those tests which require spontaneity and creativity, as well a good deal of subjectivity:
对于需要自发性与创造性以及大量主观性的测试,手工测试是最好的选择,比如:

1、User interface or usability testing
2、Exploratory/ad hoc testing
1.用户界面测试,或可用性测试
2.探索性测试,或 ad hoc 测试


While automated testing is best used for tests which are explicit and repetitive:
而对于那些执行步骤清晰,又可重复执行的测试,自动测试是最适用的方法,比如:

1、General QA and functionality tests (i.e. does each module do what the requirements say it should? How does the application respond to incorrect inputs?)
2、‘End to end’ scenario tests (simulating a ‘real world’ use of the software in a production environment)
3、Performance, load, and stress testing

1.一般的QA测试与功能性测试(如,软件中的每一个模块都按要求执行功能了吗?应用软件如何响应不正确的输入?)
2.“端对端”的场景测试(在产品的开发环境中模拟软件在“真实世界”的使用)
3.性能测试,负载测试,压力测试


In practice, 80 to 95% of tests should be able to be automated. It is typically not the tests which limit the amount of automation, but rather a limit in the number or ability of testing staff, or technical limitations in the test automation tool to interact with the application. The right combination of tests, technology, and people can lead to a very high level of test automation and all the inherent benefits.
实践经验告诉我们,80% 到 95%的测试都能够以自动化的方式执行。一般来说限制自动化数量的因素不是测试本身,而是测试人员的数量或能力有限,或是自动化测试工作与应用软件交互中的技术方面的不足。对测试,技术与人员进行正确地组合,可以使自动化测试达到一个很高的水平,也自然会带来很多好处。

Conclusion
结论


As one can see, software testing is a very large undertaking. It is very important to have an effective process in place prior to embarking on any major software development effort. This is essential to the success of the overall effort, and delivering quality software to end-users.
正如我们所知道的,软件测试是一门很宏大的学问。在进行任何主要的软件开发工作之前,拥有一个好的测试过程是很重要的。这是所有努力得以成功的关键,也是高品质软件得以交付最终用户的关键。

-------------------------------------------------------------------------------------------------------------------------------------------------
刚发现有个地方(橙色的)没有翻译,现在补上。sdlkfj1

[ 本帖最后由 brilliantking 于 2006-5-13 13:35 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-5-8 15:16:05 | 只看该作者
嗯。不错不错,ths
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-5-8 16:05:34 | 只看该作者
谢谢carol2000 ,请多指正~~
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2006-5-8 16:10:44 | 只看该作者
对yqli和brilliantking加分鼓励了,呵呵。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-5-9 09:57:36 | 只看该作者
翻译的真不错  感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-5-9 17:46:22 | 只看该作者
支持一下
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-5-13 09:33:49 | 只看该作者
翻译得很好啊!受教了!向yqli和brilliantking学习!:〉
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2006-5-13 13:10:31 | 只看该作者
翻译的镇棒!看了之后收获很大。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2006-5-18 16:27:16 | 只看该作者

英语好厉害呀

太漂亮了。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2006-5-18 16:30:15 | 只看该作者

受益非浅

不得不赞美
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2006-5-19 21:15:10 | 只看该作者
很好。还没看完。

不过, 总觉得discipline翻成“学问”有点别扭, 不知“规范”如何?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2006-6-16 16:10:14 | 只看该作者
我要抓紧学习英文了!太受刺激了!
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2006-8-16 00:10:52 | 只看该作者
我英语能和你一样棒就好了。
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2006-8-16 09:04:26 | 只看该作者
好多高手阿
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2006-8-25 08:32:45 | 只看该作者
楼主的英文这么好,应该和我们共享共享

学英语从何出手呢? 一直努力想把英文学好,可? 难呀````
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2006-8-27 00:20:05 | 只看该作者
基本上可以,但有个别句子没翻,个别句子的翻译值得再商讨一下
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2006-9-5 15:25:34 | 只看该作者
谢谢yqli和brilliantking~
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-7 12:08 , Processed in 0.095959 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表