Jakie są urządzenia w programowaniu?

191

Słyszałem o tym terminie wiele razy (w kontekście programowania), ale nie mogłem znaleźć żadnego wyjaśnienia, co to znaczy. Jakieś dobre artykuły lub wyjaśnienia?

Matjaz Muhic
źródło

Odpowiedzi:

195

Myślę, że masz na myśli testy urządzeń :

Celem urządzenia testowego jest zapewnienie dobrze znanego i ustalonego środowiska, w którym przeprowadzane są testy, aby wyniki były powtarzalne. Niektórzy nazywają to kontekstem testowym.

Przykłady urządzeń:

  • Ładowanie bazy danych z określonym, znanym zestawem danych
  • Kasowanie dysku twardego i instalowanie znanej czystej instalacji systemu operacyjnego
  • Kopiowanie określonego znanego zestawu plików
  • Przygotowanie danych wejściowych i konfiguracja / tworzenie fałszywych lub próbnych obiektów

(źródło: wikipedia, patrz link powyżej)

Oto także kilka praktycznych przykładów z dokumentacji frameworku „Google Test” .

m01
źródło
13

Myślę, że testy jednostek PHP bardzo dobrze wyjaśniają to:

Jedną z najbardziej czasochłonnych części pisania testów jest pisanie kodu, aby ustawić świat w znanym stanie, a następnie przywrócić go do pierwotnego stanu po zakończeniu testu. Ten znany stan nazywa się ustaleniem testu.

Również dokumenty Yii opisują test urządzeń w dobrym stanie:

Zautomatyzowane testy muszą być wykonywane wiele razy. Aby zapewnić powtarzalność procesu testowania, chcielibyśmy przeprowadzić testy w znanym stanie zwanym fixture. Na przykład, aby przetestować funkcję tworzenia postów w aplikacji blogowej, za każdym razem, gdy uruchamiamy testy, tabele przechowujące odpowiednie dane dotyczące postów (np. Tabela wpisów, tabela komentarzy) powinny zostać przywrócone do pewnego ustalonego stanu.

Oto prosty przykład testu urządzeń

<?php
use PHPUnit\Framework\TestCase;

class StackTest extends TestCase
{
    protected $stack;

    protected function setUp()
    {
        $this->stack = [];
    }

    protected function tearDown()
    {
        $this->stack = [];
    }

    public function testEmpty()
    {
        $this->assertTrue(empty($this->stack));
    }

    public function testPush()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', $this->stack[count($this->stack)-1]);
        $this->assertFalse(empty($this->stack));
    }

    public function testPop()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', array_pop($this->stack));
        $this->assertTrue(empty($this->stack));
    }
}
?>

Ten test jednostkowy PHP ma funkcje z nazwami setUpi tearDownprzed uruchomieniem testu konfigurujesz swoje dane, a po zakończeniu możesz przywrócić je do stanu początkowego.

Ebrahim Poursadeqi
źródło
7

Termin urządzenie różni się w zależności od kontekstu, języka programowania lub struktury.

1. Znany stan, w stosunku do którego przeprowadzany jest test

Jedną z najbardziej czasochłonnych części pisania testów jest pisanie kodu, aby ustawić świat w znanym stanie, a następnie przywrócić go do pierwotnego stanu po zakończeniu testu. Ten znany stan nazywa się ustaleniem testu. Dokumentacja PHP-Unit

Urządzenie testowe (znane również jako kontekst testowy) to zestaw warunków wstępnych lub stanu potrzebnego do uruchomienia testu. Deweloper powinien skonfigurować znany dobry stan przed testami i powrócić do pierwotnego stanu po testach. Wikipedia (xUnit)

2. Plik zawierający przykładowe dane

Fixtures to fantazyjne słowo na przykładowe dane. Urządzenia umożliwiają wypełnienie testowej bazy danych predefiniowanymi danymi przed uruchomieniem testów. Urządzenia są niezależne od bazy danych i napisane w YAML. Istnieje jeden plik na model. RubyOnRails.org

