OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

tag message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Annotated guidelines document


Attached is an annotated version of Stephen's Guidelines document 
(annotations are highlighted in yellow). I think I captured most of what 
we discussed during today's meeting, but please do respond with 
corrections and additions.

Thanks...
{\rtf1\ansi\deff1\adeflang1025
{\fonttbl{\f0\froman\fprq2\fcharset0 Thorndale{\*\falt Times New Roman};}{\f1\fswiss\fprq0\fcharset0 Arial;}{\f2\fswiss\fprq2\fcharset0 Albany{\*\falt Arial};}{\f3\fnil\fprq0\fcharset2 StarSymbol{\*\falt Arial Unicode MS};}{\f4\fnil\fprq0\fcharset2 Symbol;}{\f5\froman\fprq0\fcharset2 Symbol;}{\f6\fmodern\fprq1\fcharset0 Courier New;}{\f7\fnil\fprq0\fcharset2 Wingdings;}{\f8\fswiss\fprq2\fcharset0 Arial;}{\f9\froman\fprq0\fcharset0 Thorndale{\*\falt Times New Roman};}{\f10\fswiss\fprq2\fcharset128 Arial;}{\f11\fswiss\fprq0\fcharset0 Arial;}{\f12\fnil\fprq2\fcharset0 MS Mincho;}{\f13\fnil\fprq2\fcharset0 Tahoma;}{\f14\fnil\fprq0\fcharset0 Tahoma;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue127;\red0\green0\blue255;\red0\green0\blue128;\red255\green255\blue0;\red128\green128\blue128;}
{\stylesheet{\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\snext1 Normal;}
{\s2\sb240\sa120\keepn\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af13\afs28\lang1033\ltrch\dbch\af12\langfe1033\hich\f2\fs28\lang1033\loch\f2\fs28\lang1033\sbasedon1\snext3 Heading;}
{\s3\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\sbasedon1\snext3 Body Text;}
{\s4\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af14\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\sbasedon3\snext4 List;}
{\s5\sb120\sa120\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af14\afs24\lang1033\ai\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\i\loch\f1\fs24\lang1033\i\sbasedon1\snext5 caption;}
{\s6\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af14\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\sbasedon1\snext6 Index;}
{\s7\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\snext1 heading 1;}
{\s8\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\snext1 heading 2;}
{\s9\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\snext1 heading 3;}
{\s10\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033\sbasedon1\snext10 Table Contents;}
{\s11\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ai\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\i\b\loch\f1\fs24\lang1033\i\b\sbasedon10\snext11 Table Heading;}
{\*\cs13\cf0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f4\fs24\lang1033\loch\f4\fs24\lang1033 RTF_Num 2 1;}
{\*\cs14\cf4\ul\ulc0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 Internet link;}
{\*\cs15\cf0\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 Numbering Symbols;}
{\*\cs16\cf0\rtlch\af3\afs18\lang1033\ltrch\dbch\af3\langfe1033\hich\f3\fs18\lang1033\loch\f3\fs18\lang1033 Bullet Symbols;}
}{\*\listtable{\list\listtemplateid1
{\listlevel\levelnfc0\leveljc0\levelstartat4\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat2\levelfollow0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\fi-360\li442}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\fi-360\li524}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\fi-360\li606}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\fi-360\li688}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\fi-360\li770}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\fi-360\li852}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\fi-360\li934}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\fi-360\li1016}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'14\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.\'09.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11\'13;}\fi-360\li1098}}\listid1}
{\list\listtemplateid2
{\listlevel\levelnfc0\leveljc0\levelstartat3\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat2\levelfollow0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\fi-360\li442}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\fi-360\li524}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\fi-360\li606}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\fi-360\li688}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\fi-360\li770}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\fi-360\li852}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\fi-360\li934}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\fi-360\li1016}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'14\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.\'09.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11\'13;}\fi-360\li1098}}\listid2}
{\list\listtemplateid3
{\listlevel\levelnfc0\leveljc0\levelstartat4\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'04\'00.\'01.;}{\levelnumbers\'01\'03;}\fi-360\li393}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\fi-360\li426}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\fi-360\li459}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\fi-360\li492}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\fi-360\li525}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\fi-360\li558}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\fi-360\li591}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\fi-360\li624}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'14\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.\'09.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11\'13;}\fi-360\li657}}\listid3}
{\list\listtemplateid4
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li720}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li1440}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li2160}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li2880}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li3600}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li4320}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li5040}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9675 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li5760}
{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9632 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li6480}
{\*\soutlvl{\listlevel\levelnfc23\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u9679 ?;}{\levelnumbers;}\f3\fs18\f3\fs18\f3\fs18\f3\fi-360\li7200}}\listid4}
{\list\listtemplateid5
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360}
{\listlevel\levelnfc0\leveljc0\levelstartat3\levelfollow0{\leveltext \'03\'00.\'01;}{\levelnumbers\'01\'03;}\fi-360\li442}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'06\'00.\'01.\'02.;}{\levelnumbers\'01\'03\'05;}\fi-360\li524}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'08\'00.\'01.\'02.\'03.;}{\levelnumbers\'01\'03\'05\'07;}\fi-360\li606}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0a\'00.\'01.\'02.\'03.\'04.;}{\levelnumbers\'01\'03\'05\'07\'09;}\fi-360\li688}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0c\'00.\'01.\'02.\'03.\'04.\'05.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\fi-360\li770}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'0e\'00.\'01.\'02.\'03.\'04.\'05.\'06.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\fi-360\li852}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'10\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\fi-360\li934}
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'12\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\fi-360\li1016}
{\*\soutlvl{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'14\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08.\'09.;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11\'13;}\fi-360\li1098}}\listid5}
{\list\listtemplateid6\listsimple
{\listlevel\levelnfc0\leveljc0\levelstartat1\levelfollow0{\leveltext \'01\u183\'45;}{\levelnumbers;}\f4\fi-360\li360}{\listname RTF_Num 2;}\listid6}
}{\listoverridetable{\listoverride\listid1\listoverridecount0\ls0}{\listoverride\listid2\listoverridecount0\ls1}{\listoverride\listid3\listoverridecount0\ls2}{\listoverride\listid4\listoverridecount0\ls3}{\listoverride\listid5\listoverridecount0\ls4}{\listoverride\listid6\listoverridecount0\ls5}}

{\info{\creatim\yr2008\mo1\dy23\hr10\min33}{\revtim\yr1601\mo1\dy1\hr0\min0}{\printim\yr1601\mo1\dy1\hr0\min0}{\comment StarWriter}{\vern6800}}\deftab360
{\*\pgdsctbl
{\pgdsc0\pgdscuse195\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\pgdscnxt0 Standard;}}
{\*\pgdscno0}\paperh15840\paperw12240\margl1800\margr1800\margt1440\margb1440\sectd\sbknone\pgwsxn12240\pghsxn15840\marglsxn1800\margrsxn1800\margtsxn1440\margbsxn1440\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
\pard\plain \ltrpar\s1\cf0\sl100\slmult0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa240\brdrt\brdrs\brdrw1\brdrcf1\brsp20{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp20\rtlch\af1\afs48\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs48\lang1033\b\loch\f1\fs48\lang1033\b {\rtlch \ltrch\loch\f1\fs48\lang1033\i0\b Test Assertions Guidelines draft 0.3}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa240\brdrt\brdrs\brdrw1\brdrcf1\brsp20{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp20\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b Draft}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa240\brdrt\brdrs\brdrw1\brdrcf1\brsp20{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp20\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 1 January 2008}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b This Version:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/apps/group_public/download.php/26717/TestAssertionsGuidelines-draft-0-3.doc}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Previous Version:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/apps/group_public/download.php/26691/TestAssertionsGuidelines-draft-0-2.doc}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Latest Version:}
\par \pard\plain \ltrpar\s1\cf3{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 http://www.oasis-open.org/apps/group_public/download.php/26717/TestAssertionsGuidelines-draft-0-3.doc  }
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Latest Approved Version:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 N/A}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Technical Committee:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 OASIS Test Assertions Guidelines (TAG) TC}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Chair(s):}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Patrick Curran, Sun Microsystems}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Jacques Durand, Fujitsu}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Editor(s):}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Stephen Green, SystML}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa80\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Contributors: add from the {\i Acknowledgements} Appendix}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Related work (move to a References Appendix)}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 This specification is related to:}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Conformance Requirements for Specifications v1.0, (OASIS, Conformance TC, June 2001), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/committees/download.php/305/conformance_requirements-v1.pdf}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 White Paper: Conformance Testing and Certification Framework, }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/committees/download.php/309/testing_and_certification_framework.pdf}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test Assertion Guideline draft, }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/committees/document.php?document_id=20661&wg_abbrev=ebxml-iic}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 QA Framework: Specification Guidelines (W3C, November 2004), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.w3.org/TR/qaframe-spec/}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test Assertion Guide (W3C Editors' Draft, 2006), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.w3.org/2006/03/test-assertion-guide}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test Development FAQ, WG note (W3C, 2005), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.w3.org/QA/WG/2005/01/test-faq}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Variability in Specifications, WG note (W3C, 2005), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.w3.org/TR/2005/NOTE-spec-variability-20050831/}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain {\listtext\pard\plain \li1440\ri0\lin1440\rin0\fi-360\sa80\cf1\fs20\fs20\fs20\f4 \tab}\ilvl0 \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li1440\ri0\lin1440\rin0\fi-360\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test Metadata, QA Interest Group note, (W3C, September 2005), }
\par \pard\plain {\listtext\pard\plain \li3240\ri0\lin3240\rin0\fi-360\sa80\tx1440\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li3240\ri0\lin3240\rin0\fi-360\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.w3.org/TR/2005/NOTE-test-metadata-20050914/}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1  }}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Abstract:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 This documents specifies guidelines and best practices for writing test assertions along with mandatory and optional components of a test assertion model.}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Status:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 This document was last revised or approved by the Test Assertions Guidelines Technical Committee on the above date. The level of approval is also listed above. Check the "Latest Version" or "Latest Approved Version" location noted above for possible later 
revisions of this document.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1 Technical Committee members should send comments on this {\chcbpat5\cf0 specification }to the Technical Committee\'92s email list. Others should send comments to the Technical Committee by using the \'93Send A Comment\'94 button on the Technical Committee\'92s web page at }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.
oasis-open.org/committees/tag}{\cf1 /.}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1 For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page (}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 htt
p://www.oasis-open.org/committees/tag}{\cf1 /ipr.php.}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1 The non-normative errata page for this specification is located at }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf3 http://www.oasis-open.org/committees/tag}{\cf1 /.}}
\par \pard\plain \ltrpar\s1\cf3{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 .}
\par \page\pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sa240\brdrt\brdrs\brdrw1\brdrcf1\brsp20{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp20\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b Notices}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Copyright \'a9 OASIS\'ae 2007-2008. All Rights Reserved.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restr
iction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OA
SIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate 
it into languages other than English.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGH
TS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indica
tion of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a licen
se to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such ri
ghts might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be 
found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by 
implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that
 any claims in such list are, in fact, Essential Claims.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 The names "OASIS", [insert specific trademarked names and abbreviations here] are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to
, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see {\cf3 http://www.oasis-open.org/who/trademark.php} for above guidance.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \page\pard\plain \ltrpar\s1\cf2\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b Table of Contents}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 1  Introduction\tab 7}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Terminology\tab 7}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Normative References\tab 7}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Non-normative References\tab 7}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 2  Rationale\tab 9}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 What is a Test Assertion?\tab 9}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Benefits of Test Assertions\tab 10}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Coverage Analysis\tab 10}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 3  Basic Design Principles\tab 12}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 What is in a Test Assertion?\tab 12}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li480\ri0\lin480\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 A More Complex Case\tab 13}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Optional Elements of a Test Assertion\tab 15}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li480\ri0\lin480\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test Assertion Prerequisites\tab 16}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The Case of Normative Optional Statement\tab 19}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 4  Advanced Assertions (complex features)\tab 21}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 General Guidelines for Creating Test Assertions\tab 21}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li480\ri0\lin480\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Testability\tab 22}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Referring to Specifications\tab 23}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Grouping\tab 24}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Classifications\tab 25}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Sequences of Test Assertions \tab 25}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Adding More Structure to Test Assertions\tab 26}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Prerequisites in Test Assertions\tab 27}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li240\ri0\lin240\rin0\fi0\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch   }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Advanced Test Assertions\tab 27}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9120{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 5. {\chcbpat5 Summary}}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 6  {\chcbpat5 Glossary}\tab 29}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 A.  {\chcbpat5 Acknowledgements (goes away)}\tab 30}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 B.  {\chcbpat5 Non-Normative Text (we probably don't need this section)}\tab 31}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 C.  {\chcbpat5 Revision History}\tab 32}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 D. {\chcbpat5 References}}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 E. {\chcbpat5 Prior Art}}
\par \pard\plain \ltrpar\s1\cf0\tldot\tqr\tx9360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb60\sa60\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 F. {\chcbpat5 Best Practices (tagged and extracted from the body of the text).}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb480\sa120\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 1\tab Introduction}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [All text is normative unless otherwise indicated.] {\chcbpat5 Remove this \'96 not appropriate for a Guidelines document.}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Insert here info explaining the scope/purpose of this document. Not intended to be an OASIS standard. Guidelines/best practices only. Who's the audience for the document?}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Tim to draft this.}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx600\tx1080\tx1200{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li600\ri0\lin600\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 1.1\tab Terminology}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in IETF RFC 2119 .}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 If this isn't a spec then we don't need this section.}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 1.2\tab Normative References}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2160\ri0\lin2160\rin0\fi-1800\sb40\sa40\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b\fs20{\cf1{\b [RFC 2119]}}}{\cf1{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 \tab S. Bradner. {\i Key words for use in RFCs to Indicate Requirement Levels}. IETF RFC 2119, March 1997. }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\field{\*\fldinst HYPERLINK "http://www.ietf.org/rfc/rfc2119.txt"; }{\fldrslt \*\cs14\cf4\ul\ulc0\rtlch\ltrch\dbch\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf3 http://www.ietf.org/rfc/rfc2119.txt}}}{\cf1 .}}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2160\ri0\lin2160\rin0\fi-1800\sb40\sa40\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Remove this?}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2160\ri0\lin2160\rin0\fi-1800\sb40\sa40\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain {\listtext\pard\plain \li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\fs28\fs28\fs28\tx432\tx576\tx1080 1.\tab}\ilvl0 \ltrpar\s8\cf0\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls4\li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\loch\f1\fs28\lang1033{\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b\b\cf2 Non-normative References}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Remove this?}
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb480\sa120\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 2\tab Rationale}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 2.1\tab What is a Test Assertion?}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs21\lang1033\ltrch\dbch\af1\langfe1033\hich\f10\fs21\lang1033\loch\f10\fs21\lang1033{\rtlch \ltrch\loch\f10\fs21\lang255\i0\b0\lang255 Why bullets? Each is a separate concept/idea that we need to capture somewhere. Beware turning into text too soon, or deleting. Capture everything on the Wiki before we do so?}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 A test assertion (TA) is a statement of behavior, action or condition that can be measured or tested. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Each is an independent, testable statement of requirements in the specification(s). }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Assertions are derived from the specification and can be mapped to it. }}
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 In the simplest case, an assertion may simply consist of text from within the specification. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Assertions provide a normative foundation from which one or more test cases can be built. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Several test assertions may be needed to cover a single requirement. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 One test assertion may cover several requirements. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Requirements covered may belong to more than one specification. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Sometimes an assertion is included which is not testable: }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 it acts as a placeholder to represent a requirement not considered testable }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 it should be clear that testing of this assertion is not expected }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx681{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f }}{{\rtlch \ltrch\loch\f10\fs18\lang255\i0\b0\f10 What a test assertion is not:}}
\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\f10\fs18\lang255\f7\fs18\f7\fs18\tx360\tx681\f3\fs18\f3\fs18\f3\fs18 \u9679\'3f\tab}\ilvl0 \ltrpar\s1\cf0\tx360\tx681{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls3\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af7\afs18\lang1033\ltrch\dbch\af7\langfe1033\hich\f10\fs18\lang255\loch\f10\fs18\lang255 {\rtlch \ltrch\loch\f10\fs18\lang255\i0\b0 Not  test metadata, which can supplement an assertion (eg, is it testable), and which can provide a bridge between {\fs20  assertion(s) and test(s). }}
\par \pard\plain {\listtext\pard\plain \li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\f10\fs20\lang255\f7\fs20\f7\fs20\tx360\tx681\f3\fs18\f3\fs18\f3\fs18 \u9675\'3f\tab}\ilvl1 \ltrpar\s1\cf0\tx360\tx681{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls3\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af7\afs20\lang1033\ltrch\dbch\af7\langfe1033\hich\f10\fs20\lang255\loch\f10\fs20\lang255 {\rtlch \ltrch\loch\f10\fs20\lang255\i0\b0 Need more explanation here.}
\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\tx360\tx681\f3\fs18\f3\fs18\f3\fs18 \u9679\'3f\tab}\ilvl0 \ltrpar\s1\cf0\tx360\tx681{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls3\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f10\fs20\lang255\i0\b0\lang255\fs20\f10 Not a conformance clause}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Test assertions occupy a lower level to a conformance clause and may be referred to in such clauses. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 The relationship of test assertions to conformance clauses is as follows: }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2134{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Conformance clauses }}
\par \pard\plain \ltrpar\s1\cf0\tx2520\tx2841{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 group together statements about specification information such as }}
\par \pard\plain \ltrpar\s1\cf0\tx3240\tx3548{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li3240\ri0\lin3240\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 which parts of the specification are normative or informative }}
\par \pard\plain \ltrpar\s1\cf0\tx3240\tx3548{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li3240\ri0\lin3240\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 the use of keywords such as MUST, SHOULD, MAY, etc. }}
\par \pard\plain \ltrpar\s1\cf0\tx2520\tx2841{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 may take the form of compatibility requirements which run into pages and may include details such as }}
\par \pard\plain \ltrpar\s1\cf0\tx3240\tx3548{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li3240\ri0\lin3240\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 which parts of the specification must be implemented for certain conformance levels }}
\par \pard\plain \ltrpar\s1\cf0\tx2520\tx2828{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 whether subsets or supersets may be implemented }}
\par \pard\plain \ltrpar\s1\cf0\tx2520\tx2828{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 whether a particular test harness must be used for testing. }}
\par \pard\plain \ltrpar\s1\cf0\tx2520{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Test assertions are typically presented as lists of singular, atomic statements more limited in scope and purpose. }}
\par \pard\plain \ltrpar\s1\cf0\tx2520{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li2520\ri0\lin2520\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 A conformance clause rule might make reference to one or many test assertions, the test assertions being analogous to leaves on a tree of which the conformance clauses are the main trunk and branches.}}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 2.2\tab Benefits of Test Assertions}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx707{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Test Assertions improve specification quality by helping to uncover inconsistencies, ambiguities, gaps, and non-testable statements in the specification especially around corner cases and exception conditions. This then provides for a tighter specificati
on. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 If not developed by the specification authors, test assertions should be reviewed and approved by them. }
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Best results are achieved when assertions are developed in parallel with the specification. This improves quality and time-to-deployment of specifications. }
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 On the other hand, writing a set of test assertions can be the best starting point for a testing team to write a test suite for a specification. }
\par \pard\plain \ltrpar\s1\cf0\tx360\tx707{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Test assertions: }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Facilitate and promote the development of conformance tests and testing tools. }
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Encourage the early development of conformance tests that can be used during implementation. }
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Simplify the distribution of the test development effort between different organizations while maintaining consistent test quality. }
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Improve confidence in the resulting tests as a measure of conformance. }
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs20\lang255\i0\b0\fs20{\f6{\lang255 o}}}{\f6{\rtlch \ltrch\loch\f6\fs20\lang1033\i0\b0\fs20 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 Enable coverage analysis (estimating the extent to which the specification is tested). }
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 2.3\tab Coverage Analysis}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af8\afs18\lang1033\ltrch\dbch\af8\langfe1033\hich\f8\fs18\lang255\loch\f8\fs18\lang255 {\rtlch \ltrch\loch\f8\fs18\lang255\i0\b0 Patrick to combine this into the benefits section above}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Partition the specification - }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 by feature, language elements, logical sections, or even paragraphs or pages. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Define coverage goals for each section. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 What test-development resources are available? }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 How critical is it that each section is thoroughly tested? }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2121{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Consequences for incompatible implementations due to low test coverage? }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 For each partition, provide a mapping between testable assertions and test coverage. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Measure or estimate the extent to which each area of the specification has been tested. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Coverage measurements can be expressed in both breadth and depth terms. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Breadth measurements are relatively simple to derive. }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2121{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 What percentage of assertions are covered by at least one test? }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Depth measurements are more subjective. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Estimate how thoroughly each assertion is tested. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Different coverage goals for different areas of the specification may be appropriate. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 First cover each feature at a minimal level (breadth-first). }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Then focus on providing deeper coverage }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2121{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 in areas that are more difficult to implement, }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2121{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 where incompatible implementations are more likely, }}
\par \pard\plain \ltrpar\s1\cf0\tx1800\tx2121{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1800\ri0\lin1800\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61607\'3f}}{{\rtlch \ltrch\loch\af\f7\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 where the consequences of incompatibility will be more severe. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Provide a coverage report with the test suite. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 At a minimum, a simple mapping of tests to areas of the specification. }}
\par \pard\plain \ltrpar\s1\cf0\tx1080\tx1414{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Preferably include counts and averages of the number of tests associated with different areas. }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Coverage reports help users of the test suite understand its strengths and weaknesses. }}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1131\ri0\lin1131\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1131\ri0\lin1131\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb480\sa120\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 3\tab Basic Design Principles}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Add a section here at the beginning of this material covering \'93best practices\'94/design principles?}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Or, embed within the existing material in this section?}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Or, put them after this section?}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 For example, where does the \'93keep your assertions simple\'94 material from the next section belong?}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 3.1\tab What is in a Test Assertion?}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 A test assertion must always:}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\cf1{\fs20 Be identified by a globally unique test assertion identifier (TA id). This facilitates tools development and the mapping of assertions to specification statements.}}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\cf1{\fs20 Refer to the precise specification requirement(s) or normative statement(s) that it addresses.}}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\cf1{\fs20 Identify a test assertion target (or TAT). Such a target is an implementation or a part of an implementation of the referred specification. What is usually defined as a test assertion target is in fact a category of targets of similar type that are all s
ubject to this test assertion.}}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs18\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\cf1{\fs20 Define a predicate asserting the feature (a behavior or a property) described in the referred specification statement (s). If the predicate evaluates to \'93true\'94 over the test assertion target, this means that the target exhibits the feature. \'93False\'94 means
 the target does not exhibit the feature.}}}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i\b\fs20\cf1{\i{\b Editor Note}}}{\i{\rtlch \ltrch\loch\f1\fs20\lang1033\i\b0\fs20\cf1 : I suggest that we bring-up the variant of \'93negative tests\'94  where the \'93feature\'94 measured by the predicate is in fact a non-conformance case, later in this section, with an appropriate example}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 .}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Example: consider the following requirement from a specification on \'93widgets\'94: }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [requirement 100] \'93A widget MUST be of rectangular shape\'94.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The following test assertion is addressing this requirement:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA100}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : \'93widget specification\'94, requirement 100}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] is of rectangular shape}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #1}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 :  The assertion predicate is worded as an assertion, not as a requirement (the 'MUST' keyword is absent). It has a clear Boolean value: either the statement is true, or it is false for a particular target. The case of how to write a predicat
e for specification statements that convey optionality (e.g. using keywords SHOULD, MAY, etc.) is examined later.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 In an actual TA definition, the above four properties (numbered 1 to 4) are often explicitly represented as four elements of the TA: {\i identifier, reference, target class, predicate} as in our example. However, a concrete representation of a TA may omit some 
of these elements provided they are implicit. Some common cases of implicit TA components are:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20\cf1 Implicit target: when several test assertions relate to the same target class, the latter may be described just once as part of the context where the TAs are defined, so that it does not need to be repeated. {\i Example: all TAs related to requirements about
 the message envelope in a protocol specification, may be grouped in the section \'93message envelope requirements\'94, suggesting that they share the same message envelope target}.  }}
\par \pard\plain \ltrpar\s1\cf0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\cf1{{\rtlch \ltrch\loch \u61623\'3f}}}{{\cf1{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20\cf1 Implicit predicate: in some specifications where all requirements follow a similar pattern, it is often possible to straightforwardly derive the assertion predicate from a requirement \'96 e.g. using a simple rule - so that the predicate does not need to be
 explicitly stated every time. {\i Example: consider an API specification where all requirements are of the kind \'93when given argument values A and B, the API function F MUST return a result R that satisfies property P\'94. Such requirements are very close to a pr
edicative form like: (F(A,B) returns R) AND (R satisfies P)}. {\i Deriving the latter from the former is simply a matter of applying simple rules such as \'93replace \'91MUST do\'92 by: \'91does\'92, and similarly with any verb other than \'91do\'92 .\'94}}}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Note: in many cases, there is no need to use a sophisticated test assertion structure. When there are a very large number of assertions to be created from a large specification it may be that most assertions can just be copied from the specification statem
ents verbatim. However, there may need to be rewording when the normative statement is optional and there may need to be special consideration in doing this when further statements depend on whether such optional features are implemented. }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s9\cf2\tx432\tx576\tx720\tx1080\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi-720\sb240\sa120\keepn\rtlch\af1\afs26\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs26\lang1033\b\loch\f1\fs26\lang1033\b {\rtlch \ltrch\loch\f1\fs26\lang1033\i0\b 3.1.1\tab A More Complex Case}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Consider now the following statement in the widget specification: }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [requirement 101] \'93A widget of medium size MUST use exactly one AA battery and have a red button on top.\'94}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 There are actually two requirements here that can be tested separately:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 1-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 (requirement 101, part 1) A medium-size widget MUST use exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 2-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 (requirement 101, part 2) A medium-size widget MUST have a red button on top.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Because of this it is possible to write two test assertions:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : medium-size widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA2}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : medium-size widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 101, part 2}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] has a red button on top.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Several observations can be made on the previous example.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #2}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 :  The granularity of a test assertion is an arbitrary decision. A single TA instead of two could have been written here, with the predicate: \'93the widget uses exactly one AA battery AND has a red button on top\'94.  This choice may later have an
 impact on the outcome of a test suite written for verifying the conformance of widgets: with a single TA, a test case derived from this TA will not be expected to distinguish between the two failure cases. Using two TAs - one for each sub-requirement - wi
ll ensure that a test suite can assess and report independently about the fulfillment of each sub-requirement. Other considerations such as the different nature of tests implied, the reuse of a TA in different conformance profiles, may also lead to the ado
ption of \'93fine-grained\'94 instead of \'93coarse-grained\'94 test assertions. Other advantages of fine-grained TAs are described later. Usage considerations will dictate the best choice here.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #3}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : The target is defined here as \'93medium-size widget\'94. It could have been defined as just \'93a widget\'94. This would have been a natural decision if the specification requirement had been worded as: \'93[requirement 101] If a widget is medium size, t
hen it MUST use exactly one AA battery and have a red button on top.\'94 In this case we could have had instead of the test assertion \'93widget-TA1\'94 (and similarly for widget-TA2):}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA1b}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : if [the widget] is medium-size, then [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The target class is now broader, but the predicate part is really of interest only for a subset of this class (the medium-size widgets). Usage considerations should again drive the decision here: a test suite that is designed for verifying all widgets, and
 does not assume a prior classification of these in small / medium / large sizes, would be better off with TAs that only use \'93widget\'94 as target, such as widget-TA1b. (Note that from a logical viewpoint, the above predicate value is still \'93true\'94 for widgets
 that are NOT medium size, meaning the addressed requirement is technically fulfilled, in spite of its irrelevance.) On the other hand if all targets have been classified according to their claimed size, then a test case implementing widget-TA1b will usele
ssly repeat the \'93size\'94 test.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20{\cf1 Note: {\lang2057 As an important part of the test assertion, even when the target is implicit, not explicit, it must be that the target for each assertion is clearly identifiable. }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\fs20{\lang2057  }}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #4}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : The predicate is worded in an abstract way, still close to the wording of the specification. No indication is given on what kind of test procedure will be used (how to determine the number and type of batteries, etc.), nor on the detailed c
riteria for the condition evaluation (e.g. what kind of red pigments are acceptable to determine a \'93red\'94 color.)  Such details are normally left to the test cases that can be derived from above test assertions. These test cases will determine the precise c
riteria for conforming to the specification. However, if a precise criterion for interpreting the \'93red\'94 color requirement is provided in an external specification - either referred directly by the widget specification or by a related conformance clause - t
hen a TA must use this criterion in its predicate. Such a TA must then refer not only to the specification requirement in its reference property, but also to the external specification or to the conformance clause that refers to this specification.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain {\listtext\pard\plain \li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\cf2\fs28\b\fs28\b\fs28\b\tx432\tx576\tx1080 3.\tab}\ilvl0 \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls1\li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b Optional Elements of a Test Assertion}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Much of this seems to belong in the Advanced section}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The previous section describes mandatory properties for a Test Assertion. Other properties may be present that are optional. }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Other optional elements include:}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 Target classifications \'96 classes and subclasses of targets. These may typically be defined in a header section or perhaps in a separate document. I{\lang2057 n some cases every relevant test assertion target would be identified for a set of test assertions and these 
targets listed together with enumerated or coded values. Individual assertions would then reference the respective relevant code value by stating 'applies to: ...'. This lends the opportunity to classify the targets and identify where one is a subclass of 
another. }}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\cf1\fs20\fs20\fs20\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Prerequisites. See section below.}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\cf1\fs20\fs20\fs20\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Qualifiers such as 'Preconditions'. These are conditional expressions which further qualify the test assertion target or the assertion of its properties or behaviors (such as "if ... then ..." for properties and \'93when ... then ...\'94 for behaviors). They eva
luate to true or false and if false then the assertion is to be considered 'not applicable'. In the following example}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 \tab {\ul\ulc0 TA id}: widget-TA1b}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : if [the widget] is medium-size, then [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The Predicate includes a precondition \'91if [the widget] is medium-size then\'92 which could be stated separately}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA1b}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Precondition}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : if [the widget] is medium-size then}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\cf1\fs20\fs20\fs20\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Groupings. There may be several distinct ways to group test assertions, such as by class of target. This may provide indispensable value to testers in identifying those assertions that cover a class of target or where dependencies might exist between one t
est and another. In particular, for variability of specifications such as where modules, profiles or conformance levels are defined, grouping may take on further significance and value. One way to facilitate this is to attach coded tags or keywords to asse
rtions or targets and define these and explain their significance and use, perhaps, again, in a header or separate document. Another example is to use a scheme in naming the test assertions of test assertion targets.}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\cf1\fs20\fs20\fs20\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Sequences. Typically the test assertion identifiers will follow a logical sequence and this may have special significance. For example, the sequence might follow the sequence of the relevant statements in the specification, which may in turn follow a gradu
al development of the theme or logic of the technology. It may be of value to explicitly define the scheme which the identifiers follow, again perhaps in a header section or accompanying document for the test assertions. }
\par \pard\plain \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s9\cf2\tx432\tx576\tx720\tx1080\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi-720\sb240\sa120\keepn\rtlch\af1\afs26\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs26\lang1033\b\loch\f1\fs26\lang1033\b {\rtlch \ltrch\loch\f1\fs26\lang1033\i0\b 3.2.1\tab Test Assertion Prerequisites}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The previous Test Assertion - addressing requirement 101 of the widget specification \'96 only applies to medium-size widgets. Let us assume that there are other requirements that define what \'93medium-size\'94 means. In other words, the classification of widgets 
according to small / medium / large is not an obvious one: there is no sticker on the widgets (yet). Instead, it is a property that is itself defined in the widget specification and that is subject to verification, like the other properties.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 In such a case, when writing test assertions, it is not a good idea to consider this property as part of the definition of the target class as we did in widget-TA1 and widget-TA2, because the class of a widget could not be identified prior to doing any tes
t on this widget.  However, we must make it clear that test assertions widget-TA1 and widget-TA2 are to be exercised ONLY on those widgets that have been proved to be medium-size. This is done by stating a prerequisite to these TAs.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Assume that the following requirement defines the \'93medium-size\'94 property:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [requirement 102] \'93A widget that weights between 100g and 300g and is from 5 to 15 centimeters long in its longer dimension, is a medium-size widget.\'94}
\par \pard\plain \ltrpar\s1\cf1\tx5935{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 \tab }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 There is a major distinction between requirement 102 and requirement 101: }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 3-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 requirement 101 uses \'93medium-size\'94 as a prerequisite: its predicates only concern widgets that are already established as being medium-size.}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 4-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 requirement 102 defines how to qualify as medium-size.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The test assertions for requirement 102 can be written as:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA3}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 102, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] weights between 100g and 300g.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA4}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 102, part 2}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] is from 5 to 15 centimeters long in its longer dimension.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #5}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 :  Requirement 102 is a normative statement of a different kind to requirement 101: it does not make use of keywords such as MUST. Instead, it defines a property. It is a rule of the kind: \'93if (the widget satisfies the condition C) then (the 
widget exhibits property P)\'94 where P cannot be verified separately from C. For a target, fulfilling this requirement does not have the same meaning as fulfilling requirement 101. Fulfilling R-102 means the target exhibits a property (that it is not necessa
rily required to exhibit), while fulfilling R-101 means the target adheres to the specification itself. In our case, a predicate value of \'93false\'94 for R-102 simply means the target is not medium-size, while \'93false\'94 for R-101 means the target violates the sp
ecification. However, this difference in outcome interpretation does not affect the way the TAs are written: in both cases the focus is exclusively on the feature to be measured. }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Observation #6}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : There is no mention of the \'93medium-size\'94 property at all in the predicates of test assertions \'91widget-TA3\'92 and \'91widget-TA4\'92. This is because this property is precisely what needs to be established by a test suite containing test cases that 
are derived from these TAs. Only when a target (here a widget) evaluates to \'93true\'94 for these two TAs, will it be considered as medium-size. These TAs are only concerned with the nature of these tests, not with how to interpret their outcome.  }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Now that we have a means to establish the \'93medium-size\'94 property, we can use it to qualify targets for the requirement 101. This is done by adding a \'93prerequisite\'94 component to widget-TA1 and widget-TA2 and rewrite them respectively as:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA1c}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Prerequisite}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA3 AND widget-TA4}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA2c}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 101, part 2}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Prerequisite}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA3 AND widget-TA4}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] has a red button on top.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The Prerequisite can be construed as a precondition used to qualify the target, prior to evaluating the predicate of the TA. The Prerequisite is itself a predicate that evaluates to \'93true\'94 or \'93false\'94. When a Prerequisite is quoting another TA as above, suc
h a reference must be understood as a substitute for the Predicate of the referred TA (assuming it has same target). The possible outcomes of a TA with prerequisite become:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 5-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 If the Prerequisite evaluates to \'93false\'94, then the Test Assertion does not even apply (or its outcome can be stated as \'93Non Applicable\'94). A test case derived from this TA should not even be executed on this target: the result of doing so would be meanin
gless.}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 6-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 If the Prerequisite evaluates to \'93true\'94, and the TA Predicate evaluates to \'93true\'94, then the target is exhibiting the feature described in the addressed specification requirement.}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\af\f5\fs20\lang255\i0\b0\fs20\cf1{\af\f5{\lang255 7-}}}{\af\f5{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0\fs20\cf1 \tab }}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 If the Prerequisite evaluates to \'93true\'94, and the TA Predicate evaluates to \'93false\'94, then the target is NOT exhibiting the feature described in the addressed specification requirement.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The Prerequisite could have been stated as an explicit predicate in widget-TA1c and widget-TA2c, i.e. widget-TA1c could have been rewritten as:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA1d}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification requirement 101, part 1}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Prerequisite}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] weights between 100g and 300g AND [the widget] is from 5 to 15 centimeters long in its longer dimension.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] uses exactly one AA battery.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 widget-TA1d is semantically equivalent to widget-TA1c. However, because the notion of \'93medium-size\'94 is itself specified as a property that is subject to verification and enforcement, it is useful to write test assertions for this property. It is then prefe
rable to reuse such test assertions as prerequisites whenever this property is assumed. If the notion of medium-size evolves in future releases of the widget specification, a TA such as widget-TA1c does not need to be altered: only its prerequisite TA need
s to be, while all TAs that explicitly state the prerequisite predicate - as widget-TA1d does - would need be updated.}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 3.3\tab The Case of Normative Optional Statement}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 All the requirements used so far in the widget specification have a mandatory character: they are absolute requirements using the keyword MUST [RFC 2119]. Even if requirement 102 does not use any keyword for indicating the requirement level, it is a \'93defin
ition statement\'94, describing a sufficient condition for establishing the \'93medium-size\'94 property, as explained in Observation #5\'94.\tab }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Interpreting the outcome of such TAs is then straightforward. Test cases derived from such TAs can make a clear statement of conformance to the specification for the target under test: }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 (TA predicate = \'93true\'94) means not only that the target exhibits the specified feature of the specification, but also that the target fulfills a specification requirement, since this feature is required.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 However there might be several ways to conform to a specification, also known as dimensions of variability. While both conforming, two implementations may not exhibit the same features. This section considers one of the most obvious cases of variability: o
ptional features.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 What if the specification statement is optional, i.e. uses RFC keywords SHOULD / RECOMMENDED or MAY / OPTIONAL?}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Examples:  }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [statement 103] \'93It is RECOMMENDED for a widget to be waterproof.\'94}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [statement 104] \'93A widget MAY have a metallic casing.\'94}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Such (normative) statements cannot be construed as formal requirements \'96 a widget will not fail to conform to the specification if it is not waterproof, or if it has a plastic casing. But establishing conformance is not the sole objective of test assertion
s. Some test suites are intended to evaluate the capabilities of an implementation \'96 e.g. which options it implements - regardless of conformance considerations. Even with a conformance objective in mind, a clear separation must be made between:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 - (a) Describing under which condition a target can be said to exhibit a specified feature. This is the role of a TA.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 - (b) Deciding if a target satisfies a conformance criterion. This is the role of one or more test cases that interpret the outcome of a TA.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch  }{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Therefore, test assertions can be written for such statements 103 and 104, simply by ignoring the RFC keywords in use, and by focusing on the specified feature and its related predicate:}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA103}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification statement 103}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] is waterproof.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 TA id}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget-TA104}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Target}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : widget}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Reference}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : specification statement 104}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20\cf1 : [the widget] has a metallic casing.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 How the TA predicate value (true/false) is to be interpreted \'96 e.g. \'93false\'94 may be interpreted differently depending on the level of conformance being considered \'96 is not the concern of the person writing the test assertion. }
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 However, as previously mentioned, a TA may be written for a specific conformance clause. For example, a conformance clause may define a mandatory degree of \'93waterproofing\'94 (or refer to an external definition) as withstanding an immersion of 3 feet under wa
ter level \'96 but not 50 feet. In that case the TA must explicitly refer to this conformance clause item in addition to the specification statement, and it must reflect this specific waterproof definition in its predicate.}
\par \pard\plain \ltrpar\s1\cf1{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb480\sa120\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 4\tab A More Complete Test Assertion Anatomy }
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Much of the material in 4.1 and 4.2 is relatively elementary, and should be moved up into the previous section. However, some of the detail here may be more appropriate for the Advanced section. How to deal with this?}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.1\tab General Guidelines for Creating Test Assertions}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 A test assertion should }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 be a simple, atomic statement }}}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 address one feature at a time. }}}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Keep each assertion as simple as possible. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Multiple, single-feature assertions are easier to test than complex, multi-part assertions. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Simple test assertions make it easier to identify the cause of test failures and to exclude buggy tests.}}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 The previous bullets seem to be \'93how to\'94 or \'93best practice\'94 material. Should be presented after the basics are covered, but doesn't seem to belong in this Advanced section. Do we need a \'93how to\'94 section in between the previous one and this, or should such 
material be put at the end of the previous section?}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Most of the other \'93howto\'94 material in this section is associated appropriately with descriptive material. This \'93keep it simple\'94 stuff, however, seems to be an orphan. }
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Include version information in the test assertion identifier and in references to the specification. {\chcbpat5 (this does seem to be an advanced notion)}}}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs24\lang255\i0\b\b\lang255 Best Practice{\f9 : }}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 When rewording an optional assertion, avoid including the optionality information such as 'SHOULD' and 'MAY' in the test assertion expression itself. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b\fs20{\b For example:}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20  }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Say the normative statement in a specification reads "Service A MAY contain an instance of widget X. Widget X MUST respond to a method call Y by returning an instance of Z."}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test assertions might then read: }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #1:}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20  "Service A contains an instance of widget X." and }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #2}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : "Widget X responds to a method call Y by returning an instance of Z." }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ai\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\i\loch\f1\fs20\lang2057\i 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Although it would be acceptable for assertion #2 to be a literal quotation of the second statement from the specification, including the "MUST" keyword, it would be less acceptable to literally quote the statement in test assertion #1 because "Service A MA
Y contain an instance of widget X." is not written as a testable assertion. The keyword "MAY" detracts from the assertiveness and testability and is better removed from the expression statement of the assertion. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 [Note that the optionality (the "MAY" keyword) of the first normative requirement may need to be preserved in some form as metadata to instruct the test and test evaluation.]}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 Note that writing an assertion results in a bold statement of a requirement which can be either true or false. By default (unless stated otherwise) it is expected that an evaluation to "true" corresponds to conformance but that is not to be considered in
 the test assertion: that is a conformance and test case issue. How a true or false evaluation in a test based on the assertion is interpreted may depend on whether the requirement is optional. Conformance considerations such as levels or profiles may also
 have relevance. Yet such factors need not affect how the test assertion itself is to be worded. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 Do not change the semantics of the specification; do not add interpretation or subtly change the meaning. It is important that the assertion should not attempt to improve the specification statements by adding anything substantive to them - anything othe
