Turn: "What is Agile Software Testing"

 

This article has been starting to InfoQ Chinese station , Copyright, originally written in "XXX", For reprint, please be sure accompanying this statement, thank you.

InfoQ Chinese station is an independent online community in a high-end technical personnel to provide timely information and depth of Java, .NET, Ruby, SOA, agile, architecture and other fields, such as high-end technology conference QCon  , technical exchange activities under line QClub free download mini book as "the architect" and so on.

 

 

In the discussion with a lot of employees to test agility, and is most frequently asked is about two questions: "What is Agile software testing in the end?", "Agile software development engineers also need to test it?." The former is a problem for agile testing question itself defined, the second question is agile development test engineer excluded worry. In fact, in the process of exploring these two answers to your questions, we can work with a clearer understanding of the definition of agile software development testing, test values, as well as agile development to develop and test engineers. Given the significance of these two questions, the first article in this column in agility test, try from their own practice, as clearly as possible to answer these two questions.

Indeed, with respect to the popular north and south of agile development situation, the discussion of agile testing is much more low-key. Agile Alliance defines agile four value statements, as well as 12 support the principle of accompanying, this 12 principle does not mention a single test. Does this mean that the test is not important in agile development it? In fact, if you carefully read the agility of 12 principles, as well as a variety of agile practices, you will find that testing plays a very important role in agile development. Whether it is the principle of "frequent delivery" or "test-driven development" measure of "working software", or agile development practice, "Behavior Driven Development", are inseparable from the support of the test. In my view, the reason agile development is not separate out the test described, precisely because in agile development, testing is no longer a separate, independent and development process, but turned into a driver development, production measure the main instrumentalities, became a part of all engineer must always consider and practice in the work of agile development. In short, more agile software testing is a concept, rather than a process.

Since it is so, why do we have in this column specifically to discuss "agile software testing"? I contacted many software developers and test engineers, they organized some of which are trying to transition to agile development, agile development and some have been practiced for some practice, but because of long-standing work habits, the vast majority of them most are not conscious recognition of the critical role of testing in agile development, but intentionally or unintentionally, will test and development is still seen as completely separate the "next phase", leading to problems encountered in the course of practice in agile development : either ignore the code quality, resulting in frequent iterations, each iteration of the problem after another; or the method to use the original arrangements system test of the system, causing the test team exhausted, but I still can not keep up with the development of the required schedule. In this case, specifically to discuss agile software development in the test, which is agile software testing topics, these engineers should have some help.

So, in the end what is Agile software testing? Agile testing is difficult to give a precise, well-defined, in my view, to accept the agile core values ​​(communication, simplicity, feedback, courage, respect), tests carried out in the agile software development process can be called agile software testing. Therefore, software testing is not a quick and agile software development division of the same level, but part of agile software development, testing different from traditional, agile software testing is not a separate process, on the contrary, it is with the entire Agile development other activities are intertwined, everywhere can see its shadow. Because Agile software testing is not in favor of a single process definition, I regard the method to be adopted from agile software testing and comparison of traditional testing ideas, agile software testing, test engineers and other work in agile software testing process to illustrate the . In this article, we mainly from the macro point of view to describe the agile software testing, and follow-up article in this column, we will further method used in agile software testing, engineers, job descriptions, etc. in the Agile Software Testing description of.

Agile Software testing is based on the core values ​​of agility, in order to more vividly describe the difference with traditional software testing, I set out from their own experience, I tried to give thought to contain contains the key elements of agile testing "Agile testing checklist ":

project

checking point

Note

team

  • Are test engineers and development engineers to establish close links?
  • Test engineers and whether to establish close contact with customers?
  • Whether to participate in the daily stand-up meeting? Whether the development engineers can be expanded at any time, face to face, peer discussions?
  • Whether to maintain good communication and customer? Whether the acceptance tests with customer care and well-defined?

