1. Trang chủ
  2. » Giáo án - Bài giảng

tài liệu cao học

76 420 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề The Testing of Object-Oriented
Trường học University of Science
Chuyên ngành Computer Science
Thể loại báo cáo
Năm xuất bản 1993
Thành phố ho chi minh city
Định dạng
Số trang 76
Dung lượng 713 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 w

Trang 1

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ụ minhhọ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

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 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

non-class-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:

Trang 2

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 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

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

Trang 3

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 isdifficult to isolate a feature from its surrounding Tuy nhiên, rất khó để cô lập một tính năng

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

Trang 4

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 đượctiế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ể đượcsá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 originalphả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

Trang 5

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

Trang 6

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

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ớimụ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ểmtra 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)

Trang 7

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ảnxuất yêu cầu

However, in object-oriented languages the data representation of an object persists betweenTuy 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

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

Trang 8

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ácthiết lập của

bStart to true) would be verified bStart cho đúng) sẽ được xác nhận In addition, the use ofbStart 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

Trang 9

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 inKhi 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ướckhi 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 ()

Trang 10

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 tracho 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

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

Trang 11

the class, whereas the state based tests have a tendency to discard external results lớp, trong khi nhà nước kiểm tra dựa có xu hướng loại bỏ các kết quả bên ngoài For Đối với example, Ví dụ,

When testing the 'get next token' feature of a lexical analyser class, unless Khi thử nghiệm được tiếp token 'tính năng' của một lớp phân tích từ vựng, trừ khi

tests are extremely carefully designed (which is both tedious and time các bài kiểm tra rất cẩn thận thiết kế (được cả hai tẻ nhạt và thời gian

consuming) so that the next token to be obtained would already be known in tiêu thụ) để cho mã thông báo tiếp theo đã được thu được sẽ được biết đến ở

fine detail, it is far easier to simply check for the effect on the representation phạt tiền cụ thể, nó là xa dễ dàng hơn để đơn giản chỉ kiểm tra tác dụng của đại diện các

and ignore the actual token returned unless it is a special token eg và bỏ qua các dấu hiệu thực tế quay trở lại trừ khi nó là một ví dụ mã thông báo đặc biệt

EndOfFile etc EndOfFile vv Functional tests would be used to determine if the correct xét nghiệm chức năng sẽ được sử dụng để xác định xem chính xác

token had been returned mã thông báo đã được trả lại

This difference implies a contrast in emphasis between the two testing styles Sự khác biệt này hàm ý sự tương phản trong sự nhấn mạnh giữa hai phong cách thử nghiệm State-basedNhà nước dựa trên

testing places emphasis on the feature's correct interaction with the data representation of the kiểm tra chú trọng vào tính năng chính xác của tương tác với các đại diện của dữ liệu object; whereas, functional tests place emphasis on the correct interaction of the features with đối tượng, trong khi đó, các xét nghiệm chức năng chú trọng vào sự tương tác chính xác của các tính năng với

the surrounding world (the rest of the program) thế giới xung quanh (phần còn lại của chương trình) Functional testing therefore concentrates on Do đó chức năng kiểm tra tập trung vào

the correct functioning of any calculations performed within the features as the first

priority các chức năng chính xác của bất kỳ tính toán thực hiện trong các tính năng như là

ưu tiên hàng đầu

From this, two distinct purposes can be seen for the data representation: control

information, Từ đó, hai mục đích riêng biệt có 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ị theo yêu cầu của đối tượng Data storage can be used lưu trữ dữ liệu có thể được sử dụng

either to store information supplied by the caller, or to store the result of a call to another hoặc để lưu trữ thông tin được cung cấp bởi người gọi, hoặc để lưu trữ kết quả của một cuộc gọi khác

feature, therefore allowing access to information that would otherwise be transient by nature tính năng, do đó cho phép truy cập vào thông tin mà nếu không sẽ bị thoáng qua bởithiên nhiên

Trang 12

The traditional testing process should consist of both functional testing and structural testing Quá trình thử nghiệm truyền thống nên bao gồm cả kiểm tra chức năng và cấu trúc thử nghiệm

[22] [22] It is deemed complete when the appropriate coverage level has been achieved

Nó được coi là hoàn thành khi mức bảo hiểm thích hợp đã đạt được To reach Để đạt được this level, first functional tests are performed, followed by the structural tests to increase the mức này, các xét nghiệm chức năng đầu tiên được thực hiện, tiếp theo là các bài kiểm tra cơ cấu để tăng

coverage of specific constructs phạm vi bảo hiểm của các cấu trúc cụ thể This technique

is easily applied to the testing of features, Kỹ thuật này có thể dễ dàng áp dụng cho việc thử nghiệm các tính năng,

however, this does not necessarily constituted a valid class Tuy nhiên, điều này không nhấtthiết phải thành lập một lớp hợp 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 của sự thay đổi trong trọng tâm của

the decomposition, state-based testing is required phân hủy, trên cơ sở kiểm tra nhà nước

là bắt buộc Therefore the testing process for object- Vì vậy quá trình thử nghiệm cho đối tượng

oriented programs should consist of three types of testing: state-based testing, and the two more chương trình định hướng nên bao gồm ba loại hình thử nghiệm: thử nghiệm dựa trên tiểu bang, và hai thêm

traditional approaches phương pháp tiếp cận truyền thống

State-based testing validates the model upon which the class is based, therefore if any major Nhà nước dựa trên thử nghiệm xác nhận mô hình mà các lớp học dựa, do đó nếu có chính

error in the functionality lỗi trong chức năng

correct the fault sửa lỗi The test cases that are dependent upon the code structure of the features may Các trường hợp được thử nghiệm phụ thuộc vào cấu trúc mã số của tính năng

có thể

Trang 13

become obsolete, leading to the recommendation that the structural tests are not conducted until trở nên lỗi thời, dẫn đến việc giới thiệu rằng các bài kiểm tra kết cấu được không tiến hành cho đến khi

both the state-based testing and the functional testing has taken place cả hai dựa trên thử nghiệm nhà nước và chức năng thử nghiệm đã diễn ra

If the features are being tested as part of a larger unit (that is, the class), rather than in Nếu các tính năng đang được thử nghiệm như là một phần của một đơn vị lớn hơn (có nghĩa là, các lớp), hơn là trong

isolation surrounded by test stubs and drivers then it is advisable to perform the state-based

cô lập được bao quanh bởi Sơ khai thử nghiệm và trình điều khiển sau đó nó được khuyến khích để thực hiện các bang dựa trên

testing first thử nghiệm đầu tiên Once the interaction between the features has been tested,then the interaction can Một khi sự tương tác giữa các tính năng đã được thử nghiệm, sau

đó sự tương tác có thể

then be used as part of the functional tests, therefore exercising a greater part of the class sau đó được sử dụng như một phần của bài kiểm tra chức năng, do đó thực hiện một phần lớn của lớp

