tài liệu cao học

76 420 0
tài liệu cao học

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

The Testing of Object-Oriented Trong phần này nhằm mục đích phác họa việc kiểm thử các chương trình hướng đối tượng. Hiện nay có rất ít nghiên cứu đang được tiến hành, bao phủ vấn đề này.Tiến trình kiểm thử hướng đối tượng được so sánh và tương phản với cách tiếp cận của kiểm thử đơn vị kiểm thử tích hợp. Sự thay đổi rõ rệt từ các chương trình máy tính, tới việc kiểm thử giao diện giữa các chương trình theo các phần tử dữ liệu của một lớp đạt được bằng cách áp dụng một phương pháp tiếp cận dựa trên trạng thái. Kỹ thuật mới này được mô tả, và ví dụ minh họa. Giới thiệu The vast majority of testing research to date has been concerned with non object-oriented Phần lớn các kiểm thử nghiên cứu cho đến nay không quan tâm đến ngôn ngữ hướng đối tượng. Some research has addressed the problem of the testing of Abstract Data Types Một số nghiên cứu đã giải quyết được vấn đề của việc thử nghiệm Tóm tắt Các loại dữ liệu (ADTs), but the majority of this research is dependent upon the availability of formal (ADTs), nhưng phần lớn các nghiên cứu này là phụ thuộc vào sự sẵn có của chính thức specifications. thông số kỹ thuật. This report will address this lack of research and review any currently available Báo cáo này sẽ giải quyết sự thiếu nghiên cứu và xem xét bất kỳ hiện đang có sẵn techniques. kỹ thuật. A technique (to be) known as state-based testing will be described which addresses specific Một kỹ thuật (sẽ được) được gọi là nhà nước dựa trên thử nghiệm sẽ được mô tả có địa chỉ cụ thể problems associated with the testing of object-oriented programs. các vấn đề liên quan đến việc thử nghiệm các chương trình định hướng đối tượng. Also guidelines for the Cũng hướng dẫn cho adaptation of traditional functional and structural testing techniques will be provided. thích ứng của kỹ thuật và cấu trúc thử nghiệm chức năng truyền thống sẽ được cung cấp. The detail provided within this report is given in terms of class-based object-oriented Các chi tiết được cung cấp trong báo cáo này được đưa ra trong điều khoản của lớp dựa trên hướng đối tượng languages. ngôn ngữ. However, the techniques described are still applicable to non-class- based object- Tuy nhiên, các kỹ thuật mô tả vẫn còn áp dụng cho các lớp học không dựa trên đối tượng oriented languages (usually prototype-based languages). định hướng ngôn ngữ (thường là nguyên mẫu dựa trên ngôn ngữ). The remainder of this document is as follows: Phần còn lại của tài liệu này là như sau: • • The first section describes in detail the theory and the practice of the testing of object- Phần đầu tiên mô tả chi tiết lý thuyết và thực hành của các thử nghiệm của đối tượng oriented programs using information about the state of the object. định hướng các chương trình sử dụng thông tin về nhà nước của đối tượng. • • The next section provides a survey of the current literature available that is concerned Phần tiếp theo cung cấp một cuộc khảo sát của văn học hiện nay có sẵn mà là có liên quan with the testing of object-oriented programs. với việc thử nghiệm các chương trình định hướng đối tượng. This is compared and contrasted with the Đây là so sánh và tương phản với previous section. phần trước. • • The next section provides a brief discussion of the applicability of more traditional Phần tiếp theo cung cấp một cuộc thảo luận ngắn gọn về tính ứng dụng của truyền thống testing techniques to the testing of object-oriented programs. thử nghiệm kỹ thuật cho việc thử nghiệm các chương trình định hướng đối tượng. • • The penultimate section briefly outlines a suite of tools that have been written to aid Phần áp chót một thời gian ngắn phác thảo một bộ công cụ đã được viết để hỗ trợ the user in the state-based testing of object-oriented programs. người sử dụng trong các thử nghiệm dựa trên trạng thái của chương trình theo định hướng đối tượng. CDTurner CDTurner - 6 - - 6 - 02/02/93 02/02/93 Page 7 Trang 7 • • The final section summarises the information that is contained within this report. Phần cuối cùng tóm tắt các thông tin mà được chứa trong báo cáo này. • • A glossary of terms used in this report is provided at the rear. Chú giải thuật ngữ được sử dụng trong báo cáo này được cung cấp ở phía sau. CDTurner CDTurner - 7 - - 7 - 02/02/93 02/02/93 Page 8 Trang 8 2. 2. The Testing Process Quá trình thử nghiệm 2.1. 2.1. Testing Background Bối cảnh Kiểm tra This section describes the basic assumptions upon which the program testing within this report Phần này mô tả các giả định cơ bản mà các thử nghiệm chương trình trong báo cáo này is based. dựa vào. The very first, and possibly the most wide reaching assumption made during the testing of Việc đầu tiên, và có thể là rộng nhất đạt giả thiết được thực hiện trong thời gian thử nghiệm software, is that the compiler used to translate the source code into the executable program is phần mềm, đó là trình biên dịch được sử dụng để dịch mã nguồn vào chương trình thực thi được correct, that is to say, that the compiler does not introduce any errors into the code itself. đúng, mà là để nói, mà trình biên dịch không giới thiệu bất kỳ lỗi nào vào code của chính nó. The Các testing of compilers is a separate area of research and therefore will not be discussed any thử nghiệm của trình biên dịch là một khu vực riêng biệt của nghiên cứu và do đó sẽ không được thảo luận nào further. hơn nữa. Validation consists of a number of distinct testing activities, such as unit, integration, system Xác nhận bao gồm một số hoạt động thử nghiệm riêng biệt, chẳng hạn như đơn vị, tích hợp, hệ thống and acceptance testing. và chấp nhận thử nghiệm. Of these, only unit and integration testing are within the scope of this Trong số này, chỉ đơn vị và thử nghiệm hội nhập được trong phạm vi này report as the remaining activities have no special consequences for the testing of object- báo cáo như các hoạt động còn lại không có hậu quả đặc biệt cho các thử nghiệm của đối tượng oriented programs. định hướng chương trình. Unit testing is the process whereby each separate unit of a program is tested in isolation. Đơn vị kiểm định là quá trình mà trong đó mỗi đơn vị riêng biệt của một chương trình được thử nghiệm trong sự cô lập. With Với imperative (procedural) languages, the chosen size of unit tends to be the function, or bắt buộc (thủ tục) ngôn ngữ, kích thước lựa chọn của đơn vị có xu hướng được các chức năng, hoặc procedure; whereas, with object-oriented programs it is the feature (also known as a member thủ tục; trong khi đó, với các chương trình định hướng đối tượng nó là tính năng (còn được gọi là một thành viên function, method, or routine). chức năng, phương pháp, hoặc thường xuyên). However, it is difficult to isolate a feature from its surrounding Tuy nhiên, rất khó để cô lập một tính năng từ xung quanh mình class and then to write test drivers and stubs (which themselves require testing) to replace the lớp và sau đó để viết các trình điều khiển kiểm tra và khai (mà mình yêu cầu kiểm tra) để thay thế code removed, when the majority of the code required is already provided in the form of other Mã loại bỏ, khi phần lớn các mã yêu cầu đã được cung cấp trong các hình thức khác features of the class. các tính năng của lớp. From this, a conclusion can be drawn that the class is therefore the Từ này, một kết luận có thể được rút ra rằng lớp học là vì vậy smallest unit of test. đơn vị nhỏ nhất của thử nghiệm. Unit testing implies that test stub and test driver classes are to be written for the unit testing of Đơn vị ngụ ý rằng bài kiểm tra thử nghiệm và các lớp học lái xe sẽ được thử nghiệm bằng văn bản cho đơn vị thử nghiệm the higher level classes. các cấp lớp cao hơn. Following the same philosophy that was applied in the previous Sau cùng một triết lý đã được áp dụng trong các trang trước CDTurner CDTurner - 8 - - 8 - 02/02/93 02/02/93 Page 9 Trang 9 paragraph for the unit testing of classes; the activity should be guided by the instantiation (or đoạn cho kiểm tra đơn vị của các lớp học; hoạt động phải được hướng dẫn bởi các instantiation (hoặc call) graph. cuộc gọi) đồ thị. The classes at the bottom of the graph which are called by other classes, but do not Các lớp học ở dưới cùng của đồ thị đó được gọi là bởi các lớp khác, nhưng không call any themselves should be tested first. Gọi bất cứ bản thân nên được thử nghiệm đầu tiên. The testing then continues up the graph using the thử nghiệm sau đó tiếp tục lên đồ thị bằng cách sử dụng previously validated classes in the testing of other classes. trước đó xác nhận các lớp học trong thử nghiệm của các lớp khác. If the testing is conducted in this Nếu thử nghiệm được tiến hành trong manner, the resources that would have been used for writing and testing the test stubs to cách thức, các nguồn tài nguyên mà có thể đã được dùng để viết và kiểm tra thử nghiệm để khai replace the called classes, have been saved. thay thế các lớp học được gọi là, đã được lưu. Integration testing is the combination of units that have been validated in isolation. Tích hợp thử nghiệm là sự kết hợp của các đơn vị đã được xác nhận trong sự cô lập. The Các interface between the components is thus the focus of the testing process. giao diện giữa các thành phần là như vậy, trọng tâm của quá trình thử nghiệm. If the values passed Nếu các giá trị được thông qua to other objects are monitored, then the interface between one object and another can be để các đối tượng khác được theo dõi, sau đó giao diện giữa một đối tượng và khác có thể được effectively validated. xác nhận có hiệu quả. If unit testing was performed as prescribed above, then the activities of unit testing and Nếu đơn vị kiểm nghiệm đã được thực hiện theo quy định trên, sau đó các hoạt động của đơn vị và thử nghiệm integration testing can be effectively merged. thử nghiệm hội nhập có hiệu quả có thể được sáp nhập. This merged process is of more benefit to object- Quá trình này sáp nhập là có lợi hơn cho đối tượng oriented programming because of the difficulty in trying to write test stub classes which model lập trình hướng vì những khó khăn trong việc cố gắng để viết các lớp học thử nghiệm mà còn sơ khai mô hình the responses of other classes accurately without actually having to write the classes các phản ứng của các lớp khác một cách chính xác mà không thực sự có để ghi các lớp học themselves. bản thân mình. There is of course an exception; when dealing with external stimuli, it is likely to be more cost Có một ngoại lệ của khóa học; khi giao dịch với các kích thích bên ngoài, nó có khả năng được nhiều chi phí effective to write the test stubs for unit testing. hiệu quả để viết các khai thử nghiệm để thử nghiệm các đơn vị. This choice has to be made by the tester, and sự lựa chọn này phải được thực hiện bởi thử nghiệm, và must be based upon the resources required to write the stub as opposed to using the original phải được dựa trên những nguồn lực cần thiết để viết các bài như trái ngược với cách sử dụng bản gốc class. lớp. Figure 1 shows an example of an instantiation tree (taken from the tool MKTC which is Hình 1 cho thấy một ví dụ về một cây instantiation (lấy từ công cụ mà là MKTC discussed later). thảo luận sau). In the example, testing would start with the bottom layer, that is, Trong ví dụ, thử nghiệm sẽ bắt đầu với lớp dưới cùng, có nghĩa là, StringOfTokens StringOfTokens , , StateValues StateValues , , SubstateRef SubstateRef ; then continuing up the tree to , Sau đó tiếp tục lên cây để lex lex , , substates substates , .etc. , . Vv CDTurner CDTurner - 9 - - 9 - 02/02/93 02/02/93 Page 10 Trang 10 Lex Lex StateValuesRule StateValuesRule STATEVALUES STATEVALUES STATECHANGERULE STATECHANGERULE STATECHANGE STATECHANGE 5J=JA 5J = JA 57*56)6-4AB 57 * 56) 6-4AB 5K>IJ=JA 5k> IJ = JA StringOfTokens StringOfTokens Figure 1. Hình 1. An example of an instantiation tree (from the tool MKTC) Một ví dụ về một cây instantiation (từ công cụ MKTC) This is an alternative to the more traditional view of the testing process. Đây là một thay thế cho các truyền thống xem nhiều hơn của quá trình thử nghiệm. However, the Tuy nhiên, technique which will be outlined later can be used with either views. Kỹ thuật này sẽ được vạch ra sau này có thể được sử dụng với một trong hai quan điểm. Functional testing is considered to be the testing of a piece of software with respect to its thử nghiệm chức năng được coi là thử nghiệm của một phần mềm của nó đối với expected functionality (derived from its specification only). chức năng dự kiến (xuất phát từ đặc điểm kỹ thuật của nó chỉ). This has a tendency to be an Điều này có xu hướng được một overall system viewpoint. tổng thể hệ thống quan điểm. However, this document will use the term functional testing in the Tuy nhiên, tài liệu này sẽ sử dụng các chức năng thử nghiệm hạn trong software component sense. phần mềm thành phần ý nghĩa. It is the testing of a component against its specification, not the Đây là thử nghiệm của một thành phần chống lại các đặc điểm kỹ thuật của nó, chứ không phải system specification. hệ thống đặc điểm kỹ thuật. A test coverage measure (see later for a description) will be used to Một biện pháp bảo hiểm thử nghiệm (xem sau đó cho một mô tả) sẽ được dùng để determine how much of the unit has, and has not been tested. xác định bao nhiêu đơn vị đã, và chưa được thử nghiệm. Structural testing is usually considered to be the testing of a program, or unit, against the Kết cấu thử nghiệm thường được coi là thử nghiệm một chương trình, hoặc đơn vị, so với specification, taking into account information derived from the program design and code. đặc điểm kỹ thuật, có tính đến thông tin tài khoản bắt nguồn từ việc thiết kế chương trình và mã số. Any Bất kỳ coverage that has not been achieved by the use of the functional test cases can be 'made up' by phạm vi bảo hiểm mà chưa được đạt được bằng việc sử dụng các trường hợp thử nghiệm chức năng có thể được 'được tạo thành bằng cách the use of structural test that are specifically designed to exercise those parts of the software việc sử dụng các bài kiểm tra cấu trúc được thiết kế đặc biệt để thực hiện những phần của phần mềm which are unexercised. được unexercised. Both these views are consistent with those presented by Herrington et Cả hai quan điểm này phù hợp với những trình bày của Herrington et al. al. in [8]. trong [8]. CDTurner CDTurner - 10 - - 10 - 02/02/93 02/02/93 Page 11 Trang 11 2.2. 2.2. Emphasis of the Testing Process Nhấn mạnh tiến trình thử nghiệm At this point, the difference between classes and objects must be defined. Tại thời điểm này, sự khác biệt giữa các lớp và các đối tượng phải được xác định. For the purpose of Với mục đích this report, a class is taken to be the static, programmer-defined representation of an object. báo cáo này, một lớp học được lấy để được, tĩnh lập trình được xác định đại diện của một đối tượng. Therefore an object is a run-time instance of a class. Vì vậy đối tượng là một ví dụ thời gian chạy của một lớp. Classes cannot be generally be tested Lớp học không thể được kiểm tra thường directly; therefore it is actually the object created from the class that is tested. trực tiếp, vì vậy nó thực sự là đối tượng tạo ra từ các lớp học đó là thử nghiệm. Nevertheless, the Tuy nhiên, two are virtually synonymous when discussing the testing of object-oriented programs (written hai là hầu như đồng nghĩa khi thảo luận về việc thử nghiệm các chương trình định hướng đối tượng (bằng văn bản in class-based languages). trong ngôn ngữ dựa trên lớp). In procedural languages, the paths executed through procedures are determined by the Trong ngôn ngữ thủ tục, các con đường thực hiện thông qua các thủ tục được xác định bởi parameters that are passed to routines, and the values of global variables. tham số được truyền cho các thói quen, và các giá trị của các biến toàn cầu. The parameters Các thông số usually affect the control flow within the function and so produce the required outcome. thường ảnh hưởng đến dòng chảy trong phạm vi chức năng kiểm soát và vì vậy kết quả sản xuất yêu cầu. However, in object-oriented languages the data representation of an object persists between Tuy nhiên, trong ngôn ngữ hướng đối tượng đại diện dữ liệu của một đối tượng tồn tại giữa calls of features of an object, therefore influencing the control-flow during calls to features. các cuộc gọi của các tính năng của một đối tượng, do đó ảnh hưởng đến việc kiểm soát dòng chảy trong thời gian cuộc gọi đến các tính năng. Communication between features of the same class is facilitated by using data-members to Truyền thông giữa các tính năng của lớp cùng là tạo điều kiện bằng cách sử dụng dữ liệu- thành viên store control-information Kiểm soát lưu trữ thông tin 1 1 . . The different values that these can store may influences the Các giá trị khác nhau mà chúng có thể lưu trữ có thể ảnh hưởng đến control-flow and thus the results of calls to features. kiểm soát dòng chảy và do đó kết quả của các cuộc gọi vào các tính năng. These data-members can have their values Những dữ liệu này là thành viên có thể có giá trị của chúng set and/or used in any of the features. thiết lập và / hoặc sử dụng trong bất kỳ các tính năng. This is therefore the main emphasis for the state-based Điều này là do sự nhấn mạnh chính của nhà nước dựa trên testing of object-oriented programs. thử nghiệm các chương trình định hướng đối tượng. This emphasis is in contrast with the data-flow testing of nhấn mạnh Điều này trái ngược với dòng chảy của dữ liệu thử nghiệm programs written in procedural languages which concentrates upon the definitions and uses of các chương trình viết bằng ngôn ngữ thủ tục mà tập trung theo các định nghĩa và sử dụng của variables within the same function (during unit testing at least). biến trong cùng một chức năng (trong kiểm tra đơn vị ít nhất). Figure 2 shows an example of the interaction (and therefore data flow) between the features of Hình 2 cho thấy một ví dụ về sự tương tác (và do đó lưu lượng dữ liệu) giữa các tính năng của an object. một đối tượng. 1 1 Control-information is data used to communicate events, rather than values, between features. Control-thông tin là dữ liệu được sử dụng để giao tiếp sự kiện, chứ không phải là giá trị, giữa các tính năng. CDTurner CDTurner - 11 - - 11 - 02/02/93 02/02/93 Page 12 Trang 12 Object Đối tượng Data Dữ liệu Representation Đại diện Features Tính năng (Member (Thành viên Functions) Chức năng) first() đầu tiên () next() tiếp theo () clear() rõ ràng () bool bStart; bool bStart; int * pPos; int * PPO; int * pTop; int * pTop; int * pEnd; int * pend; Defined by Được xác định bởi Used by Được sử dụng bởi Defined and Used by Xác định và được sử dụng bởi Key: Key: Figure 2. Hình 2. An example of a class, showing potential data flow within the representation Một ví dụ của một lớp, cho thấy tiềm năng lưu lượng dữ liệu trong phạm vi đại diện các As can be seen in the diagram below (figure 3), the feature first() defines the value of the Như có thể thấy trong sơ đồ dưới đây (hình 3), tính năng u tiên ()đ xác định giá trị của data member bStart, and the feature next() uses it. bStart thành viên dữ liệu và tính năng tip theo () sử dụng nó. In data-flow testing, the path between Trong dòng chảy dữ liệu thử nghiệm, con đường giữa the definition and the use would have to be exercised. định nghĩa và sử dụng sẽ phải được thực hiện. However, a technique will be presented Tuy nhiên, một kỹ thuật sẽ được trình bày that separates the definitions and uses that exist in different features, for testing in isolation. phân cách các định nghĩa và sử dụng mà còn tồn tại trong các tính năng khác nhau, để thử nghiệm trong sự cô lập. The definition of bStart in the feature first() would be tested, and the result (the setting of Định nghĩa của bStart trong tính năng u tiên ()đ sẽ được kiểm tra, và kết quả (các thiết lập của bStart to true) would be verified. bStart cho đúng) sẽ được xác nhận. In addition, the use of bStart in the feature next() would Ngoài ra, việc sử dụng các bStart trong tính năng tip theo () sẽ also be tested (with both: bStart equals false, and bStart equals true). cũng được kiểm tra (với cả hai: bStart bằng giả, và bStart bằng đúng). By performing the testing Bằng cách thực hiện các thử nghiệm in this manner, the potentially random order that the features of an class can be called, is taken theo cách này, các thứ tự ngẫu nhiên có khả năng rằng các tính năng của một lớp có thể được gọi, được lấy into account. vào tài khoản. The responses of all features to all states are tested, thus any incorrect responses Các phản ứng của tất cả các tính năng để tất cả các nước được kiểm tra, do đó bất kỳ phản ứng không chính xác would be detected. sẽ được phát hiện. Also the possibly incorrect interaction between features would be Cũng có thể không chính xác tương tác giữa các tính năng sẽ được noticeable. đáng chú ý. When a class is defined, in the vast majority of cases, the only explicit (or implicit) order in Khi một lớp học được định nghĩa, trong đa số trường hợp, chỉ rõ ràng (hoặc ẩn), trật tự trong which the features can be called insists that the constructor must be called before any other mà các tính năng có thể được gọi là nhấn mạnh rằng các nhà xây dựng phải được gọi trước khi bất kỳ khác feature, and that the destructor must be the last feature called. tính năng, và rằng các destructor phải là tính năng mới gọi là. Apart from that, there is likely Ngoài ra, có khả năng CDTurner CDTurner - 12 - - 12 - 02/02/93 02/02/93 Page 13 Trang 13 to be an infinite number of different possible combinations of feature calls. để được vô số có thể kết hợp khác nhau của cuộc gọi tính năng này. This possibly Điều này có thể infinite order is tested by the aforementioned approach. Để vô hạn được thử nghiệm bởi các phương pháp tiếp cận nói trên. It is achieved by exercising each Đó là đạt được bằng cách tập thể dục mỗi feature with all possible starting states. tính năng với tất cả các nước có thể bắt đầu. The resultant states that can be generated by each Các kết quả nói rằng có thể được tạo ra bởi mỗi feature are validated. tính năng được xác nhận. It should not be possible to cause a feature to generate an invalid state. Nó không nên có thể gây ra một tính năng để tạo ra một nhà nước không hợp lệ. In Trong addition, it is recommended that all features should be able to accept all legal states as input. Ngoài ra, khuyên rằng tất cả các tính năng có thể chấp nhận tất cả các tiểu bang quy phạm pháp luật như là đầu vào. feature first() Tính năng đầu tiên () begin bắt đầu bStart = true; bStart = true; . . . . end kết thúc feature next() tính năng tiếp theo () begin bắt đầu end kết thúc if (bStart equals false) if (bStart bằng false) return; trở lại; end if; nếu kết thúc; . . bool bStart; bool bStart; Definition Định nghĩa 7IA 7IA Figure 3. Hình 3. An Expanded view of figure 2. An xem mở rộng của hình 2. State-based testing is testing of the interactions within a class by monitoring the changes that Nhà nước dựa trên thử nghiệm là thử nghiệm của tương tác bên trong một lớp bằng cách giám sát những thay đổi take place in the values of the data members. diễn ra trong các giá trị của các thành viên dữ liệu. Therefore it tests the all of the definitions of data Vì vậy, các xét nghiệm của tất cả các định nghĩa của dữ liệu members within the features, along with all the uses. các thành viên trong các tính năng, cùng với tất cả các sử dụng. In addition, it must test for a lack of Ngoài ra, nó phải kiểm tra cho một thiếu reaction by features to certain data-member values. Phản ứng của các tính năng cho một số thành viên các giá trị dữ liệu. Using this approach, 100% state coverage Sử dụng phương pháp này, phạm vi bảo hiểm nhà nước 100% with a state-based test suite is attained by testing all the features of an object with all the dựa trên thử nghiệm với một bộ-nhà nước là đạt được bằng cách kiểm tra tất cả các tính năng của một đối tượng với tất cả các possible states có thể các tiểu bang 2 2 . . Put in another way, 100% coverage is achieved by testing all possible state Đặt theo cách khác, phạm vi bảo hiểm 100% là đạt được bằng cách kiểm tra tất cả các tiểu bang có thể changes that can take place within an object, as well as all feature calls which do not affect the thay đổi có thể diễn ra trong vòng một đối tượng, cũng như kêu gọi tất cả các tính năng mà không ảnh hưởng đến objects state. đối tượng nhà nước. 2 2 A state is particular combination of values of all of the data-members of an object. Nhà nước đặc biệt là sự kết hợp của các giá trị của tất cả các dữ liệu các thành viên của một đối tượng. It will be explained in greater detail later on. Nó sẽ được giải thích chi tiết hơn về sau này. CDTurner CDTurner - 13 - - 13 - 02/02/93 02/02/93 Page 14 Trang 14 In addition to state based tests, functional (specification) based tests must also be performed on Ngoài việc nhà nước kiểm tra dựa trên đặc điểm kỹ thuật (chức năng) kiểm tra dựa trên cũng phải được thực hiện trên the class under test. các lớp học thử. Functional tests are important because they validate the external view of xét nghiệm chức năng rất quan trọng bởi vì họ xác nhận quan điểm bên ngoài của [...]... class written in C++ by the author Một lớp học danh sách liên kết được viết bằng C + + của tác giả 14 14 This class was actually written as a template (a generic class), but for simplification reasons, it has been reduced to a class lớp học này được thực sự được viết như là một bản mẫu (một lớp học chung), nhưng vì lý do đơn giản hóa, nó đã được giảm xuống một lớp học which uses the class TYPE for its elements... một substate dữ liệu cho mỗi thành viên của lớp học thử This is done as Này được thực hiện như described earlier mô tả trước đó [2] [2] Determine the data scenarios from the design of the class Xác định những dữ liệu kịch bản từ thiết kế của lớp [3] [3] Allocate the extra substates required for the data scenarios to function properly Phân bổ thêm substates cần thiết cho các kịch bản dữ liệu để hoạt động... thành viên dữ liệu duy nhất needed to store the state of the object cần thiết để lưu trữ nhà nước của đối tượng When applying this type of testing to classes, a number Khi áp dụng loại hình kiểm tra đến các lớp học, một số of factors influence the effectiveness of the process các yếu tố ảnh hưởng đến hiệu quả của quá trình Firstly, the number of data members Thứ nhất, số lượng thành viên dữ liệu 10 10... Các dữ liệu nhiều hơn members, the more time it takes to design and implement the tests thành viên, thời gian nhiều hơn cần thiết để thiết kế và thực hiện các bài kiểm tra Secondly, different types of Thứ hai, khác với các loại classes exist, each providing differing levels of emphasis on the data representation các lớp học tồn tại, từng cung cấp các mức độ khác nhau nhấn mạnh vào các đại diện dữ liệu. .. purpose is to mirror the value of the việc bổ sung thêm một thiết lập của các thành viên dữ liệu, mà mục đích là để phản ánh giá trị của original data members that the user is interested in For each data member being mirrored, an dữ liệu ban đầu các thành viên mà người dùng có quan tâm Đối với mỗi thành viên dữ liệu được nhân đôi, một extra feature is required to test the difference between the original... the model upon which the data structure is based; một danh sách các tình huống mà đáng kể cho các mô hình mà các cấu trúc dữ liệu được dựa; these situations will be referred to as data scenarios những tình huống này sẽ được gọi là kịch bản dữ liệu For Example, Ví dụ, class lớp học 14 14 list danh sách {( public: công khai: // / / protected: bảo vệ: // this structure creates the links of the list /... thể được nhìn thấy cho các đại diện dữ liệu: Thông tin kiểm soát, and data storage và các dữ liệu lưu trữ Control information is used to flag various internal events to other features, Kiểm soát thông tin được sử dụng để flag nội bộ các sự kiện khác nhau để tính năng khác, whereas data storage is used to store values required by the object trong khi lưu trữ dữ liệu được sử dụng để lưu trữ các giá trị... tượng là dữ liệu trung tâm, có nghĩa là, các chức năng của chương trình là decomposed with respect to the types of data that will be dealt with, rather than simply bị phân hủy đối với các loại dữ liệu đó sẽ được giải quyết, thay vì chỉ đơn giản decomposing the functionality into smaller tasks các chức năng phân hủy thành các nhiệm vụ nhỏ hơn To take account of the change in emphasis of Chủ tài khoản... now a collection of specific substate Điều này có nghĩa rằng một thành viên dữ liệu của substates giá trị hiện nay một bộ sưu tập của substate cụ thể values and general substate values giá trị và giá trị substate nói chung For example, Ví dụ, given an integer data member iValue, and a design that states: đưa ra một số nguyên liệu iValue thành viên, và thiết kế mà các tiểu bang: •• -1 has special meaning... chẳng hạn như địa chỉ của một đối tượng cụ thể An example of substates generated for a class is given in the section headed "Data Scenarios" Một ví dụ về substates tạo ra cho một lớp học được đưa ra trong phần đầu "Kịch bản dữ liệu" 3.4 3.4 Performing the testing Thực hiện kiểm tra The next part of the testing preparation is to determine the Các phần tiếp theo của việc chuẩn bị thử nghiệm là để xác định . ngôn ngữ). The remainder of this document is as follows: Phần còn lại của tài liệu này là như sau: • • The first section describes in detail the theory. tra thử nghiệm và các lớp học lái xe sẽ được thử nghiệm bằng văn bản cho đơn vị thử nghiệm the higher level classes. các cấp lớp cao hơn. Following the same

Ngày đăng: 10/11/2013, 05:11

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan