การจัดการทางเลือกในการแลกซื้อเครื่องใหม่

การจัดการทางเลือกเป็นหัวใจสำคัญของแนวทางการทำงานแบบแยกส่วนของสหพันธ์การค้า โดยเฉพาะอย่างยิ่ง ตัวเลือก คือกลไกที่นักพัฒนาซอฟต์แวร์ ผู้ผสานรวม และตัวดำเนินการทดสอบสามารถทำงานร่วมกันได้ ที่ต้องทำซ้ำผลงานของกันและกัน พูดง่ายๆ คือการใช้การจัดการตัวเลือกของเราทำให้ ให้นักพัฒนาแอปทำเครื่องหมายสมาชิกคลาส Java ว่ากำหนดค่าได้ ซึ่งจะใช้ค่าของสมาชิกรายนั้น อาจจะถูกเสริมหรือลบล้างโดยผู้ผสานรวม และอาจถูกเสริมหรือลบล้างโดย เครื่องมือดำเนินการทดสอบ กลไกนี้ใช้งานได้กับ JavaScript ทุกประเภท รวมถึง Map หรือ Collection ของประเภทที่แท้จริง

หมายเหตุ: กลไกการจัดการตัวเลือกใช้ได้กับชั้นเรียนที่ใช้หนึ่งใน อินเทอร์เฟซที่รวมอยู่ในวงจรการทดสอบ และเฉพาะเมื่อคลาสนั้น ยืนยันโดยเครื่องจักรในวงจร

นักพัฒนาซอฟต์แวร์

ในการเริ่มต้น นักพัฒนาซอฟต์แวร์จะทำเครื่องหมายสมาชิกที่มี คำอธิบายประกอบ @Option รายการ โดยจะระบุค่า name และ description (อย่างน้อย) ระบุชื่ออาร์กิวเมนต์ที่เชื่อมโยงกับตัวเลือกนั้นและคำอธิบายที่จะแสดง คอนโซล TF เมื่อเรียกใช้คำสั่งด้วย --help หรือ --help-all

ตัวอย่างเช่น สมมุติว่าเราต้องการสร้างการทดสอบการใช้งานโทรศัพท์ซึ่งจะแสดง หมายเลขโทรศัพท์ และคาดว่าจะได้รับลำดับสัญญาณเสียง DTMF จากแต่ละหมายเลขหลังจากนั้น เชื่อมต่อ

public class PhoneCallFuncTest extends IRemoteTest {
    @Option(name = "timeout", description = "How long to wait for connection, in millis")
    private long mWaitTime = 30 * 1000;  // 30 seconds

    @Option(name = "call", description = "Key: Phone number to attempt.  " +
            "Value: DTMF to expect.  May be repeated.")
    private Map<String, String> mCalls = new HashMap<String, String>;