before performing the structural tests trước khi thực hiện các bài kiểm tra cấu trúc This causes a reduction in the test cases that are Điều này gây ra một giảm trong các trường hợp được thử nghiệm

dependent upon the code structure of features phụ thuộc vào cấu trúc mã của tính năng

2.3 2.3 Coverage Measures Các biện pháp bảo hiểm

Testing generally consists of both functional testing and structural based testing Thử nghiệm thường bao gồm cả chức năng thử nghiệm và thử nghiệm dựa trên cơ cấu The Cáceffectiveness of any test suite with respect to its testing method can be determined by the hiệu quả của bất kỳ bộ phần mềm thử nghiệm đối với các phương pháp thử của nó có thể được xác định bởi

appropriate coverage measure biện pháp thích hợp bảo hiểm

3 3

Here, functionality refers to the correct interaction of all the separate section of the model, not the functionality of individual Ở đây, chức năng đề cập đến sự tương tác chính xác của riêng phần tất cả các mô hình, không phải là chức năng của cá nhân

closely as possible chặt chẽ nhất có thể The only way to prove that a program conforms tothe specification Cách duy nhất để chứng minh rằng một chương trình phù hợp với đặc điểm kỹ thuật

Trang 14

completely by testing is to perform exhaustive testing on it hoàn toàn bằng cách kiểm tra

là để thực hiện kiểm tra đầy đủ về nó Exhaustive functional testing may Đầy đủ chức năngthử nghiệm có thể

involve passing an infinite range of values as arguments and therefore it is infeasible in the vast liên quan đến việc đi qua một dãy vô hạn các giá trị như các đối số và vì thế nó là tính khả thi trong lớn

majority of cases đa số các trường hợp Exhaustive path testing is also infeasible for anything but the simplest of kiểm tra đường dẫn tiêts cũng là tính khả thi cho bất cứ điều gìnhưng đơn giản nhất của

programs because of the combinatorial explosion of paths that occurs as the program grows

in chương trình vì sự bùng nổ tổ hợp của các đường xảy ra như chương trình phát triển ở size kích thước

This introduces the requirement for a method for measuring the effectiveness of a test suite Này giới thiệu các yêu cầu về một phương pháp để đo lường hiệu quả của một bộ thử nghiệm

under the chosen testing method theo phương pháp thử chọn The definition of 'effective'

is very subjective, but is loosely Định nghĩa của 'hiệu quả' là rất chủ quan, nhưng là một cách lỏng lẻo

related to the amount of program that is exercised liên quan đến số tiền của chương trình

đó được thực hiện Therefore a measure of the program Vì vậy một biện pháp của chương trình

coverage is required phạm vi bảo hiểm là bắt buộc A number of different coverage measures exist, each one providing a Một số biện pháp bảo hiểm khác nhau tồn tại, mỗi một trong những cung cấp một

differing level of validation mức độ khác nhau xác nhận

Four examples are: Bốn thí dụ:

Statement coverage - Every statement in the program must be exercised at least once Báo cáo bảo hiểm - Tất cả các tuyên bố trong chương trình phải được thực hiện ít nhất một lần Branch (or condition) coverage - Every branch in the program must be exercised at least Chi nhánh (hoặc điều kiện) bảo hiểm - Tất cả các chi nhánh trong chương trình phải được

thực hiện ít nhất

once một lần This implies that each conditional test within a program must produce both Điều này ngụ ý rằng mỗi bài kiểm tra điều kiện bên trong một chương trình phải xuất trình

cả hai

outcomes, that is, true and false kết quả, có nghĩa là, đúng và sai

Multiple condition coverage - Every clause in the conditional tests within the program Nhiều điều kiện bảo hiểm - Tất cả các điều khoản trong các bài kiểm tra điều kiện trong

Trang 15

4 4

LCSAJ is an acronym for Logical Code Sequence And Jump LCSAJ là một từ viết tắt cho logic Code Sequence Và Jump In summary, it is a sub-path through the code that either starts at Tóm lại, đó là một tiểu đường thông qua các đoạn code đó hoặc là bắt đầu

the begining of the program, or the destination for a jump in the code; it continues until a statement which could cause a jump, sự khởi đầu của chương trình, hoặc điểm đến cho mộtbước nhảy trong các mã, nó vẫn tiếp tục cho đến khi một tuyên bố nào có thể gây ra một bước nhảy,

or the end of the code is reached hoặc vào cuối của mã là đạt

CDTurner CDTurner

- 16 - - 16 -

02/02/93 02/02/93

Page 17 Trang 17

It is very unlikely that while using any of the above coverage measures, that 100%

coverage of Nó là rất không chắc rằng trong khi sử dụng bất kỳ biện pháp bảo hiểm ở trên,

programmer's error, or simply due to defensive programming lập trình viên của lỗi, hoặc đơn giản là do chương trình phòng thủ

5 5

• •

If using a path coverage measure, then there may be paths through the program which Nếu

sử dụng một biện pháp bảo hiểm con đường, sau đó có thể có đường đi qua chương trình

đó

are infeasible có tính khả thi An infeasible path is one which can never be executed; the most likely An là một trong những con đường khả thi mà không bao giờ có thể được thực hiện; các khả năng nhất

cause of these is the mutual exclusivity of two conditions nguyên nhân trong số này là sự độc quyền lẫn nhau của hai điều kiện For example: Ví dụ:

Trang 16

produces an infeasible path because the path that goes through both branches can tạo ra một con đường khả thi vì con đường đi qua cả hai ngành có thể

never be executed không bao giờ được thực thi

Therefore a realistic coverage target must be set, based on the availability of resources for the Do đó một mục tiêu bảo hiểm thực tế phải được thiết lập, dựa trên sự sẵn có của các nguồn lực cho

testing, and an assessment of the code thử nghiệm, và đánh giá một số mã

The different types of coverage measure facilitate differing levels of testing Các loại bảo hiểm khác nhau của biện pháp tạo thuận lợi cho các cấp khác nhau của thử nghiệm If every statement Nếu mỗi báo cáo

in a program was exercised at least once during a test run, then there may still be faults in the trong một chương trình được thực hiện ít nhất một lần trong một chạy thử nghiệm, sau

đó có thể vẫn còn lỗi trong

program that lie undetected and will remain so until a specific path (or group of paths) through chương trình mà không bị phát hiện nói dối và sẽ vẫn như vậy cho đến khi một đường dẫn cụ thể (hoặc nhóm các đường dẫn) qua

the code are executed mã được thực hiện Branch coverage provides slightly more detailedtesting, however, not as Chi nhánh bảo hiểm cung cấp thử nghiệm chi tiết hơn một chút, tuy nhiên, không phải là

much as multiple condition coverage nhiều càng nhiều điều kiện bảo hiểm Although exhaustive path testing is infeasible, testing Mặc dù kiểm tra đường dẫn đầy đủ có tính khả thi, kiểm tra

5 5

This is a technique whereby all conditions will be tested for, but some may never be

achievable Đây là một kỹ thuật mà trong đó tất cả các điều kiện sẽ được thử nghiệm, nhưng một số không bao giờ có thể đạt được

CDTurner CDTurner

- 17 - - 17 -

02/02/93 02/02/93

Page 18 Trang 18 using sub-paths sử dụng các đường tiểu

6 6

is not không Therefore the longer the sub-paths, the more 'effective' the testing Do đó còn

là tiểu đường, càng có nhiều 'hiệu quả' thử nghiệm

method phương pháp The consequence of this is that LCSAJ testing (in theory at least) should provide a Hệ quả của điều này là thử nghiệm LCSAJ (trong lý thuyết ít nhất) sẽ cung cấp

more effective testing method than multiple condition coverage phương pháp thử nghiệm hiệu quả hơn so với nhiều điều kiện bảo hiểm

A disadvantage of using a more effective testing method is the increasing difficulty in Một bất lợi của việc sử dụng một phương pháp thử nghiệm hiệu quả hơn là những khó khăn ngày càng tăng trong

generating the test cases tạo ra các trường hợp thử nghiệm However, this problem will not

be discussed further as it is beyond Tuy nhiên, vấn đề này sẽ không được thảo luận thêm,

vì nó vượt ra ngoài

Trang 17

the scope of this document phạm vi của văn bản này

6 6

sub-paths are partial paths through the code that don't have to start at the begining of the code, and do not have to proceed al the tiểu đường là con đường một phần thông qua các code mà không có để bắt đầu vào đầu của mã này, và không có để tiến hành các al

way to the end of the code đường đến cuối mã

CDTurner CDTurner

- 18 - - 18 -

02/02/93 02/02/93

Page 19 Trang 19

3 3 State-Based Testing Nhà nước-Based Testing

3.1 3.1 Introduction Giới thiệu

This section describes the process of state-based testing of classes and what it involves Phần này mô tả quá trình thử nghiệm dựa trên trạng thái của các lớp học và những gì nó liên quan đến

As its name suggests, the main emphasis of state-based testing is the values stored in the Như tên gọi, sự nhấn mạnh chính của nhà nước dựa trên thử nghiệm là các giá trị được lưu trữ trong

object's representation đối tượng của đại diện The particular values are to be known simply as the object's state Các giá trị cụ thể sẽ được gọi đơn giản là đối tượng của các nhà nước This Điều này

draws similarities from Finite State Automata and Infinite State Automata, which will simply rút ra từ hữu hạn nhà nước tương automata và Infinite automata Nhà nước, mà sẽ chỉ đơn giản

be referred to as State Automata (or SA) được gọi là Nhà nước automata (hoặc SA) SAs are objects whose next state is determined by SAS là đối tượng mà nhà nước tiếp theo được xác định bởi

the next feature that is called and the current state tính năng tiếp theo được gọi và hiện naynhà nước However, some features do not affect the Tuy nhiên, một số tính năng không ảnhhưởng đến

state, but simply allow a client to ask questions such as "what is your value ?" nhà nước,

mà chỉ đơn giản cho phép một khách hàng đặt câu hỏi như "giá trị của bạn là gì?"

through to four thông qua đến bốn There are four different features available for the client

to call (including a Có bốn tính năng khác nhau có sẵn cho khách hàng để gọi (bao gồm cả một

Trang 18

constructor) and their effects are shown above constructor) và các hiệu ứng của họ được hiển thị ở trên The feature Các tính năng

GetValue() GetValue ()

does not affect the không ảnh hưởng đến

current state, it simply informs the client (caller) what the current value is hiện tại nhà nước, nó chỉ đơn giản thông báo cho khách hàng (người gọi) những gì là giá trị hiện hành The Các

Reset() Thiết lập lại ()

feature allows the state to be returned to the start (one) at any time tính năng cho phép nhà nước để được trả lại cho bắt đầu (một) bất kỳ lúc nào

The counting SA would be relatively trivial to test, especially as all features are defined over Các tính SA sẽ là tương đối tầm thường để kiểm tra, đặc biệt là khi tất cả các tính năng được định nghĩa trên

the whole range of states of the objects with no exceptions toàn bộ phạm vi của các quốc gia của các đối tượng không có ngoại lệ Each feature would be called with Mỗi tính năng

sẽ được gọi với

the object in each of the four states các đối tượng trong thuộc bốn tiểu bang The result of the call would be verified against the diagram Kết quả của cuộc gọi sẽ được xác nhận đối với sơ đồ

above ở trên

Any feature has four types of possible responses to a particular state and feature argument Bất kỳ tính năng có bốn loại phản ứng có thể đến một nhà nước nói riêng và đối số tính năng

supposed to be i) nghĩa vụ phải được i) Therefore the aim of state-based testing is to detect all occurrences of the Vì vậy mục tiêu của nhà nước dựa trên thử nghiệm là để phát hiện tất cả các xuất hiện của các

erroneous ii), iii), and iv) sai lầm ii), iii), và iv)

Chow discusses testing using SA's in [2] Chow thảo luận về thử nghiệm bằng cách sử dụng của SA trong [2] However, he discusses the testing of control- Tuy nhiên, ông bàn vềcác thử nghiệm kiểm soát

structures that can occur within a design, rather than an implementation cấu trúc có thể xảy

ra trong thiết kế, thay vì thực hiện một His approach of phương pháp tiếp cận của ông predicting the correct response of a routine according to the SA upon which it is based, is

dự đoán phản ứng chính xác của một thói quen theo SA khi mà nó được dựa, là

Trang 19

similar to the one described in this document tương tự như mô tả trong tài liệu này

CDTurner CDTurner

- 20 - - 20 -

02/02/93 02/02/93

Page 21 Trang 21 3.2 3.2 Notation Ký hiệu

To introduce a minimal degree of formalism, each feature is considered a mapping from its

Để giới thiệu một mức độ tối thiểu của hình thức, tính năng từng được coi là một ánh xạ từcủa nó

input states, to its output states, affected only by the current state of the object, and any đầuvào tiểu bang, đến tiểu bang đầu ra của nó, chỉ bị ảnh hưởng bởi trạng thái hiện tại của đối tượng, và bất kỳ

parameters passed các thông số thông qua

Trang 20

O O

i tôi

= The set of states that the i = Các thiết lập của các quốc gia mà các i

th thứ

feature is actually able to produce as output là tính năng thực sự có thể sản xuất là đầu ra

If a class is valid (as far as state-based testing is concerned), then Nếu một lớp học có giá trị (như xa như dựa trên thử nghiệm nhà nước có liên quan), sau đó

as input are as expected, and the same for the output states như là đầu vào được như mong đợi, và tương tự cho các tiểu bang đầu ra

However, the previous example is only a simple one requiring only a single data member Tuy nhiên, các ví dụ trên chỉ là một trong những yêu cầu đơn giản chỉ là một 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

that the class possesses has a profound effect on the complexity of the testing mà lớp sở hữu có một ảnh hưởng sâu sắc sự phức tạp của thử nghiệm The more data 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ớphọ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 The more Các chi tiết

Trang 21

features that inter-act with the representation, and each other via the representation, then the tính năng liên hành động với đại diện các, và mỗi khác thông qua đại diện, sau đó

Output is used to mean the state of the object after the call to the feature Sản lượng được

sử dụng để có nghĩa là nhà nước của đối tượng sau khi cuộc gọi đến tính năng này

10 10

Data members is the term used in the C++ community to describe the variables that make

up the data representation of an Thành viên dữ liệu là một thuật ngữ được sử dụng trong cộng đồng C + + để mô tả các biến số tạo nên đại diện dữ liệu của một

object đối tượng

complexity phức tạp

11 11

within features, the more difficult those features are to test trong các tính năng, các khó khăn hơn những tính năng này để kiểm tra This can be Điều này có thể được

circumvented to a certain degree by inserting at the end of each sub-task within the feature

an phá vỡ đến một mức độ nhất định bằng cách chèn vào cuối mỗi công việc phụ trong một tính năng

assertion to check the state of the object (this will be discussed in more detail later) khẳng định để kiểm tra trạng thái của đối tượng (điều này sẽ được thảo luận cụ thể hơn sau này)

3.3 3.3 Substates Substates

The current state of an object is the combined values from all of its data members at the Các trạng thái hiện tại của một đối tượng là các giá trị kết hợp từ tất cả các thành viên dữ liệu của nó tại

current point in time hiện tại thời điểm It is appropriate to therefore define a substate to bethe value of a Đó là vì thế thích hợp để xác định một substate được giá trị của một

particular data member at a specific point in time; likewise, a partial state is the combined thành viên dữ liệu cụ thể tại một điểm cụ thể trong thời gian; cũng vậy, một nhà nước một phần là kết hợp

values of a subset of all of the data members of the class at a particular point in time giá trịcủa một tập hợp của tất cả các thành viên dữ liệu của lớp học tại một điểm cụ thể trong thời gian This Điều này

Trang 22

means that the state of an object can now be redefined to be the combination of all of the cónghĩa là nhà nước của một đối tượng có thể được định nghĩa lại được sự kết hợp của tất cả các

substates of the object at a point in time substates của đối tượng tại một điểm trong thời gian

Rather than associate every single possible value of a data member with a substate, it is more Thay vì có thể kết hợp tất cả các giá trị duy nhất của một thành viên dữ liệu với substate một, nó là nhiều hơn

appropriate to introduce two types of substates values: thích hợp để giới thiệu hai loại substates giá trị:

specific substate values - these are substate values that are tested for directly within the substate giá trị cụ thể - đây là những giá trị substate được thử nghiệm trực tiếp trong

code, or are described in the design as being of special significance code, hoặc được mô tả trong thiết kế như là có ý nghĩa đặc biệt

general substate values - these are a group of substate values that are all considered in the Tổng substate giá trị - đó là một nhóm các giá trị substate được tất cả các xem xét trong

same manner; therefore there is no need to distinguish between them for the purposes of cùng một cách, vì vậy không có cần phải phân biệt giữa chúng cho mục đích

state-based testing nhà nước dựa trên thử nghiệm

This means that a data member's substates values are 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 -1 Có ý nghĩa đặc biệt

11 11

The term complexity is used to imply that multiple tasks are perfomed within the feature

Sự phức tạp thời hạn được sử dụng để ngụ ý rằng nhiệm vụ được perfomed trong nhiều tính năng An implication of greater complexity Một ý nghĩa phức tạp hơn

is that there is more likely to be a greater number of state transitions là có nhiều khả năng được một số lượng lớn hơn của quá trình chuyển đổi nhà nước

Trang 23

StartValue (iValue = -1) - a specific substate value StartValue (iValue = -1) - một giá trị cụ thể substate

• •

RemainingValues (iValue > -1) - a general substate value RemainingValues (iValue> -1) - một giá trị chung substate

To determine the substates values for a class, perform the following for each data member:

Để xác định các giá trị substates cho một lớp, thực hiện những điều sau đây cho mỗi thành viên dữ liệu:

1) analyse which particular values are significant (by analysis of the code, or the design), 1)phân tích mà các giá trị cụ thể là đáng kể (bằng cách phân tích các đoạn code, hoặc thiết kế),

and which are not và không

2) Allocate one substate value for each significant value 2) Phân bổ substate một giá trị cho từng giá trị đáng kể

3) Allocate one substate value for each group of related values 3) Phân bổ substate một giátrị cho từng nhóm các giá trị liên quan

If the data member being considered is a pointer (an address of an object, rather than an actual Nếu các thành viên dữ liệu được coi là một con trỏ (một địa chỉ của một đối tượng, hơn là một thực tế

object), then it is most likely that the pointer will only have two substate values, one specific đối tượng), sau đó nó rất có thể là con trỏ sẽ chỉ có hai giá trị substate, một trong những cụ thể

and one general và một chung The specific value is likely to be the value NULL Giá trị cụthể có khả năng là giá trị NULL

12 12

, and the general value will , Và tổng giá trị sẽ

cover all other possibilities, that is, not equal to NULL bao gồm tất cả các khả năng khác,

đó là, không bằng NULL However, it is possible that the Tuy nhiên, nó có thể là

substate can have more susbtate values, such as the address of a specific object substate có thể có giá trị susbtate hơn, 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

Trang 24

class lớp This must be done from the design of the class, not from the code, as there may

be errors Điều này phải được thực hiện từ việc thiết kế các lớp, không phải từ mã, vì có thể

có sai sót

in the code trong mã

In order to facilitate the testing of substate-values, extra features must be added to the class

Để tạo thuận lợi cho việc thử nghiệm substate-giá trị, tính năng bổ sung phải được bổ sung vào các lớp học

under test thử This will be described below Điều này sẽ được mô tả dưới đây

A major part of state-based testing is the determining of the object's current state Một phầnlớn của nhà nước dựa trên thử nghiệm là xác định của nhà nước hiện hành của đối tượng

To enable Để kích hoạt

this, a new version of the class under test must be produced này, một phiên bản mới của lớp học được đo kiểm phải được sản xuất At least one new feature per Ít nhất một tính năng mới cho mỗi

substate is required substate là bắt buộc These will enable the tester to inspect the value ofchosen substates Những sẽ cho phép thử để kiểm tra giá trị của substates chọn

However, if there is a state change between two values which were both considered to be part Tuy nhiên, nếu có sự thay đổi trạng thái giữa hai giá trị đó đã được cả hai được coi là một phần

of the same general group, then the change is undetectable của nhóm chung giống nhau, sau đó thay đổi là không thể phát hiện This problem is easily rectified by Vấn đề này có thể dễ dàng sửa chữa bởi

the addition of an extra set of data members, whose 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 and the mirroring data tính năng bổ sung là cần thiết để kiểm tra sự khác biệt giữa bản gốc và các phản chiếu dữ liệu

member, and to update the value of the mirror data members thành viên, và để cập nhật các giá trị của các thành viên dữ liệu máy nhân bản This is explained in greater detail Điềunày được giải thích chi tiết hơn

in a separate report describing the MKTC suite of tools [19] trong một báo cáo riêng biệt

mô tả các bộ MKTC các công cụ [19]

Trang 25

As a simple recommendation, it is advisable to insert statements at the beginning and end

of Như một khuyến nghị đơn giản, nó được khuyến khích để báo cáo chèn vào đầu và cuối each feature to report to the screen (or to a file) the value of the parameters passed and the mỗi tính năng báo cáo về màn hình (hoặc vào một tập tin) giá trị của các tham số được thông qua và

values returned by the features giá trị trả về bởi các tính năng It is useful if this is also done for the substate testing features, Nó rất hữu ích nếu điều này cũng được thực hiện chocác tính năng thử nghiệm substate,

providing a useful aid in debugging any errors that might occur, by allowing the execution

of cung cấp một trợ giúp hữu ích trong việc gỡ lỗi bất kỳ lỗi nào mà có thể xảy ra, bằng cách cho phép thực hiện

the test case to be traced trường hợp thử nghiệm để được truy tìm

It is usual that some features of a class must perform more than one task to achieve their

Nó là bình thường mà một số tính năng của một lớp phải thực hiện nhiều nhiệm vụ để đạt được của họ

desired functionality mong muốn các chức năng The greater the number of tasks, the more difficult they will be to test and Việc nhiều hơn số lượng các nhiệm vụ, càng khó khăn họ sẽ được thử nghiệm và

debug if errors are present debug lỗi nếu có hiện nay As a recommendation to aid the tester, it is advisable to insert Như một khuyến nghị để hỗ trợ các thử nghiệm, nó được khuyến khích để chèn

State-based testing is useful for more than simply detecting the change in state of an object,

it Nhà nước dựa trên thử nghiệm có ích hơn chỉ đơn giản là phát hiện sự thay đổi trạng tháicủa một đối tượng, nó

can be used to detect the correct construction of a more complex dynamic data structure; for có thể được dùng để phát hiện việc xây dựng chính xác của một cấu trúc dữ liệu phức tạp năng động hơn; cho

example, a linked list Ví dụ, một danh sách liên kết For such dynamic data structures, it isessential to determine which Đối với các cấu trúc dữ liệu động, nó là điều cần thiết để xác định

Trang 26

particular changes can occur to the structure, and when they can occur thay đổi đặc biệt có thể xảy ra để cơ cấu, và khi họ có thể xảy ra This analysis produces phân tích này được sản xuất

a list of situations which are significant to 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

list_element * pNext; list_element * pNext;

TYPE tItem; LOẠI tItem;

}; );

// pTop points to the top of the first element of the / / PTop điểm đến hàng đầu của yếu tố đầu tiên của

list (the top) danh sách (phía trên)

list_element * pTop ; list_element * pTop;

// pCur points to the pointer to the current / / PCur điểm để con trỏ đến hiện tại

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

Trang 27

ii) pTop does not equal NULL ii) pTop không bằng NULL

S2) *pCur S2) * pCur

15 15

i) *pCur equals NULL i) * pCur bằng NULL

ii) *pCur does no equal NULL ii) * pCur hiện không có bằng NULL

S3) pCur S3) pCur

i) pCur equals the address of pTop i) pCur bằng địa chỉ của pTop

ii) pCur does not equal the address of pTop ii) pCur không bằng địa chỉ của pTop

The significance of these states are: Ý nghĩa của các nước này là:

In conjunction with the model upon which the class is based (not shown), two different sets

of Kết hợp với mô hình mà các lớp học dựa (không hiển thị), hai bộ khác nhau

scenarios are produced: scenarios used by those features of the class that act upon the elements kịch bản được sản xuất: kịch bản được sử dụng bởi những tính năng của lớp mà hành động theo các yếu tố

themselves (see figure 6), and the scenarios used by those features which act upon the linksmình (xem hình 6), và kịch bản được sử dụng bởi những tính năng mà hành động theo các liên kết

between the nodes (see figure 7) giữa các nút (xem hình 7) Generally, the type of features that fall into the first category Nói chung, các loại tính năng mà rơi vào thể loại đầu tiên are those that alter the contents of nodes, but do not actually change the structure là những thay đổi nội dung của các nút, nhưng không thực sự thay đổi cơ cấu Whereas the Trong khi

type of features that fall into the second category are generally those features that add, or delete loại tính năng mà rơi vào thể loại thứ hai nói chung là những tính năng thêm, hoặc xóa

nodes from the list các nút từ danh sách

15 15

A star in front of a variable name in C/C++ means the object pointed to by the variable (a pointer) Một ngôi sao ở phía trước của một tên biến trong C / C + + có nghĩa là đối tượng được chỉ tới bởi biến (một con trỏ) In this case, it means the Trong trường hợp này, nó có nghĩa là

current element in the list hiện yếu tố trong danh sách

CDTurner CDTurner

- 26 - - 26 -

02/02/93 02/02/93

Page 27 Trang 27 a) a)

Trang 28

when put into words, they are: khi đưa vào từ ngữ, đó là:

a) the only node of the list, a) nút duy nhất của danh sách,

b) the first element of a multiple node list, b) các yếu tố đầu tiên của một danh sách nhiều nút,

c) the last element of a multiple node list c) các yếu tố cuối cùng của một danh sách nhiều nút

Figure 6 Hình 6 The data scenarios for the features that act upon the nodes of the list Các

dữ liệu kịch bản cho các tính năng mà hành động theo các nút của danh sách

When put in to words, they are: Khi đưa vào từ ngữ, đó là:

a) an empty list, a) một danh sách trống,

b) before the only element, b) trước khi các yếu tố duy nhất,

c) after the only element, c) sau khi các yếu tố duy nhất,

d) in between two nodes in a multiple node list, d) ở giữa hai nút trong một danh sách nhiều nút,

e) at the end of a multiple node list e) ở phần cuối của một danh sách nhiều nút

Trang 29

Figure 7 Hình 7 The data scenarios for the features that act upon the links between the nodes Các dữ liệu kịch bản cho các tính năng mà hành động theo các liên kết giữa các nút

However, unless a change in the composition of the data structure is detectable, the results

of Tuy nhiên, trừ khi có sự thay đổi trong thành phần của cấu trúc dữ liệu được phát hiện, kết quả của

using the above scenarios will be difficult to verify sử dụng các kịch bản trên sẽ được khó khăn để xác minh Therefore, additional substates are required Vì vậy, khi được yêu cầu substates

