Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Fri, May 21, 2021 at 2:14 PM Thomas Huth  wrote:
>
> On 21/05/2021 16.29, Peter Maydell wrote:
> > On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé  
> > wrote:
> >> If you think these tests belong to tests/tcg/, I am OK to put
> >> them they, but I don't think adding the Avocado buildsys
> >> machinery to the already-complex tests/tcg/ Makefiles is going
> >> to help us...
> >
> > This does raise the question of what we're actually trying
> > to distinguish. It seems to me somewhat that what tests/acceptance/
> > actually contains that makes it interestingly different from other
> > tests/ stuff is that it's specifically "tests using the Avocado
> > framework". On that theory we might name it tests/avocado/.
>
> I think there are two aspects:
>
> 1) These tests are using the avocado framework
>
> 2) These tests are downloading other stuff from the internet (unlike the
> other tests that we have)
>

After Peter's reply, I noticed QEMU does not organize tests under the
tests folder by software engineering test category but by the
mechanism/machinery the tests run on. This makes me think that we may
need to handle the folders name and the CI jobs name differently:

1 - Change the current "test/acceptance" folder name to "test/(avocado
or avoqado)." Change the "make check-acceptance" to "make
check-validation," and the GitLab CI job names to "validation,"
meaning that, in a promising future, other tests running on a
different framework and acting like validation tests would run in the
same make command and same GitLab CI job.

2 - Change the current "test/acceptance" folder name to "test/(avocado
or avoqado)." Change the "make check-acceptance" to "make
check-(avocado or avoqaco)" and the GitLab CI job names to "(avocado
or avoqado)," meaning that, in a promising future, we can categorize
validation jobs inside the CI and run each of the different validation
tests supported by a framework on its own GitLab CI job.

Personally, I prefer option 2 as it gives more flexibility to decide
how to set a GitLab CI job or run it when testing locally.

> > Or we could just leave it as it is -- is the current naming
> > actually confusing anybody? :-)
>
> Yes, I think "acceptance" is rather confusing. So far they haven't been part
> of your PR acceptance tests (well, now they are part of the gitlab-CI,
> though), and it's also not about tests that have been set up by customers,
> which is what you normally think of when hearing "acceptance tests". So a
> different name would be adequate.
>
> I think I'd vote for either "avocado", "avoqado" or "validation".
>

Even laughing every time I read "avoqado" (and thanks for that), I
liked the idea as there is supplementary code added inside
"tests/acceptance/avocado_qemu" to support the tests, meaning they are
not "pure" avocado.

>   Thomas
>




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Philippe Mathieu-Daudé
On 5/21/21 7:14 PM, Thomas Huth wrote:
> On 21/05/2021 16.29, Peter Maydell wrote:
>> On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé 
>> wrote:
>>> If you think these tests belong to tests/tcg/, I am OK to put
>>> them they, but I don't think adding the Avocado buildsys
>>> machinery to the already-complex tests/tcg/ Makefiles is going
>>> to help us...
>>
>> This does raise the question of what we're actually trying
>> to distinguish. It seems to me somewhat that what tests/acceptance/
>> actually contains that makes it interestingly different from other
>> tests/ stuff is that it's specifically "tests using the Avocado
>> framework". On that theory we might name it tests/avocado/.
> 
> I think there are two aspects:
> 
> 1) These tests are using the avocado framework
> 
> 2) These tests are downloading other stuff from the internet (unlike the
> other tests that we have)
> 
>> Or we could just leave it as it is -- is the current naming
>> actually confusing anybody? :-)
> 
> Yes, I think "acceptance" is rather confusing. So far they haven't been
> part of your PR acceptance tests (well, now they are part of the
> gitlab-CI, though), and it's also not about tests that have been set up
> by customers, which is what you normally think of when hearing
> "acceptance tests". So a different name would be adequate.

IIUC the current "acceptance tests" are the ones Peter runs,
which are *gating* the merge process. They can not fail.

The current tests in tests/acceptance/ use Avocado (as said Thomas,
to easily download artifacts) and shouldn't be considered gating;
they could fail.

This is my confusion so far. It should be OK to add tests using the
Avocado framework which might fail and aren't gating.



Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Thomas Huth

On 21/05/2021 16.29, Peter Maydell wrote:

On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé  wrote:

If you think these tests belong to tests/tcg/, I am OK to put
them they, but I don't think adding the Avocado buildsys
machinery to the already-complex tests/tcg/ Makefiles is going
to help us...


This does raise the question of what we're actually trying
to distinguish. It seems to me somewhat that what tests/acceptance/
actually contains that makes it interestingly different from other
tests/ stuff is that it's specifically "tests using the Avocado
framework". On that theory we might name it tests/avocado/.


I think there are two aspects:

1) These tests are using the avocado framework

2) These tests are downloading other stuff from the internet (unlike the 
other tests that we have)



Or we could just leave it as it is -- is the current naming
actually confusing anybody? :-)


Yes, I think "acceptance" is rather confusing. So far they haven't been part 
of your PR acceptance tests (well, now they are part of the gitlab-CI, 
though), and it's also not about tests that have been set up by customers, 
which is what you normally think of when hearing "acceptance tests". So a 
different name would be adequate.


I think I'd vote for either "avocado", "avoqado" or "validation".

 Thomas




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Fri, May 21, 2021 at 12:23 PM Peter Maydell  wrote:
>
> On Fri, 21 May 2021 at 16:13, Willian Rampazzo  wrote:
> > On Fri, May 21, 2021 at 11:29 AM Peter Maydell  
> > wrote:
> > > This does raise the question of what we're actually trying
> > > to distinguish. It seems to me somewhat that what tests/acceptance/
> > > actually contains that makes it interestingly different from other
> > > tests/ stuff is that it's specifically "tests using the Avocado
> > > framework". On that theory we might name it tests/avocado/.
> >
> > I think the updated README.rst from this RFC, inside the system
> > (originally acceptance) folder, is a good description of what these
> > tests should be: "This directory contains system tests. They're
> > usually higher level, and may interact with external resources and
> > with various guest operating systems." I can improve it, if needed.
> >
> > We are using Avocado Framework as a tool to accomplish the above
> > description, but I don't think we should strictly use it if there is
> > another way to accomplish what those tests are supposed to be. Calling
> > them "avocado" tests may restrict the intent of them, in my opinion.
>
> But the main reason IMHO that we have them in a separate directory is
> because that's where we have all the avocado machinery. I think the
> sharing of the machinery is what dictates whether a test winds up in
> tests/acceptance, tests/qtest, tests/tcg or tests/qemu-iotests
> much more than whether it is "usually higher level" or more of a
> unit test or whatever. If we ever added some other test framework for
> doing system tests, we'd probably want to put it in its own
> directory rather than lumping all its support machinery and
> build files in together with the avocado based tests.

Okay, I understand your point. With the organization of tests under
the test folder that QEMU has today, I agree with you.

>
> thanks
> -- PMM
>




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Peter Maydell
On Fri, 21 May 2021 at 16:13, Willian Rampazzo  wrote:
> On Fri, May 21, 2021 at 11:29 AM Peter Maydell  
> wrote:
> > This does raise the question of what we're actually trying
> > to distinguish. It seems to me somewhat that what tests/acceptance/
> > actually contains that makes it interestingly different from other
> > tests/ stuff is that it's specifically "tests using the Avocado
> > framework". On that theory we might name it tests/avocado/.
>
> I think the updated README.rst from this RFC, inside the system
> (originally acceptance) folder, is a good description of what these
> tests should be: "This directory contains system tests. They're
> usually higher level, and may interact with external resources and
> with various guest operating systems." I can improve it, if needed.
>
> We are using Avocado Framework as a tool to accomplish the above
> description, but I don't think we should strictly use it if there is
> another way to accomplish what those tests are supposed to be. Calling
> them "avocado" tests may restrict the intent of them, in my opinion.

But the main reason IMHO that we have them in a separate directory is
because that's where we have all the avocado machinery. I think the
sharing of the machinery is what dictates whether a test winds up in
tests/acceptance, tests/qtest, tests/tcg or tests/qemu-iotests
much more than whether it is "usually higher level" or more of a
unit test or whatever. If we ever added some other test framework for
doing system tests, we'd probably want to put it in its own
directory rather than lumping all its support machinery and
build files in together with the avocado based tests.

thanks
-- PMM



Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Fri, May 21, 2021 at 11:29 AM Peter Maydell  wrote:
>
> On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé  wrote:
> > If you think these tests belong to tests/tcg/, I am OK to put
> > them they, but I don't think adding the Avocado buildsys
> > machinery to the already-complex tests/tcg/ Makefiles is going
> > to help us...
>
> This does raise the question of what we're actually trying
> to distinguish. It seems to me somewhat that what tests/acceptance/
> actually contains that makes it interestingly different from other
> tests/ stuff is that it's specifically "tests using the Avocado
> framework". On that theory we might name it tests/avocado/.

I think the updated README.rst from this RFC, inside the system
(originally acceptance) folder, is a good description of what these
tests should be: "This directory contains system tests. They're
usually higher level, and may interact with external resources and
with various guest operating systems." I can improve it, if needed.

We are using Avocado Framework as a tool to accomplish the above
description, but I don't think we should strictly use it if there is
another way to accomplish what those tests are supposed to be. Calling
them "avocado" tests may restrict the intent of them, in my opinion.

>
> Or we could just leave it as it is -- is the current naming
> actually confusing anybody? :-)
>
> thanks
> -- PMM
>




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Fri, May 21, 2021 at 11:29 AM Peter Maydell  wrote:
>
> On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé  wrote:
> > If you think these tests belong to tests/tcg/, I am OK to put
> > them they, but I don't think adding the Avocado buildsys
> > machinery to the already-complex tests/tcg/ Makefiles is going
> > to help us...
>
> This does raise the question of what we're actually trying
> to distinguish. It seems to me somewhat that what tests/acceptance/
> actually contains that makes it interestingly different from other
> tests/ stuff is that it's specifically "tests using the Avocado
> framework". On that theory we might name it tests/avocado/.
>
> Or we could just leave it as it is -- is the current naming
> actually confusing anybody? :-)

Conceptually speaking, it isn't very clear because acceptance tests
are meant to test features requested by the customer during the
requisite phase for a specific software release. The QEMU project does
not have a formal requisite phase where features added to one software
version are discussed with the customers. In this case, the QEMU
acceptance tests are not accepting a use case or requested feature of
a release. Eventually, those tests may not be a blocker to a release
if some of them fail. Thus, calling them acceptance, may confuse
people working with tests.

>
> thanks
> -- PMM
>




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Alex Bennée


Philippe Mathieu-Daudé  writes:

> On 5/21/21 3:03 PM, Alex Bennée wrote:
>> Philippe Mathieu-Daudé  writes:
>>> On 5/21/21 2:28 PM, Willian Rampazzo wrote:
 On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
>
> On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:
>> On 5/20/21 9:53 PM, Willian Rampazzo wrote:
>>> Conceptually speaking, acceptance tests "are a series of specific tests
>>> conducted by the customer in an attempt to uncover product errors before
>>> accepting the software from the developer. Conducted by the end-user 
>>> rather
>>> than software engineers, acceptance testing can range from an informal
>>> “test drive” to a planned and systematically executed series of scripted
>>> tests" [1]. Every time Pressman refers to the term "acceptance 
>>> testing," he
>>> also refers to user's agreement in the final state of an implemented 
>>> feature.
>>> Today, QEMU is not implementing user acceptance tests as described by 
>>> Pressman.
>>>
>>> There are other three possible terms we could use to describe what is 
>>> currently
>>> QEMU "acceptance" tests:
>>>
>>>1 - Integration tests:
>>>- "Integration testing is a systematic technique for 
>>> constructing the
>>>   software architecture while at the same time conducting tests 
>>> to
>>>   uncover errors associated with interfacing. The objective is 
>>> to take
>>>   unit-tested components and build a program structure that has 
>>> been
>>>   dictated by design." [2]
>>>* Note: Sommerville does not have a clear definition of 
>>> integration
>>>  testing. He refers to incremental integration of components 
>>> inside
>>>  the system testing (see [3]).
>
> After thinking about this for a while, I agree with you that renaming the
> "acceptance" tests to "integration" tests is also not a good idea. When I
> hear "integration" test in the context of the virt stack, I'd rather 
> expect
> a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe
> virt-manager on top and tests them all together. So we should look for a
> different name indeed.
>
>>>2 - Validation tests:
>>>- "Validation testing begins at the culmination of integration 
>>> testing,
>>>   when individual components have been exercised, the software 
>>> is
>>>   completely assembled as a package, and interfacing errors 
>>> have been
>>>   uncovered and corrected. At the validation or system level, 
>>> the
>>>   distinction between different software categories disappears. 
>>> Testing
>>>   focuses on user-visible actions and user-recognizable output 
>>> from the
>>>   system." [4]
>>>- "where you expect the system to perform correctly using a set 
>>> of test
>>>   cases that reflect the system’s expected use." [5]
>>>* Note: the definition of "validation testing" from Sommerville 
>>> reflects
>>>  the same definition found around the Internet, as one of the 
>>> processes
>>>  inside the "Verification & Validation (V)." In this concept,
>>>  validation testing is a high-level definition that covers unit 
>>> testing,
>>>  functional testing, integration testing, system testing, and 
>>> acceptance
>>>  testing.
>>>
>>>3 - System tests:
>>>- "verifies that all elements mesh properly and that overall 
>>> system
>>>   function and performance is achieved." [6]
>>>- "involves integrating components to create a version of the 
>>> system and
>>>   then testing the integrated system. System testing checks that
>>>   components are compatible, interact correctly, and transfer 
>>> the right
>>>   data at the right time across their interfaces." [7]
>>>
>>> The tests implemented inside the QEMU "acceptance" directory depend on 
>>> the
>>> software completely assembled and, sometimes, on other elements, like 
>>> operating
>>> system images. In this case, the proposal here is to rename the current
>>> "acceptance" directory to "system."
>>
>> Are user-mode tests using Avocado also system tests?
>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html
>
> We've indeed got the problem that the word "system" is a little bit
> overloaded in the context of QEMU. We often talk about "system" when
> referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user
> emulator binaries). For example, the "--disable-system" switch of the
> configure script, or the "build-system" and "check-system" jobs in the
> 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Peter Maydell
On Fri, 21 May 2021 at 15:19, Philippe Mathieu-Daudé  wrote:
> If you think these tests belong to tests/tcg/, I am OK to put
> them they, but I don't think adding the Avocado buildsys
> machinery to the already-complex tests/tcg/ Makefiles is going
> to help us...

This does raise the question of what we're actually trying
to distinguish. It seems to me somewhat that what tests/acceptance/
actually contains that makes it interestingly different from other
tests/ stuff is that it's specifically "tests using the Avocado
framework". On that theory we might name it tests/avocado/.

Or we could just leave it as it is -- is the current naming
actually confusing anybody? :-)

thanks
-- PMM



Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Philippe Mathieu-Daudé
On 5/21/21 3:03 PM, Alex Bennée wrote:
> Philippe Mathieu-Daudé  writes:
>> On 5/21/21 2:28 PM, Willian Rampazzo wrote:
>>> On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:

 On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:
> On 5/20/21 9:53 PM, Willian Rampazzo wrote:
>> Conceptually speaking, acceptance tests "are a series of specific tests
>> conducted by the customer in an attempt to uncover product errors before
>> accepting the software from the developer. Conducted by the end-user 
>> rather
>> than software engineers, acceptance testing can range from an informal
>> “test drive” to a planned and systematically executed series of scripted
>> tests" [1]. Every time Pressman refers to the term "acceptance testing," 
>> he
>> also refers to user's agreement in the final state of an implemented 
>> feature.
>> Today, QEMU is not implementing user acceptance tests as described by 
>> Pressman.
>>
>> There are other three possible terms we could use to describe what is 
>> currently
>> QEMU "acceptance" tests:
>>
>>1 - Integration tests:
>>- "Integration testing is a systematic technique for constructing 
>> the
>>   software architecture while at the same time conducting tests 
>> to
>>   uncover errors associated with interfacing. The objective is 
>> to take
>>   unit-tested components and build a program structure that has 
>> been
>>   dictated by design." [2]
>>* Note: Sommerville does not have a clear definition of 
>> integration
>>  testing. He refers to incremental integration of components 
>> inside
>>  the system testing (see [3]).

 After thinking about this for a while, I agree with you that renaming the
 "acceptance" tests to "integration" tests is also not a good idea. When I
 hear "integration" test in the context of the virt stack, I'd rather expect
 a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe
 virt-manager on top and tests them all together. So we should look for a
 different name indeed.

>>2 - Validation tests:
>>- "Validation testing begins at the culmination of integration 
>> testing,
>>   when individual components have been exercised, the software is
>>   completely assembled as a package, and interfacing errors have 
>> been
>>   uncovered and corrected. At the validation or system level, the
>>   distinction between different software categories disappears. 
>> Testing
>>   focuses on user-visible actions and user-recognizable output 
>> from the
>>   system." [4]
>>- "where you expect the system to perform correctly using a set 
>> of test
>>   cases that reflect the system’s expected use." [5]
>>* Note: the definition of "validation testing" from Sommerville 
>> reflects
>>  the same definition found around the Internet, as one of the 
>> processes
>>  inside the "Verification & Validation (V)." In this concept,
>>  validation testing is a high-level definition that covers unit 
>> testing,
>>  functional testing, integration testing, system testing, and 
>> acceptance
>>  testing.
>>
>>3 - System tests:
>>- "verifies that all elements mesh properly and that overall 
>> system
>>   function and performance is achieved." [6]
>>- "involves integrating components to create a version of the 
>> system and
>>   then testing the integrated system. System testing checks that
>>   components are compatible, interact correctly, and transfer 
>> the right
>>   data at the right time across their interfaces." [7]
>>
>> The tests implemented inside the QEMU "acceptance" directory depend on 
>> the
>> software completely assembled and, sometimes, on other elements, like 
>> operating
>> system images. In this case, the proposal here is to rename the current
>> "acceptance" directory to "system."
>
> Are user-mode tests using Avocado also system tests?
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html

 We've indeed got the problem that the word "system" is a little bit
 overloaded in the context of QEMU. We often talk about "system" when
 referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user
 emulator binaries). For example, the "--disable-system" switch of the
 configure script, or the "build-system" and "check-system" jobs in the
 .gitlab-ci.yml file ... thus this could get quite confusing in the
 .gitlab-ci.yml file afterwards.
>>>
>>> I agree with you here. After I made the changes to the code, 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Alex Bennée


Thomas Huth  writes:

> On 21/05/2021 14.28, Willian Rampazzo wrote:
>> On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
> [...]
>>> Alternatively, what about renaming the "acceptance" tests to "validation"
>>> instead? That word does not have a duplicated definition in the context of
>>> QEMU yet, so I think it would be less confusing.
>> While at the beginning of your reply, I started thinking if
>> "validation" would cause less confusion for the QEMU project. Although
>> validation testing is a broader concept inside the Verification &
>> Validation process, encompassing unit testing, functional testing,
>> integration testing, system testing, and acceptance testing, it may be
>> an option for the QEMU project.
>> While system testing would be the correct terminology to use, if it
>> causes more confusion, using a less strict terminology, like
>> validation testing, is valid, in my opinion.
>
> 
> Or we could come up with a new, artificial name instead (like
> "qtests"). It certainly need a "q" in the name. For example what
> about:
>
> - avoqado
> - valiqation
> - aqueptance
> - inteqration

make check-quixotic?

>
> ?
> 
>
>  Thomas


-- 
Alex Bennée



Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Alex Bennée


Philippe Mathieu-Daudé  writes:

> On 5/21/21 2:28 PM, Willian Rampazzo wrote:
>> On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
>>>
>>> On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:
 On 5/20/21 9:53 PM, Willian Rampazzo wrote:
> Conceptually speaking, acceptance tests "are a series of specific tests
> conducted by the customer in an attempt to uncover product errors before
> accepting the software from the developer. Conducted by the end-user 
> rather
> than software engineers, acceptance testing can range from an informal
> “test drive” to a planned and systematically executed series of scripted
> tests" [1]. Every time Pressman refers to the term "acceptance testing," 
> he
> also refers to user's agreement in the final state of an implemented 
> feature.
> Today, QEMU is not implementing user acceptance tests as described by 
> Pressman.
>
> There are other three possible terms we could use to describe what is 
> currently
> QEMU "acceptance" tests:
>
>1 - Integration tests:
>- "Integration testing is a systematic technique for constructing 
> the
>   software architecture while at the same time conducting tests to
>   uncover errors associated with interfacing. The objective is to 
> take
>   unit-tested components and build a program structure that has 
> been
>   dictated by design." [2]
>* Note: Sommerville does not have a clear definition of integration
>  testing. He refers to incremental integration of components 
> inside
>  the system testing (see [3]).
>>>
>>> After thinking about this for a while, I agree with you that renaming the
>>> "acceptance" tests to "integration" tests is also not a good idea. When I
>>> hear "integration" test in the context of the virt stack, I'd rather expect
>>> a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe
>>> virt-manager on top and tests them all together. So we should look for a
>>> different name indeed.
>>>
>2 - Validation tests:
>- "Validation testing begins at the culmination of integration 
> testing,
>   when individual components have been exercised, the software is
>   completely assembled as a package, and interfacing errors have 
> been
>   uncovered and corrected. At the validation or system level, the
>   distinction between different software categories disappears. 
> Testing
>   focuses on user-visible actions and user-recognizable output 
> from the
>   system." [4]
>- "where you expect the system to perform correctly using a set of 
> test
>   cases that reflect the system’s expected use." [5]
>* Note: the definition of "validation testing" from Sommerville 
> reflects
>  the same definition found around the Internet, as one of the 
> processes
>  inside the "Verification & Validation (V)." In this concept,
>  validation testing is a high-level definition that covers unit 
> testing,
>  functional testing, integration testing, system testing, and 
> acceptance
>  testing.
>
>3 - System tests:
>- "verifies that all elements mesh properly and that overall system
>   function and performance is achieved." [6]
>- "involves integrating components to create a version of the 
> system and
>   then testing the integrated system. System testing checks that
>   components are compatible, interact correctly, and transfer the 
> right
>   data at the right time across their interfaces." [7]
>
> The tests implemented inside the QEMU "acceptance" directory depend on the
> software completely assembled and, sometimes, on other elements, like 
> operating
> system images. In this case, the proposal here is to rename the current
> "acceptance" directory to "system."

 Are user-mode tests using Avocado also system tests?
 https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html
>>>
>>> We've indeed got the problem that the word "system" is a little bit
>>> overloaded in the context of QEMU. We often talk about "system" when
>>> referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user
>>> emulator binaries). For example, the "--disable-system" switch of the
>>> configure script, or the "build-system" and "check-system" jobs in the
>>> .gitlab-ci.yml file ... thus this could get quite confusing in the
>>> .gitlab-ci.yml file afterwards.
>> 
>> I agree with you here. After I made the changes to the code, I noticed
>> QEMU has the "system" word spread all over the place. That may confuse
>> people looking at the "system tests" without much interaction with
>> software 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Philippe Mathieu-Daudé
On 5/21/21 2:42 PM, Thomas Huth wrote:
> On 21/05/2021 14.28, Willian Rampazzo wrote:
>> On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
> [...]
>>> Alternatively, what about renaming the "acceptance" tests to
>>> "validation"
>>> instead? That word does not have a duplicated definition in the
>>> context of
>>> QEMU yet, so I think it would be less confusing.
>>
>> While at the beginning of your reply, I started thinking if
>> "validation" would cause less confusion for the QEMU project. Although
>> validation testing is a broader concept inside the Verification &
>> Validation process, encompassing unit testing, functional testing,
>> integration testing, system testing, and acceptance testing, it may be
>> an option for the QEMU project.
>>
>> While system testing would be the correct terminology to use, if it
>> causes more confusion, using a less strict terminology, like
>> validation testing, is valid, in my opinion.
> 
> 
> Or we could come up with a new, artificial name instead (like "qtests").
> It certainly need a "q" in the name. For example what about:
> 
> - avoqado

+1 for 'make check-avoqado' :)




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Thomas Huth

On 21/05/2021 14.28, Willian Rampazzo wrote:

On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:

[...]

Alternatively, what about renaming the "acceptance" tests to "validation"
instead? That word does not have a duplicated definition in the context of
QEMU yet, so I think it would be less confusing.


While at the beginning of your reply, I started thinking if
"validation" would cause less confusion for the QEMU project. Although
validation testing is a broader concept inside the Verification &
Validation process, encompassing unit testing, functional testing,
integration testing, system testing, and acceptance testing, it may be
an option for the QEMU project.

While system testing would be the correct terminology to use, if it
causes more confusion, using a less strict terminology, like
validation testing, is valid, in my opinion.



Or we could come up with a new, artificial name instead (like "qtests"). It 
certainly need a "q" in the name. For example what about:


- avoqado
- valiqation
- aqueptance
- inteqration

?


 Thomas




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Philippe Mathieu-Daudé
On 5/21/21 2:28 PM, Willian Rampazzo wrote:
> On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
>>
>> On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:
>>> On 5/20/21 9:53 PM, Willian Rampazzo wrote:
 Conceptually speaking, acceptance tests "are a series of specific tests
 conducted by the customer in an attempt to uncover product errors before
 accepting the software from the developer. Conducted by the end-user rather
 than software engineers, acceptance testing can range from an informal
 “test drive” to a planned and systematically executed series of scripted
 tests" [1]. Every time Pressman refers to the term "acceptance testing," he
 also refers to user's agreement in the final state of an implemented 
 feature.
 Today, QEMU is not implementing user acceptance tests as described by 
 Pressman.

 There are other three possible terms we could use to describe what is 
 currently
 QEMU "acceptance" tests:

1 - Integration tests:
- "Integration testing is a systematic technique for constructing 
 the
   software architecture while at the same time conducting tests to
   uncover errors associated with interfacing. The objective is to 
 take
   unit-tested components and build a program structure that has 
 been
   dictated by design." [2]
* Note: Sommerville does not have a clear definition of integration
  testing. He refers to incremental integration of components inside
  the system testing (see [3]).
>>
>> After thinking about this for a while, I agree with you that renaming the
>> "acceptance" tests to "integration" tests is also not a good idea. When I
>> hear "integration" test in the context of the virt stack, I'd rather expect
>> a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe
>> virt-manager on top and tests them all together. So we should look for a
>> different name indeed.
>>
2 - Validation tests:
- "Validation testing begins at the culmination of integration 
 testing,
   when individual components have been exercised, the software is
   completely assembled as a package, and interfacing errors have 
 been
   uncovered and corrected. At the validation or system level, the
   distinction between different software categories disappears. 
 Testing
   focuses on user-visible actions and user-recognizable output 
 from the
   system." [4]
- "where you expect the system to perform correctly using a set of 
 test
   cases that reflect the system’s expected use." [5]
* Note: the definition of "validation testing" from Sommerville 
 reflects
  the same definition found around the Internet, as one of the 
 processes
  inside the "Verification & Validation (V)." In this concept,
  validation testing is a high-level definition that covers unit 
 testing,
  functional testing, integration testing, system testing, and 
 acceptance
  testing.

3 - System tests:
- "verifies that all elements mesh properly and that overall system
   function and performance is achieved." [6]
- "involves integrating components to create a version of the 
 system and
   then testing the integrated system. System testing checks that
   components are compatible, interact correctly, and transfer the 
 right
   data at the right time across their interfaces." [7]

 The tests implemented inside the QEMU "acceptance" directory depend on the
 software completely assembled and, sometimes, on other elements, like 
 operating
 system images. In this case, the proposal here is to rename the current
 "acceptance" directory to "system."
>>>
>>> Are user-mode tests using Avocado also system tests?
>>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html
>>
>> We've indeed got the problem that the word "system" is a little bit
>> overloaded in the context of QEMU. We often talk about "system" when
>> referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user
>> emulator binaries). For example, the "--disable-system" switch of the
>> configure script, or the "build-system" and "check-system" jobs in the
>> .gitlab-ci.yml file ... thus this could get quite confusing in the
>> .gitlab-ci.yml file afterwards.
> 
> I agree with you here. After I made the changes to the code, I noticed
> QEMU has the "system" word spread all over the place. That may confuse
> people looking at the "system tests" without much interaction with
> software testing terminology.
> 
>>
>> So I think renaming "acceptance" to "system" is especially ok if we only
>> keep the "softmmu"-related tests in that 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Fri, May 21, 2021 at 4:16 AM Thomas Huth  wrote:
>
> On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:
> > On 5/20/21 9:53 PM, Willian Rampazzo wrote:
> >> Conceptually speaking, acceptance tests "are a series of specific tests
> >> conducted by the customer in an attempt to uncover product errors before
> >> accepting the software from the developer. Conducted by the end-user rather
> >> than software engineers, acceptance testing can range from an informal
> >> “test drive” to a planned and systematically executed series of scripted
> >> tests" [1]. Every time Pressman refers to the term "acceptance testing," he
> >> also refers to user's agreement in the final state of an implemented 
> >> feature.
> >> Today, QEMU is not implementing user acceptance tests as described by 
> >> Pressman.
> >>
> >> There are other three possible terms we could use to describe what is 
> >> currently
> >> QEMU "acceptance" tests:
> >>
> >>1 - Integration tests:
> >>- "Integration testing is a systematic technique for constructing 
> >> the
> >>   software architecture while at the same time conducting tests to
> >>   uncover errors associated with interfacing. The objective is to 
> >> take
> >>   unit-tested components and build a program structure that has 
> >> been
> >>   dictated by design." [2]
> >>* Note: Sommerville does not have a clear definition of integration
> >>  testing. He refers to incremental integration of components inside
> >>  the system testing (see [3]).
>
> After thinking about this for a while, I agree with you that renaming the
> "acceptance" tests to "integration" tests is also not a good idea. When I
> hear "integration" test in the context of the virt stack, I'd rather expect
> a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe
> virt-manager on top and tests them all together. So we should look for a
> different name indeed.
>
> >>2 - Validation tests:
> >>- "Validation testing begins at the culmination of integration 
> >> testing,
> >>   when individual components have been exercised, the software is
> >>   completely assembled as a package, and interfacing errors have 
> >> been
> >>   uncovered and corrected. At the validation or system level, the
> >>   distinction between different software categories disappears. 
> >> Testing
> >>   focuses on user-visible actions and user-recognizable output 
> >> from the
> >>   system." [4]
> >>- "where you expect the system to perform correctly using a set of 
> >> test
> >>   cases that reflect the system’s expected use." [5]
> >>* Note: the definition of "validation testing" from Sommerville 
> >> reflects
> >>  the same definition found around the Internet, as one of the 
> >> processes
> >>  inside the "Verification & Validation (V)." In this concept,
> >>  validation testing is a high-level definition that covers unit 
> >> testing,
> >>  functional testing, integration testing, system testing, and 
> >> acceptance
> >>  testing.
> >>
> >>3 - System tests:
> >>- "verifies that all elements mesh properly and that overall system
> >>   function and performance is achieved." [6]
> >>- "involves integrating components to create a version of the 
> >> system and
> >>   then testing the integrated system. System testing checks that
> >>   components are compatible, interact correctly, and transfer the 
> >> right
> >>   data at the right time across their interfaces." [7]
> >>
> >> The tests implemented inside the QEMU "acceptance" directory depend on the
> >> software completely assembled and, sometimes, on other elements, like 
> >> operating
> >> system images. In this case, the proposal here is to rename the current
> >> "acceptance" directory to "system."
> >
> > Are user-mode tests using Avocado also system tests?
> > https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html
>
> We've indeed got the problem that the word "system" is a little bit
> overloaded in the context of QEMU. We often talk about "system" when
> referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user
> emulator binaries). For example, the "--disable-system" switch of the
> configure script, or the "build-system" and "check-system" jobs in the
> .gitlab-ci.yml file ... thus this could get quite confusing in the
> .gitlab-ci.yml file afterwards.

I agree with you here. After I made the changes to the code, I noticed
QEMU has the "system" word spread all over the place. That may confuse
people looking at the "system tests" without much interaction with
software testing terminology.

>
> So I think renaming "acceptance" to "system" is especially ok if we only
> keep the "softmmu"-related tests in that folder... would it maybe make sense
> to add the linux-user related tests in a 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Willian Rampazzo
On Thu, May 20, 2021 at 5:28 PM Philippe Mathieu-Daudé
 wrote:
>
> On 5/20/21 9:53 PM, Willian Rampazzo wrote:
> > Conceptually speaking, acceptance tests "are a series of specific tests
> > conducted by the customer in an attempt to uncover product errors before
> > accepting the software from the developer. Conducted by the end-user rather
> > than software engineers, acceptance testing can range from an informal
> > “test drive” to a planned and systematically executed series of scripted
> > tests" [1]. Every time Pressman refers to the term "acceptance testing," he
> > also refers to user's agreement in the final state of an implemented 
> > feature.
> > Today, QEMU is not implementing user acceptance tests as described by 
> > Pressman.
> >
> > There are other three possible terms we could use to describe what is 
> > currently
> > QEMU "acceptance" tests:
> >
> >   1 - Integration tests:
> >   - "Integration testing is a systematic technique for constructing the
> >  software architecture while at the same time conducting tests to
> >  uncover errors associated with interfacing. The objective is to 
> > take
> >  unit-tested components and build a program structure that has been
> >  dictated by design." [2]
> >   * Note: Sommerville does not have a clear definition of integration
> > testing. He refers to incremental integration of components inside
> > the system testing (see [3]).
> >
> >   2 - Validation tests:
> >   - "Validation testing begins at the culmination of integration 
> > testing,
> >  when individual components have been exercised, the software is
> >  completely assembled as a package, and interfacing errors have been
> >  uncovered and corrected. At the validation or system level, the
> >  distinction between different software categories disappears. 
> > Testing
> >  focuses on user-visible actions and user-recognizable output from 
> > the
> >  system." [4]
> >   - "where you expect the system to perform correctly using a set of 
> > test
> >  cases that reflect the system’s expected use." [5]
> >   * Note: the definition of "validation testing" from Sommerville 
> > reflects
> > the same definition found around the Internet, as one of the 
> > processes
> > inside the "Verification & Validation (V)." In this concept,
> > validation testing is a high-level definition that covers unit 
> > testing,
> > functional testing, integration testing, system testing, and 
> > acceptance
> > testing.
> >
> >   3 - System tests:
> >   - "verifies that all elements mesh properly and that overall system
> >  function and performance is achieved." [6]
> >   - "involves integrating components to create a version of the system 
> > and
> >  then testing the integrated system. System testing checks that
> >  components are compatible, interact correctly, and transfer the 
> > right
> >  data at the right time across their interfaces." [7]
> >
> > The tests implemented inside the QEMU "acceptance" directory depend on the
> > software completely assembled and, sometimes, on other elements, like 
> > operating
> > system images. In this case, the proposal here is to rename the current
> > "acceptance" directory to "system."
>
> Are user-mode tests using Avocado also system tests?
> https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html

Yes, they are considered system tests because in software engineering,
system testing means your software built and tested using external
test artifacts, just like your example.

>
> > [1] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> > Practitioner’s Approach. p. 430.
> > [2] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> > Practitioner’s Approach. Software Engineering, p. 398.
> > [3] Sommerville, Ian (2016). Software Engineering. p. 240-242.
> > [4] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> > Practitioner’s Approach. Software Engineering, p. 407.
> > [5] Sommerville, Ian (2016). Software Engineering. p. 227.
> > [6] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> > Practitioner’s Approach. Software Engineering, p. 377.
> > [7] Sommerville, Ian (2016). Software Engineering. p. 240.
> >
> > Signed-off-by: Willian Rampazzo 
> > ---
>
> > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> > index f718b61fa7..c5de3c9fd5 100644
> > --- a/.gitlab-ci.yml
> > +++ b/.gitlab-ci.yml
> > @@ -52,7 +52,7 @@ include:
> >  # Avoid recompiling by hiding ninja with NINJA=":"
> >  - make NINJA=":" $MAKE_CHECK_ARGS
> >
> > -.acceptance_template: _definition
> > +.system_template: _definition
>
> .system_test_template: _test_definition ?

