Java сәйкестік сынақ жинағы: JSR ішіндегі маңызды құрал
Technology Compatibility Kit
Java TCK: Java спецификациясын тексеруге арналған тесттер жиынтығы. JSR ратификациясы үшін қажетті құрал. Тестілеу әдісі, мақсаты туралы толық ақпарат.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Технологиялық үйлесімділік жиынтығы (TCK) – бұл Java Specification Request (JSR) ережелеріне сәйкестігін, кем дегенде, формалды түрде тексеруге арналған тесттер жинағы. Java Community Process-те бекітілген JSR үшін қажетті үш құрамдас бөліктің бірі болып табылады: JSR спецификациясы, JSR эталондық іске асырылымы және технологиялық үйлесімділік жиынтығы (TCK).
A Technology Compatibility Kit (TCK) is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request (JSR) for compliance. It is one of the three required pieces for a ratified JSR in the Java Community Process, which are:
the JSR specification
the JSR reference implementation
the Technology Compatibility Kit (TCK)
Мазмұны мен құрылымы
ТКК әдетте белгілі бір ЖЖЖ-ның спецификациялық жетекшісінен алынады. Олар көбінесе (бірақ әрқашан емес) сынақтан өтетін құрылғымен немесе Java виртуалды машинасымен TCP/IP арқылы байланысатын графикалық хост қолданбасынан тұрады. Сынақтар әдетте құрылғы HTTP арқылы алады, ал нәтижелер хост қолданбасына ұқсас тәсілмен қайтарылады. Бұл байланыссыздық ТКК-ны толық ТКК хостын іске асыруға жеткілікті қуаты жоқ CLDC ұялы телефондары сияқты құрылғылардағы виртуалды машиналарын сынау үшін пайдалануға мүмкіндік береді. ЖЖЖ-дегі сынақтар ЖЖЖ спецификациясындағы талаптарға сәйкес жасалған деп есептеледі. Кез келген API-дың, қателік жағдайларын қоса алғанда, күтілгендей жұмыс ілеуін қамтамасыз ету үшін сынақтар жиынтығы болады. Java іске асырылымы белгілі бір ЖЖЖ-ға сәйкес екенін көрсету үшін тиісті ТКК-дан өтуі керек. Кез келген (сирек) ерекшеліктер спецификациялық жетекшімен келісілуі керек. Осы себепті ТКК-ны іске асыру кезінде маңызды рөл атқарады. Бірінші маңызды кезең – ТКК-ны іске қосу, бұл Java іске асырылымы мен негізгі желілік стектің белгілі бір деңгейде дамығанын білдіреді. Содан кейін ТКК дұрыс конфигурациялануы керек, себебі ол кез келген іске асырылыммен жұмыс істеуге жеткілікті икемді болуы керек, көптеген опциялар бар. (Мысалы, JSR135 үшін қолдау көрсетілетін барлық медиа форматтары мен байланысты қосымша басқару элементтерінің тізімін көрсету). Кейбір сынақтарды орнату қажет, бұл қателік жағдайында дұрыс жұмыс ілеуін қамтамасыз ететін сынақтар үшін әсіресе күрделі, себебі Java іске асырылымы әр қатеге себеп болатын дұрыс күйге келтірілуі керек. Соңында, әрбір сәтсіз сынақ түзетілуі керек, бұл әдетте ақауларды қадағалау жүйесі арқылы жүзеге асырылады. Кейбір Java іске асырушылар ТКК-ны сәтті өткеннен кейін өнімдерін толыққанды деп санайды. ТКК өте толық болғанымен, олар қамтымайтын көптеген салалар бар. Оларға өнімділік және қосымша мүмкіндіктер кіреді. Бұл кемшіліктерді жою үшін нақты жағдайда көптеген сынақтар жүргізу қажет, бірақ JDTS сияқты қосымша сынақ жиынтықтары да көмектесе алады.
TCKs tend to be obtained from the Specification Lead of a given JSR. They usually (but not always) consist of a graphical host application which communicates over TCP/IP with the device or Java virtual machine that is under test. Tests are typically obtained by the device over HTTP, and results are posted back to the host application in a similar way. This decoupling enables TCKs to be used to test virtual machines on devices such as CLDC mobile phones which do not have the power to run the full TCK host application. The tests contained in the JSR are supposedly derived from the statements in the JSR specification. Any given API will have a set of tests to ensure that it behaves in the intended way, including in error conditions. In order to state conformance with a given JSR, a Java implementation has to pass the associated TCK. Any (rare) exceptions have to be negotiated with the specification lead. Because of this, TCKs are of great importance when implementing a JSR. The first great milestone is to get the TCK running in the first place, which necessarily involves the Java implementation and underlying networking stack having a certain level of maturity. Next, the TCK must be properly configured because they must be flexible enough to cope with any implementation, there are many options. (For example, listing all the supported media formats and associated optional controls for JSR135). Particular tests also require some setup activity this tends to be particularly complex for the tests which ensure correct behaviour in error conditions, because the Java implementation must be put in the right state to cause each error. Finally, each failing test must be fixed, which is usually handled by the usual defect tracking mechanisms. Some Java implementors consider their product to be mainly complete once the TCKs pass. Whilst it's true that the TCKs are quite comprehensive, there are many areas that they do not cover. These include performance, as well as the optional features. There's no alternative but to do much real world testing to address these shortcomings, although additional test suites such as JDTS may help.
Java платформасы үшін TCK
Белгілі бір Java платформасы үшін Технологиялық үйлесімділік жиынтығы Java үйлесімділік жиынтығы (JCK) деп аталады. Бұл Oracle және лицензия иелері платформаның үйлесімді іске асырылуын қамтамасыз ету үшін пайдаланатын кең ауқымды тест жиынтығы. Java 6.0 коды үшін JCK жарияланды. Қоса берілген лицензия бастапқыда пайдаланушыларға тесттерді құрастыруға немесе іске қосуға рұқсат бермеді, бірақ кодты қарау құқығы бұзылу туралы алаңдаушылықтармен байланысты емес және кодқа қатысты қоғамдық пікірлерге жол беріледі. Java SE 7 спецификациясы үшін OpenJDK Community TCK лицензиялық келісімшарты v 2.0 2011 жылдың желтоқсанынан бері жарияланды.
The Technology Compatibility Kit for a particular Java platform is called Java Compatibility Kit (JCK). It is an extensive test suite used by Oracle and licensees to ensure compatible implementations of the platform. The JCK for Java 6.0 source code has been released. The associated license did not initially allow users to compile or run the tests, but the right to see the code is not associated with tainting concerns, and public comments on the source code are allowed. The OpenJDK Community TCK License Agreement v 2.0 has been published for the Java SE 7 Specification since December 2011.
ТКК-ның негіздемесі
JavaTest құралы қазіргі күні іске асырудың сәйкестігін тексеру үшін қолданылатын ең көп таралған бірлік сынақ аясы болып табылады. Бұл TCK сынақтарын орындауға арналған мақсаты жалпы тестілеу аясы. Дегенмен, кейбір талаптар JUnit немесе TestNG-ді де пайдаланады.
The JavaTest harness tool is today the most common unit testing framework used to verify the implementation compliance. It is a general purpose testing framework designed to run TCK tests. However, some specifications are also using JUnit or TestNG.
Лицензия және даулар
Sun компаниясы OpenJDK-ны шығарғаннан кейін, OpenJDK-дан маңызды үлесте алынған кез келген GPL іске асыру үшін OpenJDK аясында TCK-ны іске қосуға рұқсат беретін арнайы лицензия жариялады. Бұл талап Apache Harmony жобасына Apache лицензиясымен үйлесімді TCK-ны пайдалану құқығын жоққа шығарады. 2010 жылдың 9 қарашасында Apache Software Foundation, егер оларға қосымша шектеулерсіз Harmony үшін TCK лицензиясы берілмесе, Java Community Process-тен шығумен қорқытты. 2010 жылдың 9 желтоқсанында Apache Software Foundation Java SE/EE атқару комитетіндегі өкілдігінен бас тартты.
Subsequent to Sun's release of OpenJDK, Sun released a specific license to permit running the TCK in the OpenJDK context for any GPL implementation deriving substantially from OpenJDK. This requirement denies the Apache Harmony project an Apache License compatible right to use the TCK. On November 9, 2010, the Apache Software Foundation threatened to withdraw from the Java Community Process if they were not granted a TCK license for Harmony without additional restrictions. On December 9, 2010, the Apache Software Foundation resigned its seat on the Java SE/EE Executive Committee.