for detecting the state of various parts of a dynamic data structure để phát hiện trạng thái của các bộ phận khác nhau của một cấu trúc dữ liệu động For the above example, the Đối với ví dụ trên,

following additional substates were used: sau substates bổ sung được sử dụng:

S4) (*pCur)->pNext S4) (* pCur) -> pNext

16 16

i) invalid i) không hợp lệ

ii) (*pCur)->pNext does not equals NULL ii) (* pCur) -> pNext không bằng NULL

iii) (*pCur)->pNext equals NULL iii) (* pCur) -> pNext bằng NULL

S5) (*pCur)->tItem S5) (* pCur) -> tItem

i) (*pCur)->tItem is invalid i) (* pCur) -> tItem là không hợp lệ

ii) (*pCur)->tItem is valid ii) (* pCur) -> tItem là hợp lệ

The substate values S4(ii) and S4(iii) are relatively self-explanatory Các giá trị substate S4 (ii) và S4 (iii) là tương đối tự giải thích

17 17

; S4(i) has to be ; S4 (i) phải được

included, because there is a possibility that *pCur could be NULL rendering the expressionbao gồm, vì có một khả năng rằng * pCur có thể là NULL vẽ biểu thức

(*pCur)->pNext invalid (* PCur) -> pNext không hợp lệ This also applies to S5, which has an added anomaly, it seems to Điều này cũng áp dụng đối với S5, trong đó có thêm bất thường, nó có vẻ

indirectly reflect the value of *pCur (S2) only gián tiếp phản ánh giá trị của * pCur (S2)

mà thôi This is because a list is used to store any range Điều này là do một danh sách được

sử dụng để lưu trữ bất kỳ phạm vi

of values; it is pointless to detect every single value, therefore what is required is the ability

to các giá trị, nó là vô nghĩa để phát hiện tất cả các giá trị duy nhất, do đó những gì được yêu cầu là khả năng

Trang 30

detect a change in value phát hiện một sự thay đổi về giá trị This is provided by some of the extra features that have been added to Điều này được cung cấp bởi một số các tính năng bổ sung mà đã được thêm vào

the class under test; but for identification purposes, allocating a substate to the expression các lớp học thử, nhưng cho các mục đích xác định, phân bổ một substate với các biểu thức eases some problems giúp giảm bớt một số vấn đề It also facilitates the correct expression

of test cases to the tool Nó cũng tạo điều kiện cho sự biểu hiện chính xác các trường hợp thử nghiệm để công cụ

case, it refers to the pNext data member which is part of a list_element object trường hợp,

nó đề cập đến các thành viên dữ liệu pNext là một phần của một đối tượng list_element

17 17

They reflect whether the pNext data member of the current node points to another link, or

to NULL (the end of the list) Họ phản ánh cho dù các thành viên dữ liệu pNext trong những điểm nút hiện tại để một liên kết khác, hoặc để NULL (vào cuối danh sách)

able to differentiate between the scenarios; the initial set-up of the test case is driven by the

có khả năng phân biệt giữa các kịch bản; các thiết lập ban đầu của vụ án thử nghiệm là lái

xe của các

tester, therefore allowing the starting state to be whatever is required thử nghiệm, do đó cho phép nhà nước bắt đầu được bất cứ điều gì là cần thiết It is for this lack of Nó là dành cho sự thiếu

differentiability between scenarios that the tool MKTC has a separate facility allowing the differentiability giữa các kịch bản mà các MKTC công cụ có một cơ sở riêng biệt cho phépstarting state for test cases to be expressed as a scenario, rather than a state description bắt đầu từ nhà nước đối với trường hợp thử nghiệm để được thể hiện như một kịch bản, hơn làmột mô tả nhà nước

19 19

Trang 31

3.4.3 3.4.3 Generation of Test Cases Thế hệ các vụ án thử nghiệm

In this report so far, both substates and data scenarios have been introduced and can now beTrong báo cáo này cho đến nay, cả hai substates và dữ liệu kịch bản đã được giới thiệu và bây giờ có thể được

combined to provide a more general guide to state-based testing kết hợp để cung cấp một hướng dẫn tổng quát hơn để thử nghiệm trên cơ sở nhà nước The guide is in the form of a hướng dẫn là dưới hình thức một

list of tasks to be performed danh sách các nhiệm vụ phải được thực hiện

detect the changes to the class under test phát hiện những thay đổi lớp học thử

19 19

A state description is a list of substates descriptions which when combined form the state

of the object Một mô tả nhà nước là danh sách các mô tả substates mà khi kết hợp hình thành nhà nước của đối tượng A substate description is Một mô tả là substate

the declaration of a particular substate's value việc kê khai cụ thể của substate một giá trị CDTurner CDTurner

Trang 32

for each cho mỗi

feature tính năng này In the majority of cases, both should be the same as Trong đa số trường hợp, cả hai cần được giống như

s s

because classes should bởi vì các lớp học nên

be written with no implied order for the calling of features [13] được viết với ngụ ý không

có thứ tự cho các cuộc gọi của các tính năng [13] These sets of states Những bộ của các quốc gia

form the basis of the cases hình thành cơ sở của các trường hợp

[8] [8]

Analyse from the design the call graph for inter-features within the same class, that is, Phântích từ thiết kế các đồ thị cuộc gọi cho liên tính năng trong cùng một lớp, có nghĩa là, the class under test các lớp học thử

Trang 33

is done for all significant values that can be passed as parameters to the feature được thực hiện cho tất cả các giá trị đáng kể có thể được thông qua như các tham số để tính năng này.These Những

significant values are the stimuli of the features giá trị quan trọng là kích thích các tính năng

the code for the test, including the call to the feature under test mã cho thử nghiệm, bao gồm cả cuộc gọi đến tính năng được đo kiểm Append to all of this, a Nối cho tất cả các điều này, một

test for the final state of the object, and any code required to tidy up after the test kiểm tra cho các tiểu bang cuối cùng của đối tượng, và mã bất kỳ yêu cầu phải dọn dẹp sau khi thử nghiệm

[12] [12]

Go back to item 10 until there are no more features left to test Trở lại mục 10 cho đến khi không có thêm nhiều tính năng còn lại để kiểm tra

3.5 3.5 General Assessment of the Technique Kỹ thuật tổng hợp đánh giá của các

State-based testing, like the majority of other techniques, has particular types of classes on Nhà nước dựa trên thử nghiệm, giống như phần lớn các kỹ thuật khác, có các kiểu đặc biệt của các lớp học về

which it is more effective than on others mà nó hiệu quả hơn vào người khác The types ofclasses that have been tested by this Các loại lớp học đã được thử nghiệm bằng cách này technique so far have by no means been restrictive kỹ thuật cho đến nay đã không có nghĩa

là bị hạn chế They include file handlers, parsers, lexical Chúng bao gồm xử lý tập tin, parsers, từ vựng

analysers, and abstract data types such as lists phân tích, và dữ liệu trừu tượng kiểu như danh sách The degree of effectiveness of the technique is Mức độ hiệu quả của kỹ thuật này là

dependent upon the degree of control-information that exists as part of the data

representation phụ thuộc vào mức độ thông tin, kiểm soát tồn tại như một phần của đại diện dữ liệu

state-based testing is likely to be nhà nước dựa trên thử nghiệm có khả năng được

Trang 34

However, if the class is designed simply as a repository of information, or as a non

dynamic Tuy nhiên, nếu lớp học được thiết kế đơn giản là một kho thông tin, hoặc như là một sự năng động

data storage structure, then this technique will have limited effect cấu trúc lưu trữ dữ liệu, sau đó kỹ thuật này sẽ có hiệu lực hạn chế Its ineffectiveness is related thiếu hiệu quả của

nó có liên quan

to the number of test cases that can be produced về số lượng các trường hợp kiểm thử có thể được sản xuất From the experience of the author, the Từ kinh nghiệm của tác giả, các number of test cases that can be generated is related to the amount of control-information

số trường hợp thử nghiệm có thể được tạo ra là liên quan đến số lượng thông tin kiểm soát present within the representation of the class and the number of different substate-values for Hiện nay trong phạm vi đại diện của lớp và số lượng khác nhau substate-giá trị cho each data-member mỗi thành viên dữ liệu

The technique is not a substitute for functional testing, nor structural testing Kỹ thuật này không phải là một thay thế cho thử nghiệm chức năng, cũng không cấu trúc thử nghiệm However, it Tuy nhiên,

should be considered as a complimentary technique for testing that part of programming that is nên được xem là một kỹ thuật miễn phí để thử nghiệm rằng một phần của chương trình đó là

particularly prevalent, and easily accessible in object-oriented programming, but which is not đặc biệt là phổ biến, và dễ dàng truy cập trong lập trình hướng đối tượng, nhưng đó không phải là

so readily visible in programs written in more procedural languages để dễ dàng nhìn thấy được trong các chương trình được viết bằng nhiều ngôn ngữ thủ tục

If a class is written with no order imposed upon the execution of features, the less

restrictive it Nếu một lớp học được viết không có để áp đặt lên việc thực hiện các tính năng, ít hạn chế nó

is upon any programmer who may to make use of it là khi có người lập trình để có thể sử dụng nó This in turn increases one of the aims of Điều này tăng lần lượt một trong những mục tiêu của

object-oriented programming - that of facilitating the increased use of reusable

components, lập trình hướng đối tượng - đó là tạo thuận lợi cho việc sử dụng tăng lên của các thành phần tái sử dụng,

therefore reducing the cost of software production [12] do đó giảm chi phí sản xuất phần mềm [12]

There is one point which has been carefully avoided until now - the emphasis of the test cases Có một điểm đã được cẩn thận tránh cho đến bây giờ - sự nhấn mạnh của các trườnghợp thử nghiệm

The dilemma is: should the test cases concentrate on individual substates, or should they tiến thoái lưỡng nan này là: nên các trường hợp kiểm tra tập trung vào substates cá nhân, hoặc nên họ

attempt to concentrate on combinations of substates ? cố gắng tập trung vào sự kết hợp của substates?

There does not seem to be a simple answer to this problem Hiện không có vẻ là một câu trả lời đơn giản cho vấn đề này If emphasis is placed on individual Nếu nhấn mạnh được đặt trên cá nhân

Trang 35

substates, the number of test cases increases significantly, which although significantly faster substates, số trường hợp kiểm thử tăng đáng kể, mà mặc dù nhanh hơn đáng kể and easier to generate than the other type (when using automated methods such as MKTC),but và dễ dàng hơn để tạo ra hơn loại khác (khi sử dụng phương pháp tự động như

MKTC), nhưng

do have the disadvantage of using more testing resources such as machine time, and disk space không có những bất lợi của việc sử dụng các nguồn lực thử nghiệm hơn như máy thời gian, và không gian đĩa

However, it is possible to find a compromise between the two, and this must be decided upon Tuy nhiên, có thể để tìm một thỏa hiệp giữa hai, và điều này phải được quyết định khi

by the tester bởi các thử nghiệm

object-nghiệm hướng đối tượng

programs chương trình As there only a few papers, each will be discussed individually and contrasted with Vì có chỉ là một vài giấy tờ, mỗi cá nhân sẽ được thảo luận và tương phản với

the rest phần còn lại They are discussed in chronological order Họ được thảo luận trong thứ tự thời gian

The first paper is "Augmentation of Object-Oriented Programming by Concepts of AbstractCác giấy đầu tiên là "ngực của lập trình hướng đối tượng của khái niệm của Tóm tắt Data Type Theory: The ModPascal Experience" by Walter G Olthoff [15] It described an Loại dữ liệu Lý thuyết: Kinh nghiệm ModPascal "của Walter G Olthoff [15] Nó mô tả một

approach to the validation of object-oriented programs written in a modified version of Pascal cách tiếp cận để xác nhận các đối tượng theo định hướng chương trình viết bằng một phiên bản sửa đổi của Pascal

that includes constructs for defining classes, and for the inclusion of information connectedbao gồm các cấu trúc để xác định các lớp học, và cho sự bao gồm các thông tin kết nối with the ADT theory với lý thuyết ADT

The author gives a brief introduction to the various different methods of formally

specifying Tác giả đưa ra một giới thiệu ngắn gọn để các phương pháp khác nhau khác nhau của chính thức chỉ định

software components phần mềm thành phần He then concentrates upon the algebraic specification method, which is Sau đó ông tập trung theo phương pháp đại số đặc điểm kỹ thuật, mà là

Trang 36

the one that has been used in conjunction with the modified Pascal một trong đó đã được

sử dụng kết hợp với Pascal đổi lần Details of the modified Thông tin chi tiết của các sửa đổi

Pascal language are then given including the declaration of classes, enrichment objects Ngôn ngữ Pascal sau đó được đưa ra bao gồm cả việc kê khai của các lớp học, các đối tượng làm giàu

(extensions to other objects), and the incorporation of information from the formal (Phần

mở rộng cho các đối tượng khác), và kết hợp thông tin từ chính thức

specification đặc điểm kỹ thuật The main problem with the use of a 'home-grown' version

of any language, is that Vấn đề chính với việc sử dụng bất kỳ ngôn ngữ "cây nhà lá vườn một 'của phiên bản, đó là

it is very unlikely that there is likely to be any third party tool support nó là rất không chắcrằng có khả năng được bất kỳ bên thứ ba công cụ hỗ trợ This restricts the user to Điều này hạn chế người sử dụng

the use of the limited tools that are supplied as part of the supporting environment việc sử dụng các công cụ hạn chế được cung cấp như một phần của môi trường hỗ trợ