Agreed, keeps the consistency.

>
> > diff --git a/tests/Makefile.include b/tests/Makefile.include
> > index 

Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-21 Thread Thomas Huth

On 20/05/2021 22.28, Philippe Mathieu-Daudé wrote:

On 5/20/21 9:53 PM, Willian Rampazzo wrote:

Conceptually speaking, acceptance tests "are a series of specific tests
conducted by the customer in an attempt to uncover product errors before
accepting the software from the developer. Conducted by the end-user rather
than software engineers, acceptance testing can range from an informal
“test drive” to a planned and systematically executed series of scripted
tests" [1]. Every time Pressman refers to the term "acceptance testing," he
also refers to user's agreement in the final state of an implemented feature.
Today, QEMU is not implementing user acceptance tests as described by Pressman.

There are other three possible terms we could use to describe what is currently
QEMU "acceptance" tests:

   1 - Integration tests:
   - "Integration testing is a systematic technique for constructing the
  software architecture while at the same time conducting tests to
  uncover errors associated with interfacing. The objective is to take
  unit-tested components and build a program structure that has been
  dictated by design." [2]
   * Note: Sommerville does not have a clear definition of integration
 testing. He refers to incremental integration of components inside
 the system testing (see [3]).


After thinking about this for a while, I agree with you that renaming the 
"acceptance" tests to "integration" tests is also not a good idea. When I 
hear "integration" test in the context of the virt stack, I'd rather expect 
a test suite that picks KVM (i.e. a kernel), QEMU, libvirt and maybe 
virt-manager on top and tests them all together. So we should look for a 
different name indeed.



   2 - Validation tests:
   - "Validation testing begins at the culmination of integration testing,
  when individual components have been exercised, the software is
  completely assembled as a package, and interfacing errors have been
  uncovered and corrected. At the validation or system level, the
  distinction between different software categories disappears. Testing
  focuses on user-visible actions and user-recognizable output from the
  system." [4]
   - "where you expect the system to perform correctly using a set of test
  cases that reflect the system’s expected use." [5]
   * Note: the definition of "validation testing" from Sommerville reflects
 the same definition found around the Internet, as one of the processes
 inside the "Verification & Validation (V)." In this concept,
 validation testing is a high-level definition that covers unit testing,
 functional testing, integration testing, system testing, and acceptance
 testing.

   3 - System tests:
   - "verifies that all elements mesh properly and that overall system
  function and performance is achieved." [6]
   - "involves integrating components to create a version of the system and
  then testing the integrated system. System testing checks that
  components are compatible, interact correctly, and transfer the right
  data at the right time across their interfaces." [7]

The tests implemented inside the QEMU "acceptance" directory depend on the
software completely assembled and, sometimes, on other elements, like operating
system images. In this case, the proposal here is to rename the current
"acceptance" directory to "system."


Are user-mode tests using Avocado also system tests?
https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html


We've indeed got the problem that the word "system" is a little bit 
overloaded in the context of QEMU. We often talk about "system" when 
referring to the qemu-softmmu-xxx emulators (in contrast to the linux-user 
emulator binaries). For example, the "--disable-system" switch of the 
configure script, or the "build-system" and "check-system" jobs in the 
.gitlab-ci.yml file ... thus this could get quite confusing in the 
.gitlab-ci.yml file afterwards.


So I think renaming "acceptance" to "system" is especially ok if we only 
keep the "softmmu"-related tests in that folder... would it maybe make sense 
to add the linux-user related tests in a separate folder called tests/user/ 
instead, Philippe? And we should likely rename the current build-system and 
check-system jobs in our gitlab-CI to build-softmmu and check-softmmu or so?


Alternatively, what about renaming the "acceptance" tests to "validation" 
instead? That word does not have a duplicated definition in the context of 
QEMU yet, so I think it would be less confusing.


 Thomas




Re: [RFC 1/1] acceptance tests: rename acceptance to system

2021-05-20 Thread Philippe Mathieu-Daudé
On 5/20/21 9:53 PM, Willian Rampazzo wrote:
> Conceptually speaking, acceptance tests "are a series of specific tests
> conducted by the customer in an attempt to uncover product errors before
> accepting the software from the developer. Conducted by the end-user rather
> than software engineers, acceptance testing can range from an informal
> “test drive” to a planned and systematically executed series of scripted
> tests" [1]. Every time Pressman refers to the term "acceptance testing," he
> also refers to user's agreement in the final state of an implemented feature.
> Today, QEMU is not implementing user acceptance tests as described by 
> Pressman.
> 
> There are other three possible terms we could use to describe what is 
> currently
> QEMU "acceptance" tests:
> 
>   1 - Integration tests:
>   - "Integration testing is a systematic technique for constructing the
>  software architecture while at the same time conducting tests to
>  uncover errors associated with interfacing. The objective is to take
>  unit-tested components and build a program structure that has been
>  dictated by design." [2]
>   * Note: Sommerville does not have a clear definition of integration
> testing. He refers to incremental integration of components inside
> the system testing (see [3]).
> 
>   2 - Validation tests:
>   - "Validation testing begins at the culmination of integration testing,
>  when individual components have been exercised, the software is
>  completely assembled as a package, and interfacing errors have been
>  uncovered and corrected. At the validation or system level, the
>  distinction between different software categories disappears. Testing
>  focuses on user-visible actions and user-recognizable output from the
>  system." [4]
>   - "where you expect the system to perform correctly using a set of test
>  cases that reflect the system’s expected use." [5]
>   * Note: the definition of "validation testing" from Sommerville reflects
> the same definition found around the Internet, as one of the processes
> inside the "Verification & Validation (V)." In this concept,
> validation testing is a high-level definition that covers unit 
> testing,
> functional testing, integration testing, system testing, and 
> acceptance
> testing.
> 
>   3 - System tests:
>   - "verifies that all elements mesh properly and that overall system
>  function and performance is achieved." [6]
>   - "involves integrating components to create a version of the system and
>  then testing the integrated system. System testing checks that
>  components are compatible, interact correctly, and transfer the right
>  data at the right time across their interfaces." [7]
> 
> The tests implemented inside the QEMU "acceptance" directory depend on the
> software completely assembled and, sometimes, on other elements, like 
> operating
> system images. In this case, the proposal here is to rename the current
> "acceptance" directory to "system."

