We construct pseudorandom generators with improved seed length for several classes of tests. First, we consider the class of read-once polynomials over GF(2) in m variables. For error ε we obtain seed lengthÕ(log(m/ε) log(1/ε)). This is optimal up to a factor of log(1/ε) • poly log log(m/ε). The previous best seed length was polylogarithmic in m and 1/ε. Second, we consider product tests f : {0, 1} m → C ≤1. These tests are the product of k functions f i : {0, 1} → C ≤1 , where the inputs of the f i are disjoint subsets of the m variables and C ≤1 is the complex unit disk. Here we obtain seed length • polylog(m/ε). This implies better generators for other classes of tests. If moreover the f i have output range {−1, 0, 1} then we obtain seed lengthÕ((log(k/ε) +)(log(1/ε) + log log m)). This is again optimal up to a factor of log(1/ε) • polylog(, log k, log m, log(1/ε)), while the previous best seed length was ≥ √ k. A main component of our proofs is showing that these classes of tests are fooled by almost d-wise independent distributions perturbed with noise.