3. Proces, który ustanawia wymagany stan. 

Oprogramowanie testowe konfiguruje system dla procesu testowania, dostarczając mu cały kod niezbędny do jego zainicjowania, spełniając tym samym wszelkie możliwe warunki wstępne. Przykładem może być załadowanie bazy danych ze znanymi parametrami z witryny klienta przed uruchomieniem testu. Wikipedia

faboulaws
źródło
5

Właśnie w tym temacie JUnit ma dobrze wyjaśniony dokument. Oto link!

Powiązana część tego artykułu to:

Testy muszą być uruchamiane na tle znanego zestawu obiektów. Ten zestaw obiektów nazywa się urządzeniem testowym. Podczas pisania testów często zdarza się, że spędzasz więcej czasu na pisaniu kodu, aby skonfigurować urządzenie, niż podczas testowania wartości.

W pewnym stopniu możesz ułatwić pisanie kodu urządzenia, zwracając szczególną uwagę na pisane konstruktory. Jednak znacznie większe oszczędności wynikają z udostępniania kodu urządzenia. Często będziesz mógł użyć tego samego urządzenia do kilku różnych testów. Każda skrzynka wyśle ​​nieco inne wiadomości lub parametry do urządzenia i sprawdzi inne wyniki.

Kiedy masz wspólne urządzenie, oto co robisz:

Dodaj pole dla każdej części urządzenia Adnotuj metodę za pomocą @ org.junit. Przed i zainicjuj zmienne w tej metodzie Adnotuj metodę za pomocą @ org.junit. Po zwolnieniu wszelkich stałych zasobów przydzielonych w setUp Na przykład, aby napisać kilka przypadków testowych, które chcą pracować z różnymi kombinacjami 12 franków szwajcarskich, 14 franków szwajcarskich i 28 dolarów amerykańskich, najpierw tworzy urządzenie:

public class MoneyTest {
    private Money f12CHF;
    private Money f14CHF;
    private Money f28USD;

    @Before public void setUp() {
    f12CHF= new Money(12, "CHF");
    f14CHF= new Money(14, "CHF");
    f28USD= new Money(28, "USD");
    }
}
Reizz
źródło
2

W Xamarin.UITest jest to wyjaśnione w następujący sposób:

Zazwyczaj każdy Xamarin.UITest jest zapisywany jako metoda nazywana testem. Klasa zawierająca test jest znana jako urządzenie testowe. Urządzenie testowe zawiera pojedynczy test lub logiczną grupę testów i jest odpowiedzialne za każdą konfigurację umożliwiającą uruchomienie testu i wszelkie czyszczenie, które należy wykonać po zakończeniu testu. Każdy test powinien być zgodny ze wzorem Arrange-Act-Assert:

  • Rozmieść - Test skonfiguruje warunki i zainicjuje rzeczy, aby można było wykonać test.
  • Akt - test będzie wchodził w interakcję z aplikacją, wprowadzał tekst, naciskał przyciski itd.
  • Potwierdź - test sprawdza wyniki działań wykonanych w kroku Aktu w celu ustalenia poprawności. Na przykład aplikacja może sprawdzić, czy wyświetlany jest konkretny komunikat o błędzie.

Link do oryginalnego artykułu powyższego fragmentu

W kodzie Xamarin.UITest wygląda to następująco:

using System;
using System.IO;
using System.Linq;
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Queries;

namespace xamarin_stembureau_poc_tests
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class TestLaunchScreen
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }

        [Test]
        public void AppLaunches()
        {
            app.Screenshot("First screen.");
        }

        [Test]
        public void LaunchScreenAnimationWorks()
        {
            app.Screenshot("Launch screen animation works.");
        }
    }
}

Mam nadzieję, że może to być pomocne dla kogoś, kto szuka lepszego zrozumienia Urządzeń w Programowaniu.

Randika Vishman
źródło