Как использовать комбинации наборов как данные тестирования

Вы можете сделать с rgba color code, используя css, как этот пример, приведенный ниже.

.imgbox img{
  height:100px;
  width:200px;
  position:relative;
}
.overlay{
  background:rgba(74, 19, 61, 0.4);
  color:#fff;
  text-shadow:0px 2px 5px #000079;
  height:100px;
  width:300px;
  position:absolute;
  top:10%;
  left:25%;
  padding:25px;
}
<div class"imgbox">
<img src="http://www.bhmpics.com/wallpapers/little_pony_art-800x480.jpg">
  <div class="overlay">
    <p>This is Simple Text.</p>
  </div>
</div>

21
задан Abdulla Nilam 14 February 2017 в 17:16
поделиться

5 ответов

Абсолютно, особенно имея дело с большим количеством этих перестановок/комбинаций я могу определенно видеть, что первичная обработка была бы проблемой.

Интересная реализация в Python, хотя я записал хороший в C и Ocaml на основе "Алгоритма 515" (см. ниже). Он записал его в Фортране, поскольку это было характерно тогда для всего "Алгоритма XX" бумаг, ну, в общем, тот блок или c. Я должен был переписать его и сделать некоторые маленькие улучшения для работы с массивами не диапазонов чисел. Этот делает произвольный доступ, я все еще работаю над получением некоторых хороших реализаций тех упомянутых в Knuth 4-е издание объема 2. Я буду объяснение того, как это работает читателю. Хотя, если бы кому-то любопытно, я не возразил бы против описывания чего-то.

/** [combination c n p x]
 * get the [x]th lexicographically ordered set of [p] elements in [n]
 * output is in [c], and should be sizeof(int)*[p] */
void combination(int* c,int n,int p, int x){
    int i,r,k = 0;
    for(i=0;i<p-1;i++){
        c[i] = (i != 0) ? c[i-1] : 0;
        do {
            c[i]++;
            r = choose(n-c[i],p-(i+1));
            k = k + r;
        } while(k < x);
        k = k - r;
    }
    c[p-1] = c[p-2] + x - k;
}

~ "Алгоритм 515: Поколение Вектора от Лексикографического Индекса"; Застежки, B. P. и Lybanon, M. Транзакции ACM на Математическом программном обеспечении, Издании 3, № 2, июнь 1977.

15
ответ дан 29 November 2019 в 21:44
поделиться

С совершенно новым Python 2.6 у Вас есть стандартное решение с itertools модулем, который возвращает Декартово произведение iterables:

import itertools

print list(itertools.product([1,2,3], [4,5,6]))
   [(1, 4), (1, 5), (1, 6),
   (2, 4), (2, 5), (2, 6),
   (3, 4), (3, 5), (3, 6)]

можно обеспечить "повторный" аргумент для выполнения продукта с повторяемым и им:

print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]

можно также настроить что-то с комбинациями также:

print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]

И если порядок имеет значение, существуют перестановки:

print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
   (2, 1), (2, 3), (2, 4),
   (3, 1), (3, 2), (3, 4),
   (4, 1), (4, 2), (4, 3)]

, Конечно, весь этот интересный материал точно не делает того же самого, но можно использовать их способом или другого для решения Вас проблема.

Просто помнят, что можно преобразовать кортеж или список к набору и наоборот использующий список (), кортеж () и установить ().

4
ответ дан 29 November 2019 в 21:44
поделиться

Я думаю, что можно сделать это с Тестовый Атрибут строки (доступный в MbUnit и более поздних версиях NUnit), где Вы могли указать несколько наборов для заполнения одного модульного теста.

2
ответ дан 29 November 2019 в 21:44
поделиться

Интересный вопрос!

я сделал бы это путем выбора комбинаций, чего-то как следующее в Python. Самая твердая часть является, вероятно, проверкой первичной обработки, т.е. if f(1,2,3) returns true, который является корректным результатом? После того как Вы проверили, что, затем это - хорошая основа для регрессионного тестирования.

, Вероятно, это - хорошая идея сделать ряд тестовых сценариев, которые Вы знаете, будет все верно (например, 3,4,5 для этого треугольного случая), и ряд тестовых сценариев, которые Вы знаете, будет вся ложь (например, 0,1, inf). Затем можно более легко проверить, что тесты корректны.

# xpermutations from http://code.activestate.com/recipes/190465
from xpermutations import *

lengths=[-1,0,1,5,10,0,1000,'inf']
for c in xselections(lengths,3):        # or xuniqueselections
    print c
(-1,-1,-1);
(-1,-1,0);
(-1,-1,1);
(-1,-1,5);
(-1,-1,10);
(-1,-1,0);
(-1,-1,1000);
(-1,-1,inf);
(-1,0,-1);
(-1,0,0);
...
3
ответ дан 29 November 2019 в 21:44
поделиться

В то время как возможно создать много данных тестирования и видеть то, что происходит, более эффективно попытаться минимизировать используемые данные.

С типичной точки зрения QA, Вы хотели бы определить различные классификации исходных данных. Произведите ряд входных значений для каждой классификации и определите соответствующие выводы.

Вот образец классов входных значений

  • допустимые треугольники с небольшими числами такой как (1 миллиард, 2, миллиард, 2 миллиарда)
  • допустимые треугольники с большими количествами такой как (0.000001, 0.00002, 0.00003)
  • допустимые тупоугольные треугольники, которые являются 'almost'flat таким как (10, 10, 19.9999)
  • допустимые остроугольные треугольники, которые являются 'почти' плоскими такой как (10, 10, 0000001)
  • недопустимые треугольники по крайней мере с одной отрицательной величиной
  • недопустимые треугольники, где сумма двух сторон равняется третьему
  • недопустимые треугольники, где сумма двух сторон больше, чем третье
  • входные значения, которые являются нечисловые

...

, После того как Вы удовлетворены списком классификаций входов для этой функции, затем можно создать фактические данные тестирования. Вероятно, было бы полезно протестировать все перестановки каждого объекта. (например, (2,3,4), (2,4,3), (3,2,4), (3,4,2), (4,2,3), (4,3,2)) Как правило, Вы найдете, что существуют некоторые классификации, которые Вы пропустили (такие как понятие inf как входной параметр).

Случайные данные в течение некоторого промежутка времени могут быть полезными также, который может найти странные ошибки в коде, но обычно не продуктивен.

Более вероятно, эта функция используется в некотором определенном контексте, где дополнительные правила применяются. (например, только целочисленные значения или значения должны быть в 0,01 инкрементах, и т.д.), они добавляют к списку классификаций входных параметров.

0
ответ дан 29 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: