2 Methodology
A study of the key words of the Gherkin language on which Cucumber is based was the starting point of this development. To facilitate the support for internationalization, Gherkin uses a YAML-encoded database to record sets of equivalent terms in each of the languages supported. Code Example 5 presents the English definitions from i18n.yml, the internationalization file used by Gherkin, version 2.6.2
Except for examples and scenario_outline, the key terms of Gherkin have a single English keyword equivalent. These key terms be divided into the following 2 groups:
1. Context labels: These units separate and introduce different sections of the Cucumber description.
• Feature introduces the business rationale behind the development of a particular component of software.
• Background introduces the general precondition assumed in all scenarios of the feature
• Scenario introduces a context for that illustrates one aspect of the behaviour of the software component in question.
• Scenario Outline introduces a general purpose scenario that can accepts parameter values in a manner similar that of a form letter developed under the mail merge function of a word processor.
• Examples introduces a table of values to be used as parameters within a scenario outline.
2. Conditions of behaviour: The expected outcome is defined within the context of the related conditions and constraints.
• Given Pre-existing conditions that establish the context for a test
• When The test-specific conditions
• Then The expected outcome
• And A conjunction of multiple terms of a condition or outcome
• But A conjunction of multiple constraints of a condition or outcome
In order to gather a set of Thai keywords appropriate for describing the behaviours of software solutions for a wide range of problem domains, scenarios were written in English to describe specific features of software from 5 problem domains, namely personal time management, multi-player games, calculator functions, web development and business marketing.
Cucumber has the ability to embed test parameter values into natural language descriptions. Code Examples 6 and 7 respectively illustrate the use of a table of values and the placement of values into the context of the story text itself. These two examples are often used in tutorials about Cucumber and have become part of the standard test for new localized versions of Gherkin.
Code Example 8 represents an attempt to capture the business logic of a marketing department. The parsing of this kind of scenario is greatly enhanced by the consistency in the expressions used.
The development of specifications for game programming represents one of the most challenging problem domain for software design and analysis. Each user has specific individual preferences for both the rules of play and the expected behaviour of the actors in the game. Code Example 9 illustrates an attempt to describe the behaviour of a cautious game player. The most successful games result from careful marketing and program analysis of a range of details descriptions of end user preferences in order to develop a cost-effective list of game and behavioural scenarios that would attract the most interest and sales.
The webpage example in Code Example 10 illustrates the use of variables to capture the behaviour of a system that has several operational states. In this example, tables have been used not only to identify the range of roles that exist but also to establish the state table of system responses. The expected response to the request of a user of a particular role for web pages of a particular type are recorded in this state table. Such state tables are a simple yet effective means for describing complex behaviours.
Each of these scenarios were translated into Thai as a free translation by the authors.However, two major constraints were imposed on these translations, namely the translation must read naturally and the Thai Gherkin keyword must occur at the beginning of each line. The resulting translations were reviewed and revised by people familiar with the linguistics of Thai-English translations. In addition, the translation was shown to non-programmers to verify the readability to the translation.