Are user-mode tests using Avocado also system tests?
https://www.mail-archive.com/qemu-devel@nongnu.org/msg782505.html

> [1] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> Practitioner’s Approach. p. 430.
> [2] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> Practitioner’s Approach. Software Engineering, p. 398.
> [3] Sommerville, Ian (2016). Software Engineering. p. 240-242.
> [4] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> Practitioner’s Approach. Software Engineering, p. 407.
> [5] Sommerville, Ian (2016). Software Engineering. p. 227.
> [6] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
> Practitioner’s Approach. Software Engineering, p. 377.
> [7] Sommerville, Ian (2016). Software Engineering. p. 240.
> 
> Signed-off-by: Willian Rampazzo 
> ---

> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index f718b61fa7..c5de3c9fd5 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -52,7 +52,7 @@ include:
>  # Avoid recompiling by hiding ninja with NINJA=":"
>  - make NINJA=":" $MAKE_CHECK_ARGS
>  
> -.acceptance_template: _definition
> +.system_template: _definition

.system_test_template: _test_definition ?

> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 8f220e15d1..c580292bb5 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -16,7 +16,7 @@ ifneq ($(filter $(all-check-targets), check-softfloat),)
>   @echo " $(MAKE) check-tcgRun TCG tests"
>   @echo " $(MAKE) check-softfloat  Run FPU emulation tests"
>  endif
> - @echo " $(MAKE) check-acceptance Run all acceptance (functional) 
> tests"
> + @echo " $(MAKE) check-system Run all system tests"




[RFC 1/1] acceptance tests: rename acceptance to system

2021-05-20 Thread Willian Rampazzo
Conceptually speaking, acceptance tests "are a series of specific tests
conducted by the customer in an attempt to uncover product errors before
accepting the software from the developer. Conducted by the end-user rather
than software engineers, acceptance testing can range from an informal
“test drive” to a planned and systematically executed series of scripted
tests" [1]. Every time Pressman refers to the term "acceptance testing," he
also refers to user's agreement in the final state of an implemented feature.
Today, QEMU is not implementing user acceptance tests as described by Pressman.

There are other three possible terms we could use to describe what is currently
QEMU "acceptance" tests:

  1 - Integration tests:
  - "Integration testing is a systematic technique for constructing the
 software architecture while at the same time conducting tests to
 uncover errors associated with interfacing. The objective is to take
 unit-tested components and build a program structure that has been
 dictated by design." [2]
  * Note: Sommerville does not have a clear definition of integration
testing. He refers to incremental integration of components inside
the system testing (see [3]).

  2 - Validation tests:
  - "Validation testing begins at the culmination of integration testing,
 when individual components have been exercised, the software is
 completely assembled as a package, and interfacing errors have been
 uncovered and corrected. At the validation or system level, the
 distinction between different software categories disappears. Testing
 focuses on user-visible actions and user-recognizable output from the
 system." [4]
  - "where you expect the system to perform correctly using a set of test
 cases that reflect the system’s expected use." [5]
  * Note: the definition of "validation testing" from Sommerville reflects
the same definition found around the Internet, as one of the processes
inside the "Verification & Validation (V)." In this concept,
validation testing is a high-level definition that covers unit testing,
functional testing, integration testing, system testing, and acceptance
testing.

  3 - System tests:
  - "verifies that all elements mesh properly and that overall system
 function and performance is achieved." [6]
  - "involves integrating components to create a version of the system and
 then testing the integrated system. System testing checks that
 components are compatible, interact correctly, and transfer the right
 data at the right time across their interfaces." [7]

The tests implemented inside the QEMU "acceptance" directory depend on the
software completely assembled and, sometimes, on other elements, like operating
system images. In this case, the proposal here is to rename the current
"acceptance" directory to "system."

[1] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
Practitioner’s Approach. p. 430.
[2] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
Practitioner’s Approach. Software Engineering, p. 398.
[3] Sommerville, Ian (2016). Software Engineering. p. 240-242.
[4] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
Practitioner’s Approach. Software Engineering, p. 407.
[5] Sommerville, Ian (2016). Software Engineering. p. 227.
[6] Pressman, Roger S. & Maxim, Bruce R. (2020). Software Engineering, A
Practitioner’s Approach. Software Engineering, p. 377.
[7] Sommerville, Ian (2016). Software Engineering. p. 240.

Signed-off-by: Willian Rampazzo 
---
 .gitlab-ci.yml| 58 +--
 MAINTAINERS   | 40 ++---
 configure |  2 +-
 docs/devel/build-system.rst   |  2 +-
 docs/devel/testing.rst| 23 
 docs/system/arm/orangepi.rst  |  8 +--
 tests/Makefile.include| 14 ++---
 tests/acceptance/README.rst   | 10 
 tests/system/README.rst   | 10 
 .../avocado_qemu/__init__.py  |  2 +-
 tests/{acceptance => system}/boot_linux.py|  0
 .../boot_linux_console.py |  0
 tests/{acceptance => system}/boot_xen.py  |  0
 tests/{acceptance => system}/cpu_queries.py   |  0
 .../{acceptance => system}/empty_cpu_model.py |  0
 tests/{acceptance => system}/linux_initrd.py  |  2 +-
 .../linux_ssh_mips_malta.py   |  0
 .../machine_arm_canona1100.py |  0
 .../machine_arm_integratorcp.py   |  0
 .../machine_arm_n8x0.py   |  0
 tests/{acceptance => system}/machine_avr6.py  |  2 +-
 .../machine_m68k_nextcube.py  |  0
 .../machine_microblaze.py