    public PhoneCallFuncTest() {
        mCalls.add("123-456-7890", "01134");  // default
    }

นี่คือทั้งหมดที่จำเป็นสำหรับนักพัฒนาแอปในการตั้งค่าการกำหนดค่า 2 จุดสำหรับการดำเนินการดังกล่าว การทดสอบ จากนั้น เขาจึงจะออกไปใช้ mWaitTime กับ mCalls ได้ตามปกติ โดยไม่ต้องใส่ใจมากนักว่าสามารถกำหนดค่าได้ เนื่องจาก จะมีการตั้งค่าช่อง @Option หลังจากสร้างอินสแตนซ์คลาส แต่อยู่ก่อน เรียกเมธอด run ซึ่งมีวิธีง่ายๆ ให้ผู้ติดตั้งใช้งานตั้งค่าเริ่มต้น หรือดำเนินการกรองบางอย่างในฟิลด์ Map และ Collection ซึ่งเป็น มิฉะนั้นจะใช้ "ต่อท้ายเท่านั้น"

ผู้รวมบริการ

Integrator จะใช้งานได้ในโลกของการกำหนดค่า ซึ่งเขียนในรูปแบบ XML รูปแบบการกำหนดค่า อนุญาตให้ผู้ผสานรวมตั้งค่า (หรือต่อท้าย) ค่าสำหรับช่อง @Option ได้ ตัวอย่างเช่น สมมติว่าผู้ผสานรวมต้องการกำหนดการทดสอบเวลาในการตอบสนองต่ำที่เรียกใช้หมายเลขเริ่มต้น ทำการทดสอบเป็นระยะเวลานานที่เรียกใช้หมายเลขต่างๆ สร้างการกำหนดค่าขึ้นมาคู่หนึ่ง ซึ่งอาจมีลักษณะดังนี้

<?xml version="1.0" encoding="utf-8"?>
<configuration description="low-latency default test; low-latency.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="timeout" value="5000" />
    </test>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration description="call a bunch of numbers; many-numbers.xml">
    <test class="com.example.PhoneCallFuncTest">
        <option name="call" key="111-111-1111" value="#*#*TEST1*#*#" />
        <option name="call" key="222-222-2222" value="#*#*TEST2*#*#" />
        <!-- ... -->
    </test>
</configuration>

ตัวดำเนินการทดสอบ

Test Runner ยังเข้าถึงจุดการกำหนดค่าเหล่านี้ผ่านคอนโซล Trade Federation ได้ด้วย สิ่งแรกที่สำคัญที่สุด โปรแกรมเหล่านี้จะเรียกใช้คำสั่ง (ซึ่งก็คือการกำหนดค่าและอาร์กิวเมนต์ทั้งหมด) ด้วยฟังก์ชัน วิธีการแบบ run command <name> (หรือเรียกสั้นๆ ว่า run <name>) นอกจากนี้ยังสามารถระบุรายการอาร์กิวเมนต์ที่เป็นส่วนหนึ่งของคําสั่ง ซึ่งอาจแทนที่หรือ ต่อท้ายช่องที่ระบุโดยออบเจ็กต์ Lifecycle ภายในการกำหนดค่าแต่ละรายการ

ในการเรียกใช้การทดสอบเวลาในการตอบสนองต่ำกับหมายเลขโทรศัพท์ many-numbers ตัวดำเนินการทดสอบ สามารถดำเนินการ:

tf> run low-latency.xml --call 111-111-1111 #*#*TEST1*#*# --call 222-222-2222 #*#*TEST2*#*#

หรือเพื่อให้ได้ผลลัพธ์ที่คล้ายกันจากทิศทางตรงกันข้าม ตัวดำเนินการทดสอบอาจลดเวลารอได้ สำหรับการทดสอบ many-numbers:

tf> run many-numbers.xml --timeout 5000

การเรียงลำดับตัวเลือก

คุณอาจสังเกตเห็นว่าการใช้งานที่สำคัญของตัวเลือก call คือ Map ดังนั้นเมื่อป้อน --call ซ้ำในบรรทัดคำสั่ง ค่าดังกล่าวก็จะได้รับการจัดเก็บไว้

ตัวเลือก timeout ซึ่งมีการติดตั้งใช้งานที่สำคัญของ long สามารถจัดเก็บได้เพียงค่าเดียวเท่านั้น ดังนั้นระบบจะจัดเก็บเฉพาะค่าสุดท้ายที่ระบุเท่านั้น --timeout 5 --timeout 10 จะให้ผลลัพธ์ timeout ที่มี 10

ในกรณีที่มี List หรือ Collection เป็นการติดตั้งใช้งานที่สำคัญ ค่าทั้งหมดจะได้รับการจัดเก็บตามลำดับที่ระบุในบรรทัดคำสั่ง

ตัวเลือกบูลีน

คุณสามารถตั้งค่าตัวเลือกของประเภทพื้นฐานแบบบูลีนเป็น true ได้โดยการส่งพารามิเตอร์ ชื่อตัวเลือก เช่น --[option-name] และสามารถตั้งค่าเป็น false ได้โดยใช้ ไวยากรณ์ --no-[option-name]

ดูเพิ่มเติม

ส่งตัวเลือกไปยังชุดโปรแกรมและโมดูล