Feedback

  • The project is the establishment of a proper acceptance tests?
  • Whether a project everyone can keep abreast of current work and deliverables of the distance?
  • Whether to establish a metric for the quality of development?
  • Whether the developer to quickly get feedback on the submitted code?
  • Use Dashboard, burndown charts and other ways to show current work and deliverables distance between products
  • Establishing unit test coverage metrics, etc.
  • Or frequent use continuous integration allows developers to build quality engineers to quickly get feedback commit code

Quality Culture

  • Whether to establish the principle of development and test engineers to share quality objectives?
  • Does the team focus on the development of quality, and to ensure the development of high / code quality in their work as much as possible?
  • Shared responsibility for quality means quality objectives shared by all engineers
  • Not only concerned about the final output, continuous refactoring the code to ensure code quality

Development and testing

  • Whether adequate development and testing?
  • Whether to set up a continuous integration environment, and is the result of continuous integration as a condition to continue to commit code and released?
  • Whether the establishment of a sufficient number of automated testing, automated testing and attention in the design requirements?
  • Development test coverage should establish a certain test standards, e.g., the level in the unit test, to establish 60% or 80% coverage requirement
  • By using TDD, BDD technology to ensure testability and product code
  • The establishment of a sufficient number of automated testing, testing to meet the requirements to ensure rapid iteration

Checklist referred to the "team", "feedback", "quality culture" and "development test" four aspects, in my opinion, this is reflected in four aspects biggest difference between agile and traditional software testing software testing . Traditional software testing is concerned that as much as possible through comprehensive "coverage" to find as many problems as the testing and development are two separate processes, the outcome of the test is to produce the development phase of verification . The agile software testing is to establish a different culture of quality: The purpose of the test is to ensure rapid product delivery, that is, increase productivity itself. Based on the " verify " the starting point will demand independent testing and development, as well as "objective" and "comprehensive" measure of product quality; and based on " productivity ," the starting point is required to establish agile team requires testing and development as much as possible close, it requires the establishment of software with a high degree of testability, and based on these highly automated test.

In all of the items listed in the checklist, "quality culture" is the foundation, "team" is the condition of Agile Software testing is implemented, "Feedback" and "development test" is a specific method of agile software testing. Of course, you can come from the agile core values stage of these projects: "team" is concerned that communication with respect ; "feedback" directly corresponds to the feedback ; "quality culture" based on courage (to assume responsibility for the quality of courage) with respect ; and "development test" is fed back to the simple concrete manifestation.

Another problem in this article was first put forward is: "Agile software development engineers also need to test it?", On this issue, the industry have different views. It was deemed necessary, because there are always some that engineers need to test the skills of the work done; of course, some people think not, because agile development focus on the development of testing and test automation testing, development engineers can get their work related to the test . In practice, the company (such as Google) those large-scale Agile development practices, the organization tends to set a small number of test engineers, test allocated fewer resources in the project, and even on some items, do not use the test engineer.

On my personal experience, for most projects, especially for the clear customer development projects, the need for dedicated test engineers in agile development team because:

  1. Testing and development have different ways of thinking: pay more attention to comprehensive testing and validation checking a system, and development engineers often difficult to establish such way of thinking in a wide range. Therefore, to verify whether it is from the level of system products, from the perspective of the application system Huoshi discovery point (access point) is worth testing and validation, full-time test engineers are more effective.
  2. Full-time test engineers can focus more on the basis of the test, the test needs to build infrastructure: Because the test engineers have a better understanding of the tests, they are usually able to consider the needs of more testing and development of suitable testing infrastructure projects (automation testing framework), and development engineers can use these frameworks to establish or code for function testing.

But have to say is that agile development to develop and test engineers have put forward more requirements to be, especially for test engineers, only the traditional "accurately simulate user actions" of test engineers, because they can not bring the product to enhance productivity in the agile development team, it is difficult to make a difference. In future articles in this column, we will discuss further test engineer jobs and tasks in the Agile software development.

This article has been starting to InfoQ Chinese station , Copyright, originally written in "XXX", For reprint, please be sure accompanying this statement, thank you.

InfoQ Chinese station is an independent online community in a high-end technical personnel to provide timely information and depth of Java, .NET, Ruby, SOA, agile, architecture and other fields, such as high-end technology conference QCon  , technical exchange activities under line QClub free download mini book as "the architect" and so on.

 

 

In the discussion with a lot of employees to test agility, and is most frequently asked is about two questions: "What is Agile software testing in the end?", "Agile software development engineers also need to test it?." The former is a problem for agile testing question itself defined, the second question is agile development test engineer excluded worry. In fact, in the process of exploring these two answers to your questions, we can work with a clearer understanding of the definition of agile software development testing, test values, as well as agile development to develop and test engineers. Given the significance of these two questions, the first article in this column in agility test, try from their own practice, as clearly as possible to answer these two questions.

Indeed, with respect to the popular north and south of agile development situation, the discussion of agile testing is much more low-key. Agile Alliance defines agile four value statements, as well as 12 support the principle of accompanying, this 12 principle does not mention a single test. Does this mean that the test is not important in agile development it? In fact, if you carefully read the agility of 12 principles, as well as a variety of agile practices, you will find that testing plays a very important role in agile development. Whether it is the principle of "frequent delivery" or "test-driven development" measure of "working software", or agile development practice, "Behavior Driven Development", are inseparable from the support of the test. In my view, the reason agile development is not separate out the test described, precisely because in agile development, testing is no longer a separate, independent and development process, but turned into a driver development, production measure the main instrumentalities, became a part of all engineer must always consider and practice in the work of agile development. In short, more agile software testing is a concept, rather than a process.

Since it is so, why do we have in this column specifically to discuss "agile software testing"? I contacted many software developers and test engineers, they organized some of which are trying to transition to agile development, agile development and some have been practiced for some practice, but because of long-standing work habits, the vast majority of them most are not conscious recognition of the critical role of testing in agile development, but intentionally or unintentionally, will test and development is still seen as completely separate the "next phase", leading to problems encountered in the course of practice in agile development : either ignore the code quality, resulting in frequent iterations, each iteration of the problem after another; or the method to use the original arrangements system test of the system, causing the test team exhausted, but I still can not keep up with the development of the required schedule. In this case, specifically to discuss agile software development in the test, which is agile software testing topics, these engineers should have some help.

So, in the end what is Agile software testing? Agile testing is difficult to give a precise, well-defined, in my view, to accept the agile core values ​​(communication, simplicity, feedback, courage, respect), tests carried out in the agile software development process can be called agile software testing. Therefore, software testing is not a quick and agile software development division of the same level, but part of agile software development, testing different from traditional, agile software testing is not a separate process, on the contrary, it is with the entire Agile development other activities are intertwined, everywhere can see its shadow. Because Agile software testing is not in favor of a single process definition, I regard the method to be adopted from agile software testing and comparison of traditional testing ideas, agile software testing, test engineers and other work in agile software testing process to illustrate the . In this article, we mainly from the macro point of view to describe the agile software testing, and follow-up article in this column, we will further method used in agile software testing, engineers, job descriptions, etc. in the Agile Software Testing description of.

Agile Software testing is based on the core values ​​of agility, in order to more vividly describe the difference with traditional software testing, I set out from their own experience, I tried to give thought to contain contains the key elements of agile testing "Agile testing checklist ":

project

checking point

Note

team

  • Are test engineers and development engineers to establish close links?
  • Test engineers and whether to establish close contact with customers?
  • Whether to participate in the daily stand-up meeting? Whether the development engineers can be expanded at any time, face to face, peer discussions?
  • Whether to maintain good communication and customer? Whether the acceptance tests with customer care and well-defined?

Feedback

  • The project is the establishment of a proper acceptance tests?
  • Whether a project everyone can keep abreast of current work and deliverables of the distance?
  • Whether to establish a metric for the quality of development?
  • Whether the developer to quickly get feedback on the submitted code?
  • Use Dashboard, burndown charts and other ways to show current work and deliverables distance between products
  • Establishing unit test coverage metrics, etc.
  • Or frequent use continuous integration allows developers to build quality engineers to quickly get feedback commit code

Quality Culture

  • Whether to establish the principle of development and test engineers to share quality objectives?
  • Does the team focus on the development of quality, and to ensure the development of high / code quality in their work as much as possible?
  • Shared responsibility for quality means quality objectives shared by all engineers
  • Not only concerned about the final output, continuous refactoring the code to ensure code quality

Development and testing

  • Whether adequate development and testing?
  • 是否设立了持续集成环境,并以持续集成的结果作为能够继续提交代码和发布的条件?
  • 是否建立了足够多的自动化测试,以及在设计时关注自动化测试的要求?
  • 开发测试应该建立一定的测试覆盖率标准,例如,在单元测试这个级别上,建立60%或80%的覆盖率要求
  • 通过使用TDD、BDD等技术,保证产品和代码的可测试性
  • 建立足够多的自动化测试,保证测试能够满足快速迭代的要求

检查表提到了“团队”、“反馈”、“质量文化”和“开发测试”四个方面的内容,在本人看来,这四个方面体现的就是敏捷软件测试与传统软件测试的最大的不同。传统软件测试关注的是通过尽可能完备的“覆盖”去发现尽可能多的问题,把测试和开发当成是两个独立的过程,测试是对开发阶段产生成果的验证。而敏捷软件测试则建立了一种不同的质量文化:测试的目的是为了保证产品快速发布,也就是对生产率本身的提高。基于“验证”的出发点必然会要求测试与开发的独立,以及尽可能“客观”和“完备”的度量产品质量;而基于“生产率”的出发点则要求建立敏捷的团队,要求测试与开发尽可能紧密,要求建立具有高度可测试性的软件,以及基于这些的高度自动化测试。

在检查表列出的所有项目中,“质量文化”是基础,“团队”是敏捷软件测试得以实施的条件,“反馈”和“开发测试”则是敏捷软件测试的具体方法。当然,你可以可以从敏捷的核心价值观来阶段这些项目:“团队”关注的是沟通尊重;“反馈”直接对应于反馈;“质量文化”基于勇气(承担质量责任的勇气)与尊重;而“开发测试”则是反馈简单的具体体现。

另一个在本文最初提出来的问题是:“敏捷软件开发还需要测试工程师吗?”,对这个问题,业界有不同的观点。有人认为需要,因为总有一些是需要测试工程师的技能完成的工作;当然,也有人认为不需要,因为敏捷开发中的测试注重开发测试与自动化测试,开发工程师就可以自己搞定与测试相关的工作。在实践中,那些大规模实践敏捷开发的公司(例如Google),倾向于在组织中设置数量较少的测试工程师,在项目中分配较少的测试资源,甚至对某些项目,完全不使用测试工程师。

就我的个人实践经验,对大部分的项目,尤其是为明确的客户开发的项目,需要在敏捷开发团队中设置专职的测试工程师,因为:

  1. 测试与开发具有不同的思维方式:测试更注重全面的验证和检查一个系统,而开发工程师往往很难在大的范围内建立这样的思维方式。因此,无论是从系统的层面验证产品,或是从应用系统的角度发现值得测试和验证的点(access point),专职的测试工程师都更有效。
  2. 专职的测试工程师能够更关注于测试基础,建立测试需要的基础架构:由于测试工程师具有更好的对测试的理解,通常他们能够更多的考虑测试的需求而开发适合项目的测试基础架构(自动化测试框架),而开发工程师可以使用这些框架来建立面向功能或代码的测试。

但是,不得不说的是,敏捷开发对开发和测试工程师都提出了更要的要求,尤其是对测试工程师而言,传统的只能“精确模拟用户操作”的测试工程师,因为不能为产品带来生产率的提升,在敏捷开发的团队中,很难有所作为。在本专栏的后续文章中,我们会进一步讨论测试工程师在敏捷软件开发中的工作和任务。

Guess you like

Origin www.cnblogs.com/uniquesnail/p/11360647.html