The use of formal specifications by the system poses problems for the tester Việc sử dụng các thông số kỹ thuật chính thức của hệ thống là vấn đề với người thử việc They require

production of the specifications sản xuất các chi tiết kỹ thuật

Towards the end of the paper, the author discusses whether it is appropriate to model ADTs

in Đến cuối bài báo, tác giả bàn về cho dù đó là thích hợp để mô hình trong ADTs

imperative object-oriented programming languages bắt buộc lập trình hướng đối tượng ngôn ngữ He concludes that it is "not useful to Ông kết luận rằng đó là "không hữu ích choremodel the theoretical notion of an ADT in an imperative [traditional object-oriented] remodel khái niệm lý thuyết của ADT là một trong một [truyền thống] hướng đối tượng bắtbuộc

should be done using separate language constructs nên được thực hiện bằng cách sử dụng ngôn ngữ riêng biệt cấu trúc

Trang 37

Steven P Fiedler in "Object-Oriented Unit Testing" [4], describes the application of a moreSteven P Fiedler trong "Object-Oriented Đơn vị kiểm tra" [4], mô tả các ứng dụng của mộtnhiều hơn

traditional approach phương pháp tiếp cận truyền thống He describes experience gained

on a software project at Hewlett Packard Ông mô tả kinh nghiệm có được trên một dự án phần mềm tại Hewlett Packard

The project applied traditional testing techniques to the testing of software written in C++

Dự án áp dụng các kỹ thuật kiểm tra truyền thống để các thử nghiệm của phần mềm viết bằng C + +

When describing the testing process, the author states: Khi mô tả quá trình thử nghiệm, tác giả tiểu bang:

"Since the paradigm of object-oriented programming emphasises the external behaviour of

"Kể từ khi mô hình của lập trình hướng đối tượng, nhấn mạnh các hành vi bên ngoài của data abstractions rather than the internals, one would only expect to employ only black box,

dữ liệu trừu tượng hơn là ruô ̣t, chỉ có một mong chờ để chỉ sử dụng hộp đen,

functional testing techniques chức năng kiểm tra kỹ thuật However, a more robust testing structure employing complete Tuy nhiên, một thử nghiệm cơ cấu mạnh mẽ hơn sử dụng laođộng hoàn thành

path testing is actually needed." con đường thử nghiệm là thực sự cần thiết "

The McCabe cyclomatic testing method was used to ensure independent path coverage of Các McCabe cyclomatic phương pháp thử được sử dụng để đảm bảo phạm vi bảo hiểm con đường độc lập

methods phương pháp Test cases were derived from the range of values expected by parameters to methods, trường hợp thử nghiệm đã được bắt nguồn từ dãy giá trị dự kiến của tham số cho phương pháp,

boundary analysis of parameter values, and erroneous values to place the unit under stress Ranh giới phân tích các giá trị tham số, và sai lầm để đặt giá trị của đơn vị bị căng thẳng Other test cases were derived from the unit's specification trường hợp thử nghiệm khác đã được xuất phát từ đặc điểm kỹ thuật của các đơn vị

Classes are validated in the order determined from a call graph of the project Lớp học được xác nhận theo trình tự xác định từ một đồ thị cuộc gọi của dự án The classes at Các lớp học tại

the bottom of the graph are validated first, removing the requirement for test driver classes phía dưới của đồ thị được xác nhận đầu tiên, loại bỏ các yêu cầu cho các lớp học lái xe thử nghiệm

which emulate unvalidated parameter classes mà thi đua unvalidated tham số lớp học This

is a similar conclusion to the one reached Đây là một kết luận tương tự như một đạt

earlier in this report trước đó trong báo cáo này

Results from the test runs are verified by simple file comparison with the expected results Kết quả chạy thử nghiệm được kiểm chứng bởi các tập tin đơn giản so sánh với kết quả mong đợi This Điều này

technique is cumbersome because of the time required to generate the expected output exactly kỹ thuật là cồng kềnh vì thời gian cần thiết để tạo ra sản lượng dự kiến sẽ chính xác

Trang 38

However, it is an easier technique to use, rather than to develop self-verifying test cases Tuy nhiên, nó là một kỹ thuật dễ dàng hơn để sử dụng, hơn là để phát triển kiểm tra xác minh các trường hợp tự It is Đó là

suggested that rather than using a team of testing personnel separate from the team of gợi ý rằng thay vì sử dụng một đội ngũ nhân viên thử nghiệm riêng biệt từ đội ngũ

developers, it is more efficient to allow the developers to test the code because of their detailed phát triển, đó là hiệu quả hơn để cho phép các nhà phát triển để kiểm tra mã vì họ chi tiết

knowledge of the internal workings of the unit kiến thức về các hoạt động nội bộ của đơn

vị This decision is likely to be based on the Quyết định này có thể sẽ dựa trên

availability of resources for the testing nguồn lực sẵn có để thử nghiệm However, it has been suggested that although people Tuy nhiên, nó đã được gợi ý rằng mặc dù người dân CDTurner CDTurner

fewer preconceptions about the performance and functionality of the unit under test, and ít định kiến về hiệu suất và chức năng của đơn vị được đo kiểm, và

therefore are more likely to detect errors do đó có nhiều khả năng phát hiện lỗi In [20], Wallace and Fujii imply the separation of the Trong [20], Wallace và Fujii bao hàm sự táchcủa

validation and verification group (who perform the testing) from the development group xác nhận và xác minh nhóm (những người thực hiện các thử nghiệm) từ nhóm phát triển When discussing the testing of classed defined using inheritance, it is stated that the

methods of Khi thảo luận về các thử nghiệm phân loại được xác định bằng cách sử dụng kếthừa, đó là tuyên bố rằng phương pháp

the class that are provided by a parent class only require minimal testing các lớp học được cung cấp bởi một lớp cha mẹ chỉ cần thử nghiệm tối thiểu This is a rather Đây là một thay simplification of the problem concerning the reduction of testing required by derived classes đơn giản hóa vấn đề liên quan đến việc giảm kiểm tra theo yêu cầu của các lớp học

có nguồn gốc

This problem has been addressed in greater depth by the work conducted by MJ Harrold et

al Vấn đề này đã được giải quyết trong chiều sâu lớn hơn do việc đã thực hiện bởi MJ et alHarrold

It is concluded that a significant investment of time is required for the testing described, Đó

là kết luận rằng một đầu tư đáng kể thời gian cần thiết để thử nghiệm các mô tả,

although accurate estimates of time required for the testing were not available, because testing mặc dù số ước lượng chính xác về thời gian cần thiết để kiểm tra không có sẵn, bởi

vì thử nghiệm

and development occurred concurrently và phát triển diễn ra đồng thời Testing methods designed for use with procedural Kiểm tra các phương pháp thiết kế để sử dụng với thủ tục

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

TỪ KHÓA LIÊN QUAN

w