how to find the balls? You have 15 balls, 2 of them are radioactive. You have to run 7 tests (no more) on the balls which will sort out the 2 radioactive ones guarenteed every time. You can test them in groups, or even one by one. 
A "test" comprises of taking a subset of the balls and checking if this subset contains a radioactive ball (one or more) or not. The test does not determine the number of radioactive balls in the tested subset.
 A: Here's a generalization.  Let $n(t)$ denote the maximum number of balls for which 2 radioactive ones can be identified in $t$ tests.  miracle173 has effectively shown that $n(4) = 5$, $n(5) = 7$, $n(6) = 10$, and $n(7) \geq 15$.  
In "Group testing with two and three defectives" (Annals of the New York Academy of Sciences 576, pp. 86-96, 1989) Chang, Hwang, and Weng give explicit testing procedures showing that $n(8) = 22$, $n(9) = 31$, $n(10) = 44$, and $n(11) = 63$.  They also give explicit testing procedures that yield the lower bounds $$n(t) \geq 89 \cdot 2^{\frac{t}{2}-6}, t \text{ even, }  t \geq 12;$$
$$n(t) \geq 63 \cdot 2^{\frac{t-1}{2}-5}, t \text{ odd, } t \geq 13.$$  
(They take it as known that $n(7) = 15$.  See also Chang, Hwang, and Lin, "Group testing with two defectives," Discrete Applied Mathematics 4 (2), pp. 97-102, 1982.) 
In Combinatorial Group Testing and Its Applications, by Du and Hwang, it is shown that, for $t \geq 4$, we have the upper bound $$n(t) \leq 2^{\frac{t+1}{2}} - 1/2.$$
The upper and lower bounds imply, for example, that $n(12)$ is either 89 or 90.
This problem goes by the name "adaptive combinatorial group testing with two defectives."  The Du and Hwang text appears to be the standard reference for these types of problems.
A: Having two target objects actually makes this problem considerably more difficult. There are ${15 \choose 2} = 105$ possible results, and with 7 binary tests you can only distinguish among a total of 128 possibilities. So you don't have a lot of room for error; you pretty much have to cut the solution space in half with each test.
That said, I think the best algorithm starts by testing objects 12 through 15. If this test gives "no", then you know both target objects are in the remaining 11 objects (55 possibilities). Otherwise, at least one of the targets is in these four (50 possibilities). After that it gets a lot more complicated, but basically, each time try to make a test that splits the remaining possible results as exactly in half as possible. For example, if you've narrowed down to 11 objects, test objects 9-11 (28 no vs. 27 yes). If at least one of 12-15 is radioactive, test 8-12 (24 no vs. 26 yes).
I can't think of a simple way to explain the complete algorithm, like the balanced-ternary representation for the traditional weighing problem. But continuing in this pattern should give you the answer.
A: I don't believe it can be done, but my proof is not complete.  As Paul Z says, it looks right to test 12, 13,14, 15 first as you split the possibilities as evenly as possible-50/55.  If the first test finds radioactivity you can succeed.  Now test 5, 6, 7, 8, 9, 10, 11.  If you again find radioactivity, you can do binary searches of 4 and 7 with 5 tests.  If you don't, test 1, 2, 3, 4.  If you find radioactivity you can do binary searches of 4 and 4 with 4 tests.  If you don't, you have 4 tests to find 2 among 12, 13, 14, 15 and can just go one by one.
If the first test fails, you have 55 possibilities and 6 tests left.  You now have to test 9, 10, 11, leaving 28 possibilities if the test fails and 27 if it finds radioactivity.  Testing 10, 11 leaves 36 if it fails and testing 8, 9, 10, 11 leaves 34 if it succeeds, in both cases greater than 2^5=32.  Focusing on the case the test of 9, 10, 11 fails you have to test 7,8 by similar logic.  Again in the failure case there are 15 possibilities.  If you test only 6 and fail there are 10 possibilities and if you test 5,6 and succeed there are 9.  In either case 3 more tests are not enough.
The hole is to prove you cannot succeed by testing 11, 12, 13, 14, 15.  If the test succeeds you have 60 possibilities, so it seems unlikely you can get there, but I haven't done the specifics.
Added:  some more progress.  If you test 11,12,13,14,15 and get yes it seems natural to test 5,6,7,8,9,10 next as that splits the 60 possibilities evenly.  If you get yes again you are set.  Test 5,6,11.  If no, you have two groups of 4 and 4 guesses.  If yes, test 11.  If yes you have a group of 6 and 3 guesses.  If no, you have 4+2 and 3 guesses.  But if you get no on the test of 5,6,7,8,9,10 it seems natural to test 2,3,4 as that will give you 15 possibilities either way.  But a no leaves you with finding 2 out of 6 with 4 guesses and there is no set to test that makes a split of 7/8 possibilities.  There may be some better strategy.
If you test 11,12,13,14,15 and get no you are set.  Test 8,9,10.  If yes, there are 24 possibilities.  Test 4,5,6,7.  A yes gives you 3+4 with 4 tests left.  If no, test 2,3.  A yes gives you 2+3 with 3 tests.  A no gives you 4 balls with 2 to find and 3 tests.  Just test 3 individually.  If 8,9,10 gives no, test 6,7.  A no gives 5 balls to find 2 in 4 tests-just do 4 individually.  If yes test 3,4,5.  Yes gives 2+3 in 3 tests.  No gives 4 balls with 2 to find with 3 tests.
A: This is similar to https://mathoverflow.net/questions/59939/identifying-poisoned-wines
It's not the same, but maybe close enough to derive some inspiration. 
As noted at MO, it was here first: Logic problem: Identifying poisoned wines out of a sample, minimizing test subjects with constraints
A: Some extra thoughts:
By sampling of balls, I mean a vector in $\mathbb F_2^{15}$. A test is a function $T: \mathbb F_2^{15} \to \mathbb F_2$, which is a polynomial that takes in a sample and returns if its radioactive or not. Now, if a solution to the puzzle exists, then by just evaluating $T$ at 7 points in $\mathbb F_2^{15}$, I am able to reconstruct the whole polynomial. So the kinds of polynomials that are allowed must be special and also connected to the fact that two of the balls are radioactive. Now, after a bit more thinking, I am stuck. Can anyone help me with this line of thought?   

Just saw the other answer. So is mine wrong? In the sense, I don't know what binary testing etc. is or anything about algorithms.
There are 15 balls. Pair them in all possible ways. There are 105 possible choice of pairings. Label each such pairing with a binary number. There will be 7 places required. Test all those pairs which have 1 in the unit place and so on so forth for all the 7 places. We'll get a unique number at the end.  
A: Perhaps the analogy with the binary case (with only one radioactive ball) is restricting ourselves to consider a schema on non intersecting sets for each test. I'm not sure if that is optimal.
Consider for example this (unsuccessful) try: 
Form 3 sets of 6 balls (A,B,C), with 1 pair interesection and empty triple intersection. (Venn diagram here). Test the 3 sets.
1) If all three return positive, at least one intersection must be radioactive. Test AB .
1A)  If positive, we must find the remaining positive in C (we can do it in 3 tests).
1B) If negative, we seek in BC and, acorrding to the result in A or B (ok)
2) If one return negative, we have to find two balls, one in each of the remaining sets (with 5 elements, 1 intersected). I think this last step cannot be done, but I'm not sure.
A: Here is one solution :
1st measurement - ball N1 , N2 , N3 , N4 , N5    - 4+1 balls
2nd measurement - ball N1 , N6 , N7 , N8 , N9    - 4+1 balls
possible results :

Variant 1:


*

*1st measurement - negative

*2nd measurement - negative
From this follow that the 2 radioactive are between the remaining 6(N10,11,12,13,14,15). We have 5 measurements to find 2 out of 6. We can split them on groups by 2 and we can measure each group...

Variant 2 : 


*

*1st measurement - positive

*2nd measurement - negative


We are splitting remaining 6 in group of 4 and 2. And we are measuring them. Please note that we are measuring first the four group. If we get positive. We are splitting the group  on 2 and we are measuring one of the groups, so we can get in which group of 2 , has radioactive ball.


*

*Variant 2.1


*

*3rd measurement - negative

*4th measurement - negative


From this follow that the 2 radioactive balls are in the first positive measurement group and we have 3 measurements left to find 2 balls out of 4...so it is easy

*Variant 2.2


*

*3rd measurement - positive

*4th measurement - negative


We are doing 1 more measurement to find which one is the radioactive of the remaining 2.
And we have 2 measurements left to find 1 ball out of 4 in first measurement group.

Variant 3 : 


*

*1st measurement - positive

*2nd measurement - positive


We are doing 3rd measurement ball N1 + rest -> ball N1 , N10 , N11 , N12 , N13 , N14, N15    - 6+1 balls


*

*Variant 3.1


*

*3rd measurement is positive
From this follow that ball N1 is radioactive. And we have 4 measurements left to find 1 radioactive ball out of remaining 14 balls. We are doing first 8 balls. If they are positive we are going 4/2/1 . If negative we are doing remaining 6. By first measuring 4... then 2 .. 1


*Variant 3.2


*

*3rd measurement is negative.
From this follow that we have one ball in first measurement group(4 balls/We know that N1 is not radioactive) and one ball in second group(also 4 balls). 
So we have 4 measurements left. 2 measurements left for first group and 2 for the second group. 4/2/1

It messed up the formating... but just follow the points and the logic...
A: IMHO, there is an easy way to explain this puzzle. Name the balls as: a,b,c, .., m,n,o. Split them into 4 groups, with 'a' being in both A&B.
    A=(a,b,c,d,e) B=(a,f,g,h,i) C=(j,k,l,m) D=(n,o)


Test A. Test B.

If both r neg, finish C,D in 5 more tests (Total=7)
If both r pos, test 'a'+C+D

If 'a'+C+D is pos, 'a' is 1st poison. Find the 2nd in (b-e,f-i,C+D) in 4 more tests (T=7)
If 'a'+C+D is neg, find 1st poison in (b-e), 2nd poison in (f-i) in 4 more tests (T=7)
If only A is pos, test C

If C is pos, find 1st poison in (b-e), 2nd poison in C in 4 more tests (T=7)
If C is neg, test D

If D is pos, find 1st poison in (b-e), 2nd poison in D in 3 more tests (T=7)
If D is neg, find 2 poisons in (b-e) in 3 more tests (T=7)






A: Here is a python program along the same lines @miracle173 specified. 
It is generic and can handle any number of balls and any number of radioactive balls, and it outputs a nice decision tree.
Its 2 main optimizations are failing fast by taking the harder path first (the one with more possibilities), and permuting only on balls touched by previous selections, as the untouched balls are all symmetrical and we can simply pick the leftmost X.
It takes 20min on my machine for it to solve (15,7)
import itertools

def bin_to_str(m):
    return ("{0:0" + str(NUM_BALLS) + "b}").format(m)
def str_to_bin(n):
    return int(n,2)

def generate_all_possibilities(num_total, num_radio):
    ''' all possible permutations with specified length and number of radioacvite ''' 
    for indices in itertools.combinations(range(num_total), num_radio):
        item = ['0'] * (num_total)
        for index in indices:
            item[index] = '1'
        yield str_to_bin(''.join(item))

def do_the_radio(my_possibilities, my_attempts, touched):
    ''' find radioactive balls out of all my_possibilities, with specified my_attempts
        touched is a xor bitmask of previous selections'''
    if len(my_possibilities) == 0 or 2**my_attempts < len(my_possibilities): return [] # fail fast
    if len(my_possibilities) == 1:
        return "done"
    for selection in do_selection(touched):
        pos = [[],[]]
        res = [[],[]]
        for possibility in my_possibilities:
            if selection & possibility : pos[0].append(possibility) # beep
            else: pos[1].append(possibility) # no beep
        new_touched = touched ^ selection # xor all past selections to know which were touched 
        if len(pos[0]) > len(pos[1]): # fail fast by taking the hard path first
            hard_path, easy_path = 0, 1
        else: hard_path, easy_path = 1, 0
        res[hard_path] = do_the_radio(pos[hard_path], my_attempts - 1, new_touched)
        if len(res[hard_path]) > 0: 
            res[easy_path] = do_the_radio(pos[easy_path], my_attempts - 1, new_touched)
            if len(res[easy_path]) > 0:
                return [bin_to_str(selection), {'beep': res[0], 'no': res[1]}]
    return []

def do_selection(touched):
    ''' touched is a xor bitmask, with ones for balls that were touched by any previous selection.
    permute only on these touched balls, for the rest dont bother, just take leftmost 1..size(u)  '''
    t = [i for i, x in enumerate(bin_to_str(touched)) if x == "1"]
    u = [i for i, x in enumerate(bin_to_str(touched)) if x == "0"]
    for size_from_touched in range(len(t))+[0]:
        for indices in itertools.combinations(t, size_from_touched):
            item = ['0'] * NUM_BALLS
            for t_index in indices:
                item[t_index] = '1'
            for u_index in u:
                yield str_to_bin(''.join(item))
                item[u_index] = '1'

NUM_BALLS = 7
NUM_RADIO = 2
ATTEMPTS = 5

balls = list(generate_all_possibilities(NUM_BALLS, NUM_RADIO))
res = do_the_radio(balls, ATTEMPTS, 0)
print res 