r than structure and formatting. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 A link between test assertion abstract descriptions of the test environment and the concrete descriptions in test cases can be bridged later with meta-data ('test meta-data') to facilitate the definition of a test harness. Therefore such details are cons
idered out of scope of the test assertion. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 There are different objectives for test assertions: firstly to improve quality of specifications and secondly to help test case development. Some users are only interested in the first while others are interested more in the second. }}
\par \pard\plain {\listtext\pard\plain \li1080\ri0\lin1080\rin0\fi-360\sb240\sa120\keepn\cf2\fs26\b\fs26\b\fs26\b\tx432\tx576\tx720\tx1080\tx1440 4.\tab}\ilvl0 \ltrpar\s9\cf2\tx432\tx576\tx720\tx1080\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls2\li1080\ri0\lin1080\rin0\fi-360\sb240\sa120\keepn\rtlch\af1\afs26\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs26\lang1033\b\loch\f1\fs26\lang1033\b {\rtlch \ltrch\loch\f1\fs26\lang1033\i0\b Testability}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Move this section into the Basic Design Principles section?}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 The test assertion SHOULD be testable. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Describe features, values and attributes to be measured and indications of success or failure. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Focus on the details of a single testable statement in the specification, either }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 found as a self-contained, atomic statement or }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 derived by bringing together pieces from more than one part of the specification(s). }}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 A test assertion may have as its main component the prose of a specification's normative statement either copied exactly (literal), reworded (derived) or referenced. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Whether the normative statement can be copied exactly can depend on all of the required details being together in the form of a testable expression. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 In some cases there may be a need to bring together details for the assertion from several places in the specification, perhaps even from tables or diagrams or artifacts such as schemas, in which case the assertion is said to be 'derived'. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 A 'derived' assertion can be expressed as a statement of fact which, typically, is expected to be true when the specification normative requirement is satisfied. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 The test assertion target is usually obvious as the subject the testable statement. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Focus on testable properties or behaviors of a test assertion target. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Such qualifications may be one of two types: }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 those which are part of what is testable }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 those relating to conditions assumed prior to testing. }}}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs24\lang255\i0\b\b\lang255 Best Practice{\f9 : }}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Common terms, items and details may occur in several assertions and can be described in detail in one place at the head of the group of assertions. Such recurring details can then be referred to in individual assertions by coded values or keywords. Such ke
ywords or tags may help test suite writers to search for and bring together all assertions related, say, to a particular target or class of target. Further sophistication could be added by organizing and defining test assertion targets as classes, supercla
sses and subclasses. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b\fs20{\b For example:}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20  }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Consider three assertions all relating to a single target, Service A. Several of the assertions relate to components of Service A as their more specific target. Two of the assertions, say, also mention method call Z. There may be a condition in one asserti
on that if service A contains a widget X then it must respond in a certain way to method call Z. The validity of method call Z may be defined by another of the assertions. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #1}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : When Service A has a widget X which has a method Z then method Z is named getPropertyY.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #2}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : When Service A has a widget X then service A has a property Y.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #3}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : If service A contains a widget X then it responds to method call Z by returning property Y of service A.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 There is clearly repetition of: Service A, widget X, property Y and method call Z. Define these items at the head of the assertions and give the items coded names, (also termed 'keywords' or 'tags') and use these names in the assertions perhaps highlightin
g them, separately formatting them or even linking them to their definitions by , say, hyperlinks. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b Service_A}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : This keyword represents service A. Service_A is a service which has properties Y and U and which uses widgets X and T to return properties Y and U.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b Widget_X}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : This keyword represents widget X.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b Property_Y}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : This keyword represents property Y of Service_A.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b Method_Z}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : This keyword represents method Z of Widget_X.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ai\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\i\loch\f1\fs20\lang2057\i 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ai\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\i\b\loch\f1\fs20\lang2057\i\b 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #1}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : When Service_A has a Widget_X which has a Method_Z then Method_Z is named getPropertyY.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #2}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : When Service_A has a Widget_X then Widget_X has a property Y.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b\i\lang2057\fs20{\b TA #3}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i\b0\i\lang2057\fs20 : If Service_A contains a Widget_X then it responds to a call on Method_Z by returning Property_Y of Widget_X.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ai\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\i\loch\f1\fs20\lang2057\i 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 A search on coded name 'Service_A', say, will then return each of these assertions for which it is the target. Bookmarks on the keywords would allow the mentions of the keywords in the assertions and in the keyword definitions to be made hyperlinks to thes
e bookmarks, say. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain {\listtext\pard\plain \li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\cf2\fs28\b\fs28\b\fs28\b\tx432\tx576\tx1080 4.\tab}\ilvl0 \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls0\li936\ri0\lin936\rin0\fi-360\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b Referring to Specifications}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\chcbpat5 \tab}\ilvl0 \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Some of this material belongs in the Basic section, as does everything that covers the \'93required elements\'94. Optional elements belong in the Advanced section. (eg, grouping). The advanced section will also revisit some of the topics covered in the basic sec
tion, discussing the complex corner-cases.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Specification architects and implementation guide architects link test assertions to precisely identified parts of a specification. Specifications (such as for profiles to aid adoption) may reference other specifications and themselves be referenced. The s
implest case is where the text of the assertion can be found directly within the specification while there are more complex cases where the text of the assertion is derived from the specification. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\b\loch\f1\fs20\lang2057\b 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Specifications often reference other specifications. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Remember that the relationship between test assertion and specification may be many-to-many; there may even be more than one specification to which references need to be made. Within a single assertion list there may be references to multiple specification
s. It should not be assumed that all specification references are to the same specification. }
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Take care to make the reference sufficiently specific (such as by specifying the boundary of which part is referenced). }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 There is value in including text outside the specification in the test assertion but there is also a danger of divorcing the text from its context, formatting, etc. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 When describing umbrella specifications (specifications that inherit assertions from other reference specifications) a specification and it's assertions may be inherited completely and unchanged by the umbrella or may only be partially inherited or inher
ited with modifications. When inheritance is partial or with modifications then - }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 statements of behavior for the umbrella specification might differ from the stated behavior within the sub-specification }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 specification references might be complex (eg modified inheritance) }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 assertion behaviors might be altered and should be evaluated in the context of the inherited specification relationship. }}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 The normative text for an assertion can be a subset of a sentence, a superset of many sentences, or combined and disjointed text fragments from multiple sentences. Also, multiple assertions might even share the same text fragments. These problems illustr
ate why a sentence boundary is a 'bad' granularity for specifying an assertion reference. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 When there are dependencies between specifications (layering, bindings), a test assertion should restrict its scope, yet make clear assumptions on how much of the referenced specification is supposed to be previously tested. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 For dependencies, delegate the testing of artifacts for conformance to referenced specification to another test assertion so that test case writers can concentrate on a single specification - the one at hand. But delegation still means that the test asse
rtion target for the main specification at hand, is supposed to have passed the test assertions for the referenced specification, prior to even exercising the test assertions for specification at hand. So it is not a functional dependency (no need to exerc
ise TA #1 in order to exercise TA #2, e.g. test case for #2 can be executed standalone) but a "serialization" dependency: passing or failing TA #2 would be meaningless if the test assertion target did not conform to the referenced specification for sure (T
A #1 must be assumed to have passed). }}
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.3\tab Grouping}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Group assertions into logical sets, following the structure of the specification. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Grouping is useful, for example, for shared preconditions, artifacts, properties. However, be cautious to ensure that the resulting assertion with this data included is atomic and self-contained. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Suggestions for grouping are }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 by prerequisites }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 by Test Assertion Target }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 by specification modules and categories, e.g. to simplify assertions of conformance requirements. }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 to cater for specified variability devices such as conformance levels, modules and profiles. }}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 The test assertion might apply to a profile specification item derived from the original specification. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Facilitate the identification of any derivations. Provide a trail or log by including references not just to specifications but to any other information about versions, derivation, profiles etc. }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Using coded tags or keywords to label assertions, it should then be possible for a conformance clause, say, to say, for example, that level A requires conformance to test assertions defined by the group labelled 'xyz'. Definitions of tags and keywords ar
e another candidate for a header section or accompanying documentation.}}
\par \pard\plain \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0\tx1440{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.4\tab Classifications}
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\fs20\lang2057\fs20\fs20\tx0\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Provide interesting classifications of assertion characterizations by considering a larger granularity (and grouping of assertions). }
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\fs20\lang2057\fs20\fs20\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Perhaps include a versioning scheme to clarify where a test assertion is derived from a previous test assertion or where a test assertion is based on a specification item which is derived from another specification item.  }
\par \pard\plain {\listtext\pard\plain \li360\ri0\lin360\rin0\fi-360\sb80\sa80\tx720\f4 \tab}\ilvl0 \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\ls5\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057\fs20 Defining test assertion targets as classes, typically in a header section or separate document, provides opportunities for inheritance of properties and behaviors. {\cf1 For example, there may be a target which is an invoice document and a target for another set
 of assertions for which the target is just a document in general. In this case the invoice could be identified as a subclass of document. Then all assertions applying to the target calls 'document' will also apply to the subclass 'invoice'.}}
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf1\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.5\tab Sequences of Test Assertions }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 There may be inherent logic of conditions specified in an assertion, based on the order and specification of previous assertions. Grouping of some assertions may need to be sequential. Indicate the position of a test assertion within this sequence, typic
ally by using a sequential scheme for the test assertion identifiers.}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Where there is a deliberate sequence in the test assertion identifier scheme it may help to indicate this by defining the scheme in the header or a separate document.}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Make it the rule to keep each test assertion singular and atomic but recognize that there are occasions when a sequencing of the test assertions is required in order to achieve this.}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 A typical sequence for assertions is to follow the same sequence as the statements appear in the specification(s).}}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 There may be a discernable logic in the specification sequence.}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 There may be a scheme for any labelling of the specification statements and it might be fortuitous to adapt the same scheme to the identification of the test assertions.}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 Note that there may be situations in which the sequences of test assertions provide hints to test writers about a sequence in which tests would run such that a certain result of one test leaves the implementation in a suitable status for a following test
. This however is not recommended as this is out of scope of test assertions and falls to the domain of 'test meta-data'.}}
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.6\tab Adding More Structure to Test Assertions}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 A more highly structured assertion }
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 may sometimes be required to: }}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 address optionality where expressions are typically derived rather than literal }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 address complexities such as mandatory requirements dependent on optional requirements }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 help identify and clarify dependencies between assertions }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 help identify and clarify conditions and assumptions required in test assertions }}}
\par \pard\plain \ltrpar\s1\cf0\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li1080\ri0\lin1080\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f6\fs18\lang255\i0\b0{\fs18\f6{\lang255 o}}}{\fs18\f6{\rtlch \ltrch\loch\f6\fs18\lang1033\i0\b0{\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0{\lang2057{\fs20 facilitate sophisticated testing requirements such as automation }}}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 may be aimed at test assertions being either formally processed according to a particular notation or methodology or even a set of test assertions which are so defined (as predicates or sets of predicates using, say, ADL) as to be processable into tests 
automatically with software tools. }}
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Such a test assertion may have the following as its main components: }
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs18\lang2057\i0\b0\lang2057 \tab }}{\rtlch \ltrch\loch\f1\fs24\lang2057\i0\b0\lang2057{\fs20 expressions more formal than free text prose and which always evaluate to true or false ('predicates')}}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 1.\tab to qualify the test assertion target, such as by describing preconditions and post conditions to indicate that the test assertion target is adhering to the specification requirement addressed by the TA }
\par \pard\plain \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li720\ri0\lin720\rin0\fi0\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 2.\tab a structure to allow separation of prose and/or expressions }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.7\tab Prerequisites in Test Assertions}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0 Prerequisites }
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 may qualify the test assertion target (such as a precondition which must be satisfied for the test to be applicable) }}
\par \pard\plain \ltrpar\s1\cf0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 may be needed as part of the evaluation of the test indicator }}
\par \pard\plain \ltrpar\s1\cf0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\b\loch\f1\fs20\lang2057\b {\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b Example:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057\fs20{\ul\ulc0 Predicate}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057\fs20 : The received message must comply to SOAP in addition to complying with WS-RX which is SOAP-based.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi-360\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang2057\i0\b0\lang2057 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang2057\i0\b0\lang2057{\fs20 may inform test case writers about what should have been tested prior to executing a certain step in a test suite. }}
\par \pard\plain \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s1\cf0\tx0\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang2057\loch\f1\fs20\lang2057 
\par \pard\plain \ltrpar\s8\cf2\tx432\tx576\tx1080{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li576\ri0\lin576\rin0\fi-576\sb240\sa120\keepn\rtlch\af1\afs28\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs28\lang1033\b\loch\f1\fs28\lang1033\b {\rtlch \ltrch\loch\f1\fs28\lang1033\i0\b 4.8\tab Advanced Test Assertions}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Consider the opportunities there may be for automation. Any formalism for Specification Analysis will have downstream effects on tools that may be designed to automate the process of analysis - as well as the metrics applied to an analysis. Specify this fo
rmalism in a pragmatic unambiguous way, such that analysis tools may be unambiguous and useful. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs24\lang255\i0\b\b\lang255 Best Practice{\f9 : }}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 There are languages such as ADL, OCL, XML Schema, Schematron and XQuery which may help to formally describe parts of a specification and its assertions. When these are used then, along with the test assertion predicate, specify which dialect is being used 
(e.g. @dialect="XQuery", @dialect="OCL", etc.) using meta-data.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b\fs20{\b For example}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0\fs20 :}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 An assertion that Invoice_Subset_A includes IssueDate may be more precisely represented with an XPath to the IssueDate.}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Test assertion \'91http://example.org/v0-3/#Invoice-SubsetA-v1-0-TA#1\'92 may then state, using a formal representation, the following structured assertion:}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Assertion>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <ID>http://example.org/v0-3/#Invoice-SubsetA-v1-0-TA#1</ID>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Reference>http://example.org/v0-3/#Invoice-SubsetA-v1-0</Reference>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Target dialect="Namespace"> http://example.org/v0-3/#Invoice-v1-0</Target>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Predicate>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Property>Contains</Property>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Value dialect="XPath1">/Invoice/IssueDate</Value>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li0\ri0\lin0\rin0\fi360\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 </Predicate>}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 <Assertion> }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The values "Contains", "Namespace" and "XPath1" in this example would be defined in codelists or controlled lists of enumerations (a controlled vocabulary). This test assertion representation would then give the opportunity for automated processing, even a
llowing testing and validation parsing in a manner similar to the use of an XML schema. Of course it may be possible in this example to use an existing technology such as RelaxNG, W3C XML Schema or Schematron or a combination of these for the entire repres
entation of such an assertion or sets of such assertions. Alternatively, artifacts such as Schematron validation schemas could be generated from the test assertions. }
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 There may need to be special considerations when creating test assertions covering parts of a specification involving, tables diagrams, schemas and the like. Note that, effectively, a schema, such as one defined using W3C XML Schema, may equate to a set of
 test assertions but can actually be used directly for testing. A schema included in a specification may provide the opportunity to go straight to a test, bypassing test assertions but, equally, test assertions may be generated from schemas. Diagrams invol
ving a time element such as sequence diagrams may lend themselves to generation of target behavior assertions (cause-effect or before-and-after assertions). Those involving classes may allow generation of assertions about properties of targets. As with sch
emas it may be possible to generate tests themselves from diagrams such as UML diagrams, bypassing the assertion step. Diagrams and schemas may be included in a set of test assertions where appropriate.}
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb480\sa120\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b 7\tab Glossary}
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb100\sa100\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b A.\tab Acknowledgements}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 The following individuals have participated in the creation of this specification and are gratefully acknowledged:}
\par \pard\plain \ltrpar\s1\cf2{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\keepn\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Participants:}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs36\lang1033\i0\b \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 David Martson, IBM}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs36\lang1033\i0\b \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 David Pawson, Royal National Institute for the Blind }}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{\rtlch \ltrch\loch \u61623\'3f}}{{\rtlch \ltrch\loch\af\f5\fs36\lang1033\i0\b \tab }}{\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0{\fs20 Hyunbo Cho, Pohang University}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Kevin Looney, Sun Microsystems}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Lynne Rosenthal, NIST}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Paul Rank, Sun Microsystems}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Serm Kulvatunyou, NIST}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360\tx720{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li360\ri0\lin360\rin0\fi0\sb86\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033{{{\rtlch \ltrch\loch \u61623\'3f}}}{{{\rtlch \ltrch\loch\af\f5\fs20\lang1033\i0\b0 \tab }}}{\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0{\fs20 Youngkon Lee, Korea TAG forum}}
\par \pard\plain \ltrpar\s1\cf0\sl-202\slmult0\tx0\tx360{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb86\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Move{\b0  this to the top of the document and delete this appendix.}}
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb100\sa100\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b B.\tab Non-Normative Text}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\rtlch\af1\afs24\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs24\lang1033\loch\f1\fs24\lang1033 {\rtlch \ltrch\loch\f1\fs24\lang1033\i0\b0 Remove this appendix?}
\par \page\pard\plain \ltrpar\s1\cf2\tx432{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\li432\ri0\lin432\rin0\fi-432\sb100\sa100\brdrt\brdrs\brdrw1\brdrcf1\brsp120{\*\brdrt\brdlncol1\brdlnin0\brdlnout1\brdlndist0}\brsp120\keepn\rtlch\af1\afs36\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs36\lang1033\b\loch\f1\fs36\lang1033\b {\rtlch \ltrch\loch\f1\fs36\lang1033\i0\b C.\tab Revision History}
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \trowd\trql\trleft-128\trpaddft3\trpaddt0\trpaddfl3\trpaddl10\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1286\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx2602\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4575\clbrdrt\brdrs\brdrw1\brdrcf1\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx8640
\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Revision}
\cell\pard\plain \intbl\ltrpar\s1\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Date}
\cell\pard\plain \intbl\ltrpar\s1\cf0\qc{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Editor}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Changes Made}
\cell\row\pard \trowd\trql\trleft-128\trpaddft3\trpaddt0\trpaddfl3\trpaddl10\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1286\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx2602\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4575\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx8640
\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 0.2}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 2007-12-30}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Stephen Green}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Formatting}
\cell\row\pard \trowd\trql\trleft-128\trpaddft3\trpaddt0\trpaddfl3\trpaddl10\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx1286\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx2602\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\cellx4575\clbrdrl\brdrs\brdrw1\brdrcf1\clbrdrb\brdrs\brdrw1\brdrcf1\clbrdrr\brdrs\brdrw1\brdrcf1\cellx8640
\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 0.3}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 2008-01-06}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Stephen Green}
\cell\pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Minor, non-substantial edits}
\par \pard\plain \intbl\ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Removal of some obscure examples}
\cell\row\pard \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 ============================= General Notes ==============================}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Eliminate overhead between basic and advanced sections}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Need a complete & concise definition of the structure of a test assertion}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Add a short Summary/conclusions at the end \'96 reinforce the basic messages from the Rationale.}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Glossary at beginning or end? David: glossary not intended for sequential reading \'96 should not interrupt the flow. Jacques: glossary will have two sections: core concepts and more peripheral stuff. Core concepts at the beginning could be helpful (eg, defin
ition of TA, target, etc...) Stephen: We could put abbreviations at the beginning? Tim: click through from first use of term to the definition. Patrick: terms will be used in in the Rationale, and to some extent explained there. Will link to glossary.}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Need References (we have \'93Related Works\'94 at the very top of the document. Is this the right place for this or should it be in an appendix?)}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Note that we also have Normative and Non-Normative references in Section 1.}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Also need a section for Prior Art \'96 where we can point to and briefly discuss some real-world uses of Test Assertions.}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Is this a spec \'96 how formally must we follow the OASIS document structure?}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Patrick: too soon for that. Keep it an \'93Informational Document\'94 in OASIS terms. No template yet for such documents. We can provide input on the document structure. Do what seems right. }
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Search for and delete references to \'93specification\'94 (change to \'93document\'94?)}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ab\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\b\loch\f1\fs20\lang1033\b {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b Process}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 How formal do we need to be in tracking suggestions for change? Keep an issue list, assigning to owners? After the next rev? }
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 {\rtlch \ltrch\loch\f1\fs20\lang1033\i0\b0 Start a list now of things we need to do, add. Jacques will start a list on the Wiki.}
\par \pard\plain \ltrpar\s1\cf0\chcbpat5{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\sb80\sa80\rtlch\af1\afs20\lang1033\ltrch\dbch\af1\langfe1033\hich\f1\fs20\lang1033\loch\f1\fs20\lang1033 
